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.me...@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.me...@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); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits