[Libreoffice-commits] core.git: 3 commits - connectivity/source cui/source include/vcl sal/osl vcl/inc vcl/source vcl/unx

Caolán McNamara caolanm at redhat.com
Thu Feb 18 11:26:36 UTC 2016


 connectivity/source/drivers/evoab2/EApi.cxx |   27 +++++++++++++++------------
 cui/source/options/optgdlg.cxx              |   10 ++++++++++
 include/vcl/svapp.hxx                       |    6 ++++++
 sal/osl/unx/tempfile.cxx                    |   14 +++++++-------
 vcl/inc/svdata.hxx                          |    1 +
 vcl/inc/unx/salinst.h                       |    2 +-
 vcl/source/app/svapp.cxx                    |    9 +++++++++
 vcl/source/app/svmain.cxx                   |    5 +++++
 vcl/unx/generic/app/salinst.cxx             |    9 +++++++++
 vcl/unx/gtk/gtkinst.cxx                     |    8 ++++++++
 vcl/unx/kde4/KDESalInstance.cxx             |    8 ++++++++
 vcl/unx/kde4/KDESalInstance.hxx             |    2 +-
 12 files changed, 80 insertions(+), 21 deletions(-)

New commits:
commit d967cc35fd0c77d9f3dd0b3d0c7df850db6ec274
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Thu Feb 18 11:25:26 2016 +0000

    Resolves: tdf#97904 opengl stuff isn't implemented for gtk3
    
    Change-Id: I1abbceebadf320f28955f54058b2d0ebfc79b9bc

diff --git a/cui/source/options/optgdlg.cxx b/cui/source/options/optgdlg.cxx
index 8e2bd66..f4d4d5c 100644
--- a/cui/source/options/optgdlg.cxx
+++ b/cui/source/options/optgdlg.cxx
@@ -629,6 +629,14 @@ OfaViewTabPage::OfaViewTabPage(vcl::Window* pParent, const SfxItemSet& rSet)
     get(m_pMousePosLB, "mousepos");
     get(m_pMouseMiddleLB, "mousemiddle");
 
+    if (Application::GetToolkitName() == "gtk3")
+    {
+        m_pUseOpenGL->Hide();
+        m_pForceOpenGL->Hide();
+        m_pOpenGLStatusEnabled->Hide();
+        m_pOpenGLStatusDisabled->Hide();
+    }
+
 #if defined( UNX )
     m_pFontAntiAliasing->SetToggleHdl( LINK( this, OfaViewTabPage, OnAntialiasingToggled ) );
 #else
@@ -969,6 +977,8 @@ void OfaViewTabPage::Reset( const SfxItemSet* )
 
 void OfaViewTabPage::UpdateOGLStatus()
 {
+    if (Application::GetToolkitName() == "gtk3")
+        return;
     // Easier than a custom translation string.
     bool bEnabled = OpenGLWrapper::isVCLOpenGLEnabled();
     m_pOpenGLStatusEnabled->Show(bEnabled);
diff --git a/include/vcl/svapp.hxx b/include/vcl/svapp.hxx
index dcb8057..c4e06cb 100644
--- a/include/vcl/svapp.hxx
+++ b/include/vcl/svapp.hxx
@@ -981,6 +981,12 @@ public:
     */
     static OUString             GetDisplayName();
 
+    /** Get the toolkit's name. e.g. gtk3
+
+     @returns The toolkit name.
+    */
+    static OUString             GetToolkitName();
+
     /** Get the number of screens available for the display.
 
      @returns The number of screens available.
diff --git a/vcl/inc/svdata.hxx b/vcl/inc/svdata.hxx
index 628f45d..42df79e 100644
--- a/vcl/inc/svdata.hxx
+++ b/vcl/inc/svdata.hxx
@@ -113,6 +113,7 @@ struct ImplSVAppData
     OUString*               mpAppName;                      // Application name
     OUString*               mpAppFileName;                  // Abs. Application FileName
     OUString*               mpDisplayName;                  // Application Display Name
+    OUString*               mpToolkitName;                  // Toolkit Name
     Help*                   mpHelp;                         // Application help
     PopupMenu*              mpActivePopupMenu;              // Actives Popup-Menu (in Execute)
     ImplIdleMgr*            mpIdleMgr;                      // Idle-Manager
diff --git a/vcl/inc/unx/salinst.h b/vcl/inc/unx/salinst.h
index ac90ca2..85d7ff6 100644
--- a/vcl/inc/unx/salinst.h
+++ b/vcl/inc/unx/salinst.h
@@ -45,7 +45,7 @@ protected:
     SalXLib *mpXLib;
 
 public:
-    X11SalInstance( SalYieldMutex* pMutex ) : SalGenericInstance( pMutex ), mpXLib(NULL) {}
+    explicit X11SalInstance(SalYieldMutex* pMutex);
     virtual ~X11SalInstance();
 
     virtual SalFrame*           CreateChildFrame( SystemParentData* pParent, SalFrameStyleFlags nStyle ) override;
diff --git a/vcl/source/app/svapp.cxx b/vcl/source/app/svapp.cxx
index 2ed5292..10ad441 100644
--- a/vcl/source/app/svapp.cxx
+++ b/vcl/source/app/svapp.cxx
@@ -1399,6 +1399,15 @@ void Application::SetDialogScaleX( short nScale )
         pSVData->maGDIData.mnAppFontX += (pSVData->maGDIData.mnAppFontX*nScale)/100;
 }
 
+OUString Application::GetToolkitName()
+{
+    ImplSVData* pSVData = ImplGetSVData();
+    if ( pSVData->maAppData.mpToolkitName )
+        return *(pSVData->maAppData.mpToolkitName);
+    else
+        return OUString();
+}
+
 void Application::SetDefDialogParent( vcl::Window* pWindow )
 {
     ImplGetSVData()->maWinData.mpDefDialogParent = pWindow;
diff --git a/vcl/source/app/svmain.cxx b/vcl/source/app/svmain.cxx
index c7bcb91..1546bc3 100644
--- a/vcl/source/app/svmain.cxx
+++ b/vcl/source/app/svmain.cxx
@@ -504,6 +504,11 @@ void DeInitVCL()
         delete pSVData->maAppData.mpDisplayName;
         pSVData->maAppData.mpDisplayName = nullptr;
     }
+    if ( pSVData->maAppData.mpToolkitName )
+    {
+        delete pSVData->maAppData.mpToolkitName;
+        pSVData->maAppData.mpToolkitName = nullptr;
+    }
     if ( pSVData->maAppData.mpEventListeners )
     {
         delete pSVData->maAppData.mpEventListeners;
diff --git a/vcl/unx/generic/app/salinst.cxx b/vcl/unx/generic/app/salinst.cxx
index 0ead21f..c94f800 100644
--- a/vcl/unx/generic/app/salinst.cxx
+++ b/vcl/unx/generic/app/salinst.cxx
@@ -65,6 +65,15 @@ extern "C"
     }
 }
 
+X11SalInstance::X11SalInstance(SalYieldMutex* pMutex)
+    : SalGenericInstance(pMutex)
+    , mpXLib(nullptr)
+{
+    ImplSVData* pSVData = ImplGetSVData();
+    delete pSVData->maAppData.mpToolkitName;
+    pSVData->maAppData.mpToolkitName = new OUString("x11");
+}
+
 X11SalInstance::~X11SalInstance()
 {
     // close session management
diff --git a/vcl/unx/gtk/gtkinst.cxx b/vcl/unx/gtk/gtkinst.cxx
index a1b7522..a37102e 100644
--- a/vcl/unx/gtk/gtkinst.cxx
+++ b/vcl/unx/gtk/gtkinst.cxx
@@ -186,6 +186,14 @@ void GtkInstance::EnsureInit()
 
     InitAtkBridge();
 
+    ImplSVData* pSVData = ImplGetSVData();
+    delete pSVData->maAppData.mpToolkitName;
+#if GTK_CHECK_VERSION(3,0,0)
+    pSVData->maAppData.mpToolkitName = new OUString("gtk3");
+#else
+    pSVData->maAppData.mpToolkitName = new OUString("gtk2");
+#endif
+
     bNeedsInit = false;
 }
 
diff --git a/vcl/unx/kde4/KDESalInstance.cxx b/vcl/unx/kde4/KDESalInstance.cxx
index e28fb2d..86c9d8f 100644
--- a/vcl/unx/kde4/KDESalInstance.cxx
+++ b/vcl/unx/kde4/KDESalInstance.cxx
@@ -26,6 +26,14 @@
 
 using namespace com::sun::star;
 
+KDESalInstance::KDESalInstance(SalYieldMutex* pMutex)
+    : X11SalInstance(pMutex)
+{
+    ImplSVData* pSVData = ImplGetSVData();
+    delete pSVData->maAppData.mpToolkitName;
+    pSVData->maAppData.mpToolkitName = new OUString("kde4");
+}
+
 SalFrame* KDESalInstance::CreateFrame( SalFrame *pParent, SalFrameStyleFlags nState )
 {
     return new KDESalFrame( pParent, nState );
diff --git a/vcl/unx/kde4/KDESalInstance.hxx b/vcl/unx/kde4/KDESalInstance.hxx
index 8eabb3b..aaa8d2f 100644
--- a/vcl/unx/kde4/KDESalInstance.hxx
+++ b/vcl/unx/kde4/KDESalInstance.hxx
@@ -27,7 +27,7 @@ class SalFrame;
 class KDESalInstance : public X11SalInstance
 {
     public:
-        explicit KDESalInstance( SalYieldMutex* pMutex ) : X11SalInstance( pMutex ) {}
+        explicit KDESalInstance(SalYieldMutex* pMutex);
         virtual ~KDESalInstance() {}
         virtual SalFrame* CreateFrame( SalFrame* pParent, SalFrameStyleFlags nStyle ) override;
 
commit f752a223d19fd52d4e1dd7defa3e134388458f18
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Thu Feb 18 10:43:02 2016 +0000

    coverity#1352441 silence Resource leak
    
    Change-Id: Ib7d771098d640e17a9503d2d780051e916fa6bb3

diff --git a/connectivity/source/drivers/evoab2/EApi.cxx b/connectivity/source/drivers/evoab2/EApi.cxx
index 342d446..fc81a19 100644
--- a/connectivity/source/drivers/evoab2/EApi.cxx
+++ b/connectivity/source/drivers/evoab2/EApi.cxx
@@ -17,7 +17,7 @@
  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
  */
 #include <rtl/ustring.hxx>
-#include <osl/module.h>
+#include <osl/module.hxx>
 #define  DECLARE_FN_POINTERS 1
 #include "EApi.h"
 static const char *eBookLibNames[] = {
@@ -109,12 +109,12 @@ static const ApiMap aClientApiMap38[] =
 #undef SYM_MAP
 
 template<size_t N> static bool
-tryLink( oslModule &aModule, const char *pName, const ApiMap (&pMap)[N])
+tryLink( osl::Module &rModule, const char *pName, const ApiMap (&pMap)[N])
 {
     for (size_t i = 0; i < N; ++i)
     {
-        SymbolFunc aMethod = reinterpret_cast<SymbolFunc>(osl_getFunctionSymbol
-            (aModule, OUString::createFromAscii ( pMap[ i ].sym_name ).pData));
+        SymbolFunc aMethod = reinterpret_cast<SymbolFunc>(
+            rModule.getFunctionSymbol(OUString::createFromAscii(pMap[i].sym_name)));
         if( !aMethod )
         {
             fprintf( stderr, "Warning: missing symbol '%s' in '%s'\n",
@@ -128,15 +128,11 @@ tryLink( oslModule &aModule, const char *pName, const ApiMap (&pMap)[N])
 
 bool EApiInit()
 {
-    oslModule aModule;
-
     for( guint j = 0; j < G_N_ELEMENTS( eBookLibNames ); j++ )
     {
-        aModule = osl_loadModule( OUString::createFromAscii
-                                  ( eBookLibNames[ j ] ).pData,
-                                  SAL_LOADMODULE_DEFAULT );
+        osl::Module aModule(OUString::createFromAscii(eBookLibNames[j]), SAL_LOADMODULE_DEFAULT);
 
-        if( aModule == nullptr)
+        if (!aModule.is())
             continue;
 
         if (tryLink( aModule, eBookLibNames[ j ], aCommonApiMap))
@@ -144,24 +140,31 @@ bool EApiInit()
             if (eds_check_version( 3, 6, 0 ) != nullptr)
             {
                 if (tryLink( aModule, eBookLibNames[ j ], aOldApiMap))
+                {
+                    aModule.release();
                     return true;
+                }
             }
             else if (tryLink( aModule, eBookLibNames[ j ], aNewApiMap))
             {
                 if (eds_check_version( 3, 7, 6 ) != nullptr)
                 {
                     if (tryLink( aModule, eBookLibNames[ j ], aClientApiMap36))
+                    {
+                        aModule.release();
                         return true;
+                    }
                 }
                 else
                 {
                     if (tryLink( aModule, eBookLibNames[ j ], aClientApiMap38))
+                    {
+                        aModule.release();
                         return true;
+                    }
                 }
             }
         }
-
-        osl_unloadModule( aModule );
     }
     fprintf( stderr, "Can find no compliant libebook client libraries\n" );
     return false;
commit 88c2e8bf6e13b943f0ada9a00a6863beb8f12e9b
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Thu Feb 18 10:33:34 2016 +0000

    coverity#1352316 Explicit null dereferenced
    
    Change-Id: Ieb80209e0254080bf78fb3b5201b849d7d30880c

diff --git a/sal/osl/unx/tempfile.cxx b/sal/osl/unx/tempfile.cxx
index d6e7941..69607b3 100644
--- a/sal/osl/unx/tempfile.cxx
+++ b/sal/osl/unx/tempfile.cxx
@@ -270,7 +270,6 @@ oslFileError SAL_CALL osl_createTempFile(
     rtl_uString**  ppustrTempFileURL)
 {
     rtl_uString*  base_directory     = nullptr;
-    rtl_uString*  temp_file_name     = nullptr;
     oslFileHandle temp_file_handle;
     sal_Bool      b_delete_on_close;
     oslFileError  osl_error;
@@ -285,16 +284,19 @@ oslFileError SAL_CALL osl_createTempFile(
     if (osl_File_E_None != osl_error)
         return osl_error;
 
+    rtl_uString*  temp_file_name = nullptr;
     osl_error = osl_create_temp_file_impl_(
         base_directory, &temp_file_handle, &temp_file_name);
 
+    rtl_uString* temp_file_url = nullptr;
     if (osl_File_E_None == osl_error)
     {
-        rtl_uString* temp_file_url = nullptr;
-
-        /* assuming this works */
-        osl_getFileURLFromSystemPath(temp_file_name, &temp_file_url);
+        osl_error = osl_getFileURLFromSystemPath(temp_file_name, &temp_file_url);
+        rtl_uString_release(temp_file_name);
+    }
 
+    if (osl_File_E_None == osl_error)
+    {
         if (b_delete_on_close)
         {
             osl_error = osl_removeFile(temp_file_url);
@@ -315,8 +317,6 @@ oslFileError SAL_CALL osl_createTempFile(
         }
 
         rtl_uString_release(temp_file_url);
-
-        rtl_uString_release(temp_file_name);
     }
 
     rtl_uString_release(base_directory);


More information about the Libreoffice-commits mailing list