[Libreoffice-commits] core.git: Branch 'feature/vclref' - 2 commits - vcl/inc vcl/qa vcl/source

Michael Meeks michael.meeks at collabora.com
Thu Mar 19 06:51:51 PDT 2015


 vcl/inc/svdata.hxx        |    2 ++
 vcl/qa/cppunit/outdev.cxx |   26 +++++++++++++-------------
 vcl/source/app/svdata.cxx |    8 ++++++++
 3 files changed, 23 insertions(+), 13 deletions(-)

New commits:
commit 3af9a3aba0d2148e1e0ad93c16e198af05730edc
Author: Michael Meeks <michael.meeks at collabora.com>
Date:   Thu Mar 19 13:56:13 2015 +0000

    ImplSVGDIData didn't dispose its contents previously; clobber it for now.
    
    Change-Id: I71c877773cbdabe10f617d1d3d7141ebd6d93923

diff --git a/vcl/inc/svdata.hxx b/vcl/inc/svdata.hxx
index a8bbd58..cdba5cd 100644
--- a/vcl/inc/svdata.hxx
+++ b/vcl/inc/svdata.hxx
@@ -152,6 +152,8 @@ struct ImplSVAppData
 
 struct ImplSVGDIData
 {
+    ~ImplSVGDIData();
+
     VclPtr<OutputDevice>    mpFirstWinGraphics;             // First OutputDevice with a Frame Graphics
     VclPtr<OutputDevice>    mpLastWinGraphics;              // Last OutputDevice with a Frame Graphics
     VclPtr<OutputDevice>    mpFirstVirGraphics;             // First OutputDevice with a VirtualDevice Graphics
diff --git a/vcl/source/app/svdata.cxx b/vcl/source/app/svdata.cxx
index 4459fad..213f13d 100644
--- a/vcl/source/app/svdata.cxx
+++ b/vcl/source/app/svdata.cxx
@@ -88,6 +88,14 @@ ImplSVData::ImplSVData()
     maNWFData.maMenuBarHighlightTextColor = Color( COL_TRANSPARENT );
 }
 
+ImplSVGDIData::~ImplSVGDIData()
+{
+    // FIXME: deliberately leak any remaining OutputDevice
+    // until we have their pGraphics reference counted, doing
+    // any disposes so late in shutdown is rather unsafe.
+    memset( this, 0, sizeof( ImplSVGDIData ) );
+}
+
 void ImplDeInitSVData()
 {
     ImplSVData* pSVData = ImplGetSVData();
commit 01cd8cbebeba7221123ad01b29bc7b3d3a378c59
Author: Michael Meeks <michael.meeks at collabora.com>
Date:   Thu Mar 19 13:56:03 2015 +0000

    fix VirtualDevice unit test.
    
    Change-Id: I7a1f95ae1d8577114634c62aa89d3c7e1fde62c1

diff --git a/vcl/qa/cppunit/outdev.cxx b/vcl/qa/cppunit/outdev.cxx
index 63d88b8..8377a19 100644
--- a/vcl/qa/cppunit/outdev.cxx
+++ b/vcl/qa/cppunit/outdev.cxx
@@ -32,17 +32,17 @@ public:
 
 void VclOutdevTest::testVirtualDevice()
 {
-    VirtualDevice aVDev;
-    aVDev.SetOutputSizePixel(Size(32,32));
-    aVDev.SetBackground(Wallpaper(COL_WHITE));
-    aVDev.Erase();
-    aVDev.DrawPixel(Point(1,2),COL_BLUE);
-    aVDev.DrawPixel(Point(31,30),COL_RED);
-
-    Size aSize = aVDev.GetOutputSizePixel();
+    ScopedVclPtr<VirtualDevice> pVDev( new VirtualDevice() );
+    pVDev->SetOutputSizePixel(Size(32,32));
+    pVDev->SetBackground(Wallpaper(COL_WHITE));
+    pVDev->Erase();
+    pVDev->DrawPixel(Point(1,2),COL_BLUE);
+    pVDev->DrawPixel(Point(31,30),COL_RED);
+
+    Size aSize = pVDev->GetOutputSizePixel();
     CPPUNIT_ASSERT(aSize == Size(32,32));
 
-    Bitmap aBmp = aVDev.GetBitmap(Point(),aSize);
+    Bitmap aBmp = pVDev->GetBitmap(Point(),aSize);
 
 #if 0
     OUString rFileName("/tmp/foo-unx.png");
@@ -56,12 +56,12 @@ void VclOutdevTest::testVirtualDevice()
     }
 #endif
 
-    CPPUNIT_ASSERT_EQUAL(COL_WHITE, aVDev.GetPixel(Point(0,0)).GetColor());
+    CPPUNIT_ASSERT_EQUAL(COL_WHITE, pVDev->GetPixel(Point(0,0)).GetColor());
 #if defined LINUX //TODO: various failures on Mac and Windows tinderboxes
-    CPPUNIT_ASSERT_EQUAL(COL_BLUE, aVDev.GetPixel(Point(1,2)).GetColor());
-    CPPUNIT_ASSERT_EQUAL(COL_RED, aVDev.GetPixel(Point(31,30)).GetColor());
+    CPPUNIT_ASSERT_EQUAL(COL_BLUE, pVDev->GetPixel(Point(1,2)).GetColor());
+    CPPUNIT_ASSERT_EQUAL(COL_RED, pVDev->GetPixel(Point(31,30)).GetColor());
 #endif
-    CPPUNIT_ASSERT_EQUAL(COL_WHITE, aVDev.GetPixel(Point(30,31)).GetColor());
+    CPPUNIT_ASSERT_EQUAL(COL_WHITE, pVDev->GetPixel(Point(30,31)).GetColor());
 
     // Gotcha: y and x swap for BitmapReadAccess: deep joy.
     Bitmap::ScopedReadAccess pAcc(aBmp);


More information about the Libreoffice-commits mailing list