[Libreoffice-commits] core.git: include/vcl vcl/inc vcl/source vcl/win

Noel Grandin noel.grandin at collabora.co.uk
Tue Apr 24 12:51:32 UTC 2018


 include/vcl/outdev.hxx                     |    8 ++--
 vcl/inc/PhysicalFontCollection.hxx         |    4 +-
 vcl/source/font/PhysicalFontCollection.cxx |    8 ++--
 vcl/source/gdi/print.cxx                   |   49 ++++-------------------------
 vcl/source/gdi/virdev.cxx                  |   12 +------
 vcl/source/outdev/font.cxx                 |   18 ++--------
 vcl/source/outdev/outdev.cxx               |   18 +++-------
 vcl/source/outdev/outdevstate.cxx          |   13 +------
 vcl/win/gdi/salfont.cxx                    |    4 --
 9 files changed, 33 insertions(+), 101 deletions(-)

New commits:
commit baa91c67d6fb7f84f94795e6e3727cd0b5b23061
Author: Noel Grandin <noel.grandin at collabora.co.uk>
Date:   Mon Apr 23 10:27:40 2018 +0200

    loplugin:useuniqueptr in OutputDevice
    
    Change-Id: I6f933b54c11a4939870c3a788a4928f2d6f12850
    Reviewed-on: https://gerrit.libreoffice.org/53349
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>

diff --git a/include/vcl/outdev.hxx b/include/vcl/outdev.hxx
index 8a2d63b44176..bd4af96456aa 100644
--- a/include/vcl/outdev.hxx
+++ b/include/vcl/outdev.hxx
@@ -333,10 +333,10 @@ private:
     mutable LogicalFontInstance*    mpFontInstance;
     mutable ImplFontCache*          mpFontCache;
     mutable PhysicalFontCollection* mpFontCollection;
-    mutable ImplDeviceFontList*     mpDeviceFontList;
-    mutable ImplDeviceFontSizeList* mpDeviceFontSizeList;
-    OutDevStateStack*               mpOutDevStateStack;
-    ImplOutDevData*                 mpOutDevData;
+    mutable std::unique_ptr<ImplDeviceFontList>     mpDeviceFontList;
+    mutable std::unique_ptr<ImplDeviceFontSizeList> mpDeviceFontSizeList;
+    std::unique_ptr<OutDevStateStack>               mpOutDevStateStack;
+    std::unique_ptr<ImplOutDevData>                 mpOutDevData;
     std::vector< VCLXGraphics* >*   mpUnoGraphicsList;
     vcl::PDFWriterImpl*             mpPDFWriter;
     vcl::ExtOutDevData*             mpExtOutDevData;
diff --git a/vcl/inc/PhysicalFontCollection.hxx b/vcl/inc/PhysicalFontCollection.hxx
index 2c32408ce158..1d5dbb908039 100644
--- a/vcl/inc/PhysicalFontCollection.hxx
+++ b/vcl/inc/PhysicalFontCollection.hxx
@@ -63,8 +63,8 @@ public:
 
     // misc utilities
     PhysicalFontCollection* Clone() const;
-    ImplDeviceFontList*     GetDeviceFontList() const;
-    ImplDeviceFontSizeList* GetDeviceFontSizeList( const OUString& rFontName ) const;
+    std::unique_ptr<ImplDeviceFontList> GetDeviceFontList() const;
+    std::unique_ptr<ImplDeviceFontSizeList> GetDeviceFontSizeList( const OUString& rFontName ) const;
 
 private:
     mutable bool            mbMatchData;    // true if matching attributes are initialized
diff --git a/vcl/source/font/PhysicalFontCollection.cxx b/vcl/source/font/PhysicalFontCollection.cxx
index 6f19f8c437b1..848fbdf06122 100644
--- a/vcl/source/font/PhysicalFontCollection.cxx
+++ b/vcl/source/font/PhysicalFontCollection.cxx
@@ -894,9 +894,9 @@ PhysicalFontCollection* PhysicalFontCollection::Clone() const
     return pClonedCollection;
 }
 
-ImplDeviceFontList* PhysicalFontCollection::GetDeviceFontList() const
+std::unique_ptr<ImplDeviceFontList> PhysicalFontCollection::GetDeviceFontList() const
 {
-    ImplDeviceFontList* pDeviceFontList = new ImplDeviceFontList;
+    std::unique_ptr<ImplDeviceFontList> pDeviceFontList(new ImplDeviceFontList);
 
     for (auto const& family : maPhysicalFontFamilies)
     {
@@ -907,9 +907,9 @@ ImplDeviceFontList* PhysicalFontCollection::GetDeviceFontList() const
     return pDeviceFontList;
 }
 
-ImplDeviceFontSizeList* PhysicalFontCollection::GetDeviceFontSizeList( const OUString& rFontName ) const
+std::unique_ptr<ImplDeviceFontSizeList> PhysicalFontCollection::GetDeviceFontSizeList( const OUString& rFontName ) const
 {
-    ImplDeviceFontSizeList* pDeviceFontSizeList = new ImplDeviceFontSizeList;
+    std::unique_ptr<ImplDeviceFontSizeList> pDeviceFontSizeList(new ImplDeviceFontSizeList);
 
     PhysicalFontFamily* pFontFamily = FindFontFamily( rFontName );
     if( pFontFamily != nullptr )
diff --git a/vcl/source/gdi/print.cxx b/vcl/source/gdi/print.cxx
index fa43dedea7a4..f5780ea2680f 100644
--- a/vcl/source/gdi/print.cxx
+++ b/vcl/source/gdi/print.cxx
@@ -586,17 +586,8 @@ void Printer::ImplReleaseFonts()
         mpFontInstance = nullptr;
     }
 
-    if ( mpDeviceFontList )
-    {
-        delete mpDeviceFontList;
-        mpDeviceFontList = nullptr;
-    }
-
-    if ( mpDeviceFontSizeList )
-    {
-        delete mpDeviceFontSizeList;
-        mpDeviceFontSizeList = nullptr;
-    }
+    mpDeviceFontList.reset();
+    mpDeviceFontSizeList.reset();
 }
 
 void Printer::ReleaseGraphics( bool bRelease )
@@ -960,16 +951,8 @@ void Printer::dispose()
             mpFontInstance->Release();
             mpFontInstance = nullptr;
         }
-        if ( mpDeviceFontList )
-        {
-            delete mpDeviceFontList;
-            mpDeviceFontList = nullptr;
-        }
-        if ( mpDeviceFontSizeList )
-        {
-            delete mpDeviceFontSizeList;
-            mpDeviceFontSizeList = nullptr;
-        }
+        mpDeviceFontList.reset();
+        mpDeviceFontSizeList.reset();
         delete mpFontCache;
         mpFontCache = nullptr;
         // font list deleted by OutputDevice dtor
@@ -1109,16 +1092,8 @@ bool Printer::SetPrinterProps( const Printer* pPrinter )
                 mpFontInstance->Release();
                 mpFontInstance = nullptr;
             }
-            if ( mpDeviceFontList )
-            {
-                delete mpDeviceFontList;
-                mpDeviceFontList = nullptr;
-            }
-            if ( mpDeviceFontSizeList )
-            {
-                delete mpDeviceFontSizeList;
-                mpDeviceFontSizeList = nullptr;
-            }
+            mpDeviceFontList.reset();
+            mpDeviceFontSizeList.reset();
             // clean up font list
             delete mpFontCache;
             delete mpFontCollection;
@@ -1152,16 +1127,8 @@ bool Printer::SetPrinterProps( const Printer* pPrinter )
                 mpFontInstance->Release();
                 mpFontInstance = nullptr;
             }
-            if ( mpDeviceFontList )
-            {
-                delete mpDeviceFontList;
-                mpDeviceFontList = nullptr;
-            }
-            if ( mpDeviceFontSizeList )
-            {
-                delete mpDeviceFontSizeList;
-                mpDeviceFontSizeList = nullptr;
-            }
+            mpDeviceFontList.reset();
+            mpDeviceFontSizeList.reset();
             delete mpFontCache;
             delete mpFontCollection;
             mpFontCache = nullptr;
diff --git a/vcl/source/gdi/virdev.cxx b/vcl/source/gdi/virdev.cxx
index bcd5541dcd7e..9ab205f983c9 100644
--- a/vcl/source/gdi/virdev.cxx
+++ b/vcl/source/gdi/virdev.cxx
@@ -498,16 +498,8 @@ void VirtualDevice::ImplSetReferenceDevice( RefDevMode i_eRefDevMode, sal_Int32
         mpFontInstance->Release();
         mpFontInstance = nullptr;
     }
-    if ( mpDeviceFontList )
-    {
-        delete mpDeviceFontList;
-        mpDeviceFontList = nullptr;
-    }
-    if ( mpDeviceFontSizeList )
-    {
-        delete mpDeviceFontSizeList;
-        mpDeviceFontSizeList = nullptr;
-    }
+    mpDeviceFontList.reset();
+    mpDeviceFontSizeList.reset();
 
     // preserve global font lists
     ImplSVData* pSVData = ImplGetSVData();
diff --git a/vcl/source/outdev/font.cxx b/vcl/source/outdev/font.cxx
index bd112469404d..94308054b03c 100644
--- a/vcl/source/outdev/font.cxx
+++ b/vcl/source/outdev/font.cxx
@@ -75,9 +75,7 @@ int OutputDevice::GetDevFontCount() const
 
         if (!mpDeviceFontList->Count())
         {
-            delete mpDeviceFontList;
-            mpDeviceFontList = nullptr;
-
+            mpDeviceFontList.reset();
             return 0;
         }
     }
@@ -92,7 +90,7 @@ bool OutputDevice::IsFontAvailable( const OUString& rFontName ) const
 
 int OutputDevice::GetDevFontSizeCount( const vcl::Font& rFont ) const
 {
-    delete mpDeviceFontSizeList;
+    mpDeviceFontSizeList.reset();
 
     ImplInitFontList();
     mpDeviceFontSizeList = mpFontCollection->GetDeviceFontSizeList( rFont.GetFamilyName() );
@@ -488,16 +486,8 @@ void OutputDevice::ImplClearFontData( const bool bNewFontLists )
 
     if ( bNewFontLists )
     {
-        if ( mpDeviceFontList )
-        {
-            delete mpDeviceFontList;
-            mpDeviceFontList = nullptr;
-        }
-        if ( mpDeviceFontSizeList )
-        {
-            delete mpDeviceFontSizeList;
-            mpDeviceFontSizeList = nullptr;
-        }
+        mpDeviceFontList.reset();
+        mpDeviceFontSizeList.reset();
 
         // release all physically selected fonts on this device
         if( AcquireGraphics() )
diff --git a/vcl/source/outdev/outdev.cxx b/vcl/source/outdev/outdev.cxx
index b44eedda0818..82833c72d819 100644
--- a/vcl/source/outdev/outdev.cxx
+++ b/vcl/source/outdev/outdev.cxx
@@ -62,7 +62,7 @@ OutputDevice::OutputDevice() :
     mpFontCollection                = nullptr;
     mpDeviceFontList                = nullptr;
     mpDeviceFontSizeList            = nullptr;
-    mpOutDevStateStack              = new OutDevStateStack;
+    mpOutDevStateStack.reset(new OutDevStateStack);
     mpPDFWriter                     = nullptr;
     mpAlphaVDev                     = nullptr;
     mpExtOutDevData                 = nullptr;
@@ -128,7 +128,7 @@ OutputDevice::OutputDevice() :
     maThresRes.mnThresPixToLogY     = 0;
 
     // struct ImplOutDevData- see #i82615#
-    mpOutDevData                    = new ImplOutDevData;
+    mpOutDevData.reset(new ImplOutDevData);
     mpOutDevData->mpRotateDev       = nullptr;
     mpOutDevData->mpRecordLayout    = nullptr;
 
@@ -158,8 +158,7 @@ void OutputDevice::dispose()
     // #i75163#
     ImplInvalidateViewTransform();
 
-    delete mpOutDevData;
-    mpOutDevData = nullptr;
+    mpOutDevData.reset();
 
     // for some reason, we haven't removed state from the stack properly
     if ( !mpOutDevStateStack->empty() )
@@ -170,20 +169,15 @@ void OutputDevice::dispose()
             mpOutDevStateStack->pop_back();
         }
     }
-    delete mpOutDevStateStack;
-    mpOutDevStateStack = nullptr;
+    mpOutDevStateStack.reset();
 
     // release the active font instance
     if( mpFontInstance )
         mpFontInstance->Release();
 
     // remove cached results of GetDevFontList/GetDevSizeList
-    // TODO: use smart pointers for them
-    delete mpDeviceFontList;
-    mpDeviceFontList = nullptr;
-
-    delete mpDeviceFontSizeList;
-    mpDeviceFontSizeList = nullptr;
+    mpDeviceFontList.reset();
+    mpDeviceFontSizeList.reset();
 
     // release ImplFontCache specific to this OutputDevice
     // TODO: refcount ImplFontCache
diff --git a/vcl/source/outdev/outdevstate.cxx b/vcl/source/outdev/outdevstate.cxx
index d2226add6f1b..6713f6481369 100644
--- a/vcl/source/outdev/outdevstate.cxx
+++ b/vcl/source/outdev/outdevstate.cxx
@@ -621,17 +621,8 @@ void OutputDevice::ImplReleaseFonts()
         mpFontInstance = nullptr;
     }
 
-    if ( mpDeviceFontList )
-    {
-        delete mpDeviceFontList;
-        mpDeviceFontList = nullptr;
-    }
-
-    if ( mpDeviceFontSizeList )
-    {
-        delete mpDeviceFontSizeList;
-        mpDeviceFontSizeList = nullptr;
-    }
+    mpDeviceFontList.reset();
+    mpDeviceFontSizeList.reset();
 }
 
 
diff --git a/vcl/win/gdi/salfont.cxx b/vcl/win/gdi/salfont.cxx
index f6deaaf6b1e8..6fe84173c710 100644
--- a/vcl/win/gdi/salfont.cxx
+++ b/vcl/win/gdi/salfont.cxx
@@ -314,7 +314,7 @@ bool WinGlyphFallbackSubstititution::FindFontSubstitute( FontSelectPattern& rFon
     }
 
     // last level fallback, check each font type face one by one
-    ImplDeviceFontList* pTestFontList = pFontCollection->GetDeviceFontList();
+    std::unique_ptr<ImplDeviceFontList> pTestFontList = pFontCollection->GetDeviceFontList();
     // limit the count of fonts to be checked to prevent hangs
     static const int MAX_GFBFONT_COUNT = 600;
     int nTestFontCount = pTestFontList->Count();
@@ -332,8 +332,6 @@ bool WinGlyphFallbackSubstititution::FindFontSubstitute( FontSelectPattern& rFon
         break;
     }
 
-    delete pTestFontList;
-
     return bFound;
 }
 


More information about the Libreoffice-commits mailing list