[Libreoffice-commits] core.git: Branch 'feature/slidehack' - 5 commits - sd/inc sd/Library_sd.mk sd/source sd/uiconfig vcl/inc vcl/unx

Michael Meeks michael.meeks at suse.com
Fri Apr 12 05:41:49 PDT 2013


 sd/Library_sd.mk                       |    1 
 sd/inc/slidehack.hxx                   |    1 
 sd/source/core/slidehack.cxx           |   50 ++++++
 sd/source/ui/dlg/GroupSlidesDialog.cxx |   28 ++-
 sd/source/ui/dlg/GroupSlidesDialog.hxx |    5 
 sd/uiconfig/simpress/ui/groupslides.ui |   27 +--
 vcl/inc/unx/gtk/gtkinst.hxx            |   31 +---
 vcl/unx/gtk/app/gtkinst.cxx            |  245 +++++----------------------------
 8 files changed, 144 insertions(+), 244 deletions(-)

New commits:
commit 9f4dd110ee3f519bda1205297df754b94428ca73
Author: Michael Meeks <michael.meeks at suse.com>
Date:   Fri Apr 12 13:40:41 2013 +0100

    Impl. more of the group dialog.
    
    Change-Id: Iaa0636087c22380c8a29d9c9b73d177cda453ea5

diff --git a/sd/Library_sd.mk b/sd/Library_sd.mk
index d1d15b8..d4800bd 100644
--- a/sd/Library_sd.mk
+++ b/sd/Library_sd.mk
@@ -147,6 +147,7 @@ $(eval $(call gb_Library_add_exception_objects,sd,\
     sd/source/core/sdpage2 \
     sd/source/core/sdpage_animations \
     sd/source/core/shapelist \
+    sd/source/core/slidehack \
     sd/source/core/stlfamily \
     sd/source/core/stlpool \
     sd/source/core/stlsheet \
diff --git a/sd/inc/slidehack.hxx b/sd/inc/slidehack.hxx
index 70ba47a..ce724ea 100644
--- a/sd/inc/slidehack.hxx
+++ b/sd/inc/slidehack.hxx
@@ -154,6 +154,7 @@ public:
     /// check for updated versions etc.
     virtual GroupPtr lookupGroup( OriginPtr pOrigin ) = 0;
     virtual GroupPtr createGroup( const OUString &rName,
+                                  const OUString &rTitle,
                                   const OUString &rKeywords,
                                   const std::vector< SdPage * > &rPages ) = 0;
 
diff --git a/sd/source/core/slidehack.cxx b/sd/source/core/slidehack.cxx
new file mode 100644
index 0000000..cdf251c
--- /dev/null
+++ b/sd/source/core/slidehack.cxx
@@ -0,0 +1,50 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+* This file is part of the LibreOffice project.
+*
+* This Source Code Form is subject to the terms of the Mozilla Public
+* License, v. 2.0. If a copy of the MPL was not distributed with this
+* file, You can obtain one at http://mozilla.org/MPL/2.0/.
+*/
+
+#include "slidehack.hxx"
+
+namespace SlideHack {
+namespace {
+
+class ImplStore : public Store {
+public:
+    ImplStore();
+
+    virtual sal_uInt32 search( OUString aSearchEntry )
+    {
+        // queue maSearchCompleted at idle ...
+        return 0;
+    }
+    virtual void  cancelSearch( sal_uInt32 nHandle ) { (void) nHandle; }
+
+    /// used to create a group handle from a stored slide, so we can
+    /// check for updated versions etc.
+    virtual GroupPtr lookupGroup( OriginPtr pOrigin )
+    {
+        return GroupPtr();
+    }
+    virtual GroupPtr createGroup( const OUString &rName,
+                                  const OUString &rTitle,
+                                  const OUString &rKeywords,
+                                  const std::vector< SdPage * > &rPages )
+    {
+        return GroupPtr();
+    }
+};
+
+} // end anonymous namespace
+
+StorePtr Store::getStore()
+{
+    return StorePtr( new ImplStore() );
+}
+
+} // end SlideHack namespace
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sd/source/ui/dlg/GroupSlidesDialog.cxx b/sd/source/ui/dlg/GroupSlidesDialog.cxx
index a396913..9117a5c 100644
--- a/sd/source/ui/dlg/GroupSlidesDialog.cxx
+++ b/sd/source/ui/dlg/GroupSlidesDialog.cxx
@@ -29,9 +29,11 @@ namespace {
     }
 }
 
-void SdGroupSlidesDialog::addGroupsToCombo( ComboBox *pBox, SdDrawDocument *pDoc )
+void SdGroupSlidesDialog::addGroupsToCombo( ComboBox /* *pBox, */ SdDrawDocument *pDoc )
 {
+#if 0
     mpGroupCombo->Clear();
+#endif
 
     sal_uInt32 nPages = pDoc->GetSdPageCount( PK_STANDARD );
     StorePtr pStore = SlideHack::Store::getStore();
@@ -48,7 +50,11 @@ void SdGroupSlidesDialog::addGroupsToCombo( ComboBox *pBox, SdDrawDocument *pDoc
         if ( std::find( maGroups.begin(), maGroups.end(), pGroup ) != maGroups.end() )
             continue;
         maGroups.push_back( pGroup );
+#if 0
+        // FIXME: we want a widget that does something like this -
+        // an Autocomplete hdl on an Edit ? or ...
         mpGroupCombo->InsertEntry( pGroup->getMetaData()->getName() );
+#endif
     }
 }
 
@@ -60,17 +66,18 @@ SdGroupSlidesDialog::SdGroupSlidesDialog(Window* pWindow, SdDrawDocument* pActDo
 {
     get( mpAddBtn, "add_btn" );
     get( mpCancelBtn, "cancel_btn" );
-    get( mpGroupCombo, "cb_group" );
+//    get( mpGroupCombo, "cb_group" );
+    get( mpGroupEdit, "ed_group" );
     get( mpTitle, "ed_title" );
     get( mpKeywords, "ed_keywords" );
 
     mpAddBtn->SetClickHdl( LINK( this, SdGroupSlidesDialog, AddHdl ) );
     mpCancelBtn->SetClickHdl( LINK( this, SdGroupSlidesDialog, CancelHdl ) );
 
-    addGroupsToCombo( mpGroupCombo, mpDoc );
-    mpGroupCombo->SetSelectHdl( LINK( this, SdGroupSlidesDialog, GroupSelectHdl ) );
-    mpGroupCombo->SetDoubleClickHdl( LINK( this, SdGroupSlidesDialog, GroupDoubleClickHdl ) );
-    mpGroupCombo->EnableAutocomplete( true );
+//    addGroupsToCombo( mpGroupCombo, mpDoc );
+//    mpGroupCombo->SetSelectHdl( LINK( this, SdGroupSlidesDialog, GroupSelectHdl ) );
+//    mpGroupCombo->SetDoubleClickHdl( LINK( this, SdGroupSlidesDialog, GroupDoubleClickHdl ) );
+//    mpGroupCombo->EnableAutocomplete( true );
 }
 
 SdGroupSlidesDialog::~SdGroupSlidesDialog()
@@ -88,6 +95,12 @@ int SdGroupSlidesDialog::endDialog( bool bSuccessSoSave )
 {
     if ( bSuccessSoSave )
     {
+        // FIXME: input validation
+        SlideHack::Store::getStore()->createGroup( mpGroupEdit->GetText(),
+                                                   mpTitle->GetText(),
+                                                   mpKeywords->GetText(),
+                                                   maPages );
+#if 0
         sal_uInt16 nSelected = mpGroupCombo->GetSelectEntryPos();
         SAL_DEBUG("complete: " << (int) nSelected );
         if ( nSelected < maGroups.size() )
@@ -98,6 +111,7 @@ int SdGroupSlidesDialog::endDialog( bool bSuccessSoSave )
         {
             SAL_DEBUG("new group");
         }
+#endif
     }
 
     EndDialog(0);
@@ -116,6 +130,7 @@ IMPL_LINK_NOARG( SdGroupSlidesDialog, CancelHdl )
     return endDialog( false ) ;
 }
 
+#if 0
 IMPL_LINK_NOARG( SdGroupSlidesDialog, GroupSelectHdl )
 {
     sal_uInt16 nSelected = mpGroupCombo->GetSelectEntryPos();
@@ -130,6 +145,7 @@ IMPL_LINK_NOARG( SdGroupSlidesDialog, GroupDoubleClickHdl )
     GroupSelectHdl( 0 );
     return endDialog( true ) ;
 }
+#endif
 
 }
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sd/source/ui/dlg/GroupSlidesDialog.hxx b/sd/source/ui/dlg/GroupSlidesDialog.hxx
index bf2ce35..3e347a9 100644
--- a/sd/source/ui/dlg/GroupSlidesDialog.hxx
+++ b/sd/source/ui/dlg/GroupSlidesDialog.hxx
@@ -51,7 +51,8 @@ private:
     CancelButton  *mpCancelBtn;
     PushButton    *mpAddBtn;
 
-    ComboBox*      mpGroupCombo;
+//    ComboBox*      mpGroupCombo;
+    Edit          *mpGroupEdit;
     std::vector< SlideHack::GroupPtr > maGroups;
     void addGroupsToCombo( ComboBox *pBox, SdDrawDocument *pDoc );
 
@@ -60,8 +61,10 @@ private:
 
     DECL_LINK( AddHdl, void* );
     DECL_LINK( CancelHdl, void* );
+#if 0
     DECL_LINK( GroupSelectHdl, void* );
     DECL_LINK( GroupDoubleClickHdl, void* );
+#endif
 
     int  endDialog( bool bSuccessSoSave );
     void populateEdits( SlideHack::GroupPtr pGroup );
diff --git a/sd/uiconfig/simpress/ui/groupslides.ui b/sd/uiconfig/simpress/ui/groupslides.ui
index 9b87ab2..b2d4853 100644
--- a/sd/uiconfig/simpress/ui/groupslides.ui
+++ b/sd/uiconfig/simpress/ui/groupslides.ui
@@ -112,19 +112,6 @@
                           </packing>
                         </child>
                         <child>
-                          <object class="GtkComboBoxText" id="cb_group">
-                            <property name="visible">True</property>
-                            <property name="can_focus">False</property>
-                            <property name="hexpand">True</property>
-                          </object>
-                          <packing>
-                            <property name="left_attach">1</property>
-                            <property name="top_attach">0</property>
-                            <property name="width">1</property>
-                            <property name="height">1</property>
-                          </packing>
-                        </child>
-                        <child>
                           <object class="GtkLabel" id="label3">
                             <property name="visible">True</property>
                             <property name="can_focus">False</property>
@@ -175,6 +162,20 @@
                         <child>
                           <placeholder/>
                         </child>
+                        <child>
+                          <object class="GtkEntry" id="ed_group">
+                            <property name="visible">True</property>
+                            <property name="can_focus">True</property>
+                            <property name="invisible_char">●</property>
+                            <property name="placeholder_text"><enter a name for your slide group></property>
+                          </object>
+                          <packing>
+                            <property name="left_attach">1</property>
+                            <property name="top_attach">0</property>
+                            <property name="width">1</property>
+                            <property name="height">1</property>
+                          </packing>
+                        </child>
                       </object>
                     </child>
                   </object>
commit 52bce36051efc35b1c7e30b7e7fcb136239497a4
Author: Michael Meeks <michael.meeks at suse.com>
Date:   Fri Apr 12 11:06:30 2013 +0100

    fdo#60690 - a little more cleanup of gtk+ mutex bits.
    
    Change-Id: I020d6f59751aef0bfb06667317ddcaf2965395d1

diff --git a/vcl/inc/unx/gtk/gtkinst.hxx b/vcl/inc/unx/gtk/gtkinst.hxx
index b8f530c..eb65318 100644
--- a/vcl/inc/unx/gtk/gtkinst.hxx
+++ b/vcl/inc/unx/gtk/gtkinst.hxx
@@ -38,6 +38,7 @@ class GtkPrintWrapper;
 class GenPspGraphics;
 class GtkYieldMutex : public SalYieldMutex
 {
+    std::list<sal_uLong> aYieldStack;
 public:
                         GtkYieldMutex();
     virtual void        acquire();
@@ -47,8 +48,6 @@ public:
     virtual int         Grab()          { return 0; };
     virtual void        Ungrab(int )    {};
 
-    std::list<sal_uLong> aYieldStack;
-
     void ThreadsEnter();
     void ThreadsLeave();
 
diff --git a/vcl/unx/gtk/app/gtkinst.cxx b/vcl/unx/gtk/app/gtkinst.cxx
index af80678..1bb4bed 100644
--- a/vcl/unx/gtk/app/gtkinst.cxx
+++ b/vcl/unx/gtk/app/gtkinst.cxx
@@ -61,18 +61,6 @@ extern "C"
         GtkYieldMutex *pYieldMutex = GET_YIELD_MUTEX();
         pYieldMutex->ThreadsLeave();
     }
-    static bool hookLocks( void )
-    {
-#if !GTK_CHECK_VERSION(2,4,0)
-#error No lock hooking!
-#endif
-        gdk_threads_set_lock_functions (GdkThreadsEnter, GdkThreadsLeave);
-
-#if OSL_DEBUG_LEVEL > 1
-        fprintf( stderr, "Hooked gdk threads locks\n" );
-#endif
-        return true;
-    }
 
     VCLPLUG_GTK_PUBLIC SalInstance* create_SalInstance( oslModule )
     {
@@ -113,8 +101,16 @@ extern "C"
         if ( !g_thread_supported() )
             g_thread_init( NULL );
 
-        if ( hookLocks() )
-            pYieldMutex = new GtkYieldMutex();
+#if !GTK_CHECK_VERSION(2,4,0)
+#error "Requires gtk 2.4.0+ for lock hooking"
+#endif
+        gdk_threads_set_lock_functions (GdkThreadsEnter, GdkThreadsLeave);
+
+#if OSL_DEBUG_LEVEL > 1
+        fprintf( stderr, "Hooked gdk threads locks\n" );
+#endif
+
+        pYieldMutex = new GtkYieldMutex();
 
         gdk_threads_init();
 
commit 73c96cce032b7a55b2f6d724661d811c5e751b65
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Fri Apr 12 11:51:08 2013 +0200

    -Werror=unused
    
    Change-Id: Icab9990a1e4bcbd709f63cb5ef24358441cced8d

diff --git a/vcl/unx/gtk/app/gtkinst.cxx b/vcl/unx/gtk/app/gtkinst.cxx
index 3bc4379..af80678 100644
--- a/vcl/unx/gtk/app/gtkinst.cxx
+++ b/vcl/unx/gtk/app/gtkinst.cxx
@@ -74,7 +74,7 @@ extern "C"
         return true;
     }
 
-    VCLPLUG_GTK_PUBLIC SalInstance* create_SalInstance( oslModule pModule )
+    VCLPLUG_GTK_PUBLIC SalInstance* create_SalInstance( oslModule )
     {
 #if OSL_DEBUG_LEVEL > 1
         fprintf( stderr, "create vcl plugin instance with gtk version %d %d %d\n",
@@ -255,15 +255,6 @@ void GtkInstance::AddToRecentDocumentList(const OUString& rFileUrl, const OUStri
 #endif
 }
 
-/*
- * Obsolete, non-working, and crufty code from the
- * beginning of time. When we update our base platform
- * we should kill this with extreme prejudice.
- */
-#if !GTK_CHECK_VERSION(3,0,0)
-#  define HORRIBLE_OBSOLETE_YIELDMUTEX_IMPL
-#endif
-
 SalInfoPrinter* GtkInstance::CreateInfoPrinter( SalPrinterQueueInfo* pQueueInfo,
     ImplJobSetup* pSetupData )
 {
commit bdc04c2e024a840a77fecadfbc7b09b8637a1d89
Author: vjinoch <elianoss at gmail.com>
Date:   Fri Apr 12 01:18:41 2013 +0200

    Remove GtkHookedYieldMutex and some small changes.
    
    Change-Id: Id84a5eaa4cea4c7cce9aa873c1a7c286e5d5cc92
    Reviewed-on: https://gerrit.libreoffice.org/3349
    Reviewed-by: Michael Meeks <michael.meeks at suse.com>
    Tested-by: Michael Meeks <michael.meeks at suse.com>

diff --git a/vcl/inc/unx/gtk/gtkinst.hxx b/vcl/inc/unx/gtk/gtkinst.hxx
index 83ea84f..b8f530c 100644
--- a/vcl/inc/unx/gtk/gtkinst.hxx
+++ b/vcl/inc/unx/gtk/gtkinst.hxx
@@ -39,13 +39,18 @@ class GenPspGraphics;
 class GtkYieldMutex : public SalYieldMutex
 {
 public:
-                                                GtkYieldMutex();
-    virtual void                                acquire();
-    virtual void                                release();
-    virtual sal_Bool                            tryToAcquire();
+                        GtkYieldMutex();
+    virtual void        acquire();
+    virtual void        release();
+    virtual sal_Bool    tryToAcquire()  { return SalYieldMutex::tryToAcquire(); }
 
-    virtual int Grab();
-    virtual void Ungrab( int );
+    virtual int         Grab()          { return 0; };
+    virtual void        Ungrab(int )    {};
+
+    std::list<sal_uLong> aYieldStack;
+
+    void ThreadsEnter();
+    void ThreadsLeave();
 
     class GtkYieldGuard
     {
@@ -64,21 +69,6 @@ public:
     };
 };
 
-class GtkHookedYieldMutex : public GtkYieldMutex
-{
-    virtual int      Grab()             { return 0; };
-    virtual void     Ungrab(int )       {};
-    std::list<sal_uLong> aYieldStack;
-public:
-    GtkHookedYieldMutex();
-    virtual void      acquire();
-    virtual void      release();
-    virtual sal_Bool  tryToAcquire() { return SalYieldMutex::tryToAcquire(); }
-    void ThreadsEnter();
-    void ThreadsLeave();
-};
-
-
 #define GTK_YIELD_GRAB() GtkYieldMutex::GtkYieldGuard aLocalGtkYieldGuard( static_cast<GtkYieldMutex*>(GetSalData()->m_pInstance->GetYieldMutex()) )
 
 class GtkSalTimer;
diff --git a/vcl/unx/gtk/app/gtkinst.cxx b/vcl/unx/gtk/app/gtkinst.cxx
index c920fda..3bc4379 100644
--- a/vcl/unx/gtk/app/gtkinst.cxx
+++ b/vcl/unx/gtk/app/gtkinst.cxx
@@ -48,78 +48,29 @@
 
 #include "gtkprintwrapper.hxx"
 
-GtkHookedYieldMutex::GtkHookedYieldMutex()
-{
-}
-
-/*
- * These methods always occur in pairs
- * A ThreadsEnter is followed by a ThreadsLeave
- * We need to queue up the recursive lock count
- * for each pair, so we can accurately restore
- * it later.
- */
-void GtkHookedYieldMutex::ThreadsEnter()
-{
-    acquire();
-    if( !aYieldStack.empty() )
-    { /* Previously called ThreadsLeave() */
-        sal_uLong nCount = aYieldStack.front();
-        aYieldStack.pop_front();
-        while( nCount-- > 1 )
-            acquire();
-    }
-}
-
-void GtkHookedYieldMutex::ThreadsLeave()
-{
-    aYieldStack.push_front( mnCount );
-
-#if OSL_DEBUG_LEVEL > 1
-    if( mnThreadId &&
-        mnThreadId != osl::Thread::getCurrentIdentifier())
-        fprintf( stderr, "\n\n--- A different thread owns the mutex ...---\n\n\n");
-#endif
-
-    while( mnCount > 1 )
-        release();
-    release();
-}
-
-void GtkHookedYieldMutex::acquire()
-{
-    SalYieldMutex::acquire();
-}
-
-void GtkHookedYieldMutex::release()
-{
-    SalYieldMutex::release();
-}
-
 extern "C"
 {
-    #define GET_YIELD_MUTEX() static_cast<GtkHookedYieldMutex*>(GetSalData()->m_pInstance->GetYieldMutex())
+    #define GET_YIELD_MUTEX() static_cast<GtkYieldMutex*>(GetSalData()->m_pInstance->GetYieldMutex())
     static void GdkThreadsEnter( void )
     {
-        GtkHookedYieldMutex *pYieldMutex = GET_YIELD_MUTEX();
+        GtkYieldMutex *pYieldMutex = GET_YIELD_MUTEX();
         pYieldMutex->ThreadsEnter();
     }
     static void GdkThreadsLeave( void )
     {
-        GtkHookedYieldMutex *pYieldMutex = GET_YIELD_MUTEX();
+        GtkYieldMutex *pYieldMutex = GET_YIELD_MUTEX();
         pYieldMutex->ThreadsLeave();
     }
-    static bool hookLocks( oslModule pModule )
+    static bool hookLocks( void )
     {
 #if !GTK_CHECK_VERSION(2,4,0)
-        g_error("no lock hooking!");
+#error No lock hooking!
 #endif
         gdk_threads_set_lock_functions (GdkThreadsEnter, GdkThreadsLeave);
 
 #if OSL_DEBUG_LEVEL > 1
         fprintf( stderr, "Hooked gdk threads locks\n" );
 #endif
-        (void)pModule;
         return true;
     }
 
@@ -130,6 +81,9 @@ extern "C"
                  (int) gtk_major_version, (int) gtk_minor_version,
                  (int) gtk_micro_version );
 #endif
+        if( (int) gtk_major_version < 2 || ((int) gtk_major_version == 2 && (int) gtk_minor_version < 4))
+            g_warning("require a newer gtk than %d.%d for gdk_threads_set_lock_functions", (int) gtk_major_version, gtk_minor_version);
+                return NULL;
         /* #i92121# workaround deadlocks in the X11 implementation
         */
         static const char* pNoXInitThreads = getenv( "SAL_NO_XINITTHREADS" );
@@ -159,8 +113,8 @@ extern "C"
         if ( !g_thread_supported() )
             g_thread_init( NULL );
 
-        if ( hookLocks( pModule ) )
-            pYieldMutex = new GtkHookedYieldMutex();
+        if ( hookLocks() )
+            pYieldMutex = new GtkYieldMutex();
 
         gdk_threads_init();
 
@@ -341,30 +295,46 @@ GtkYieldMutex::GtkYieldMutex()
 
 void GtkYieldMutex::acquire()
 {
-    g_error ("never called");
+    SalYieldMutex::acquire();
 }
 
 void GtkYieldMutex::release()
 {
-    g_error ("never called");
+    SalYieldMutex::release();
 }
 
-sal_Bool GtkYieldMutex::tryToAcquire()
+/*
+ * These methods always occur in pairs
+ * A ThreadsEnter is followed by a ThreadsLeave
+ * We need to queue up the recursive lock count
+ * for each pair, so we can accurately restore
+ * it later.
+ */
+void GtkYieldMutex::ThreadsEnter()
 {
-    g_error ("never called");
-    return sal_True;
+    acquire();
+    if( !aYieldStack.empty() )
+    { /* Previously called ThreadsLeave() */
+        sal_uLong nCount = aYieldStack.front();
+        aYieldStack.pop_front();
+        while( nCount-- > 1 )
+            acquire();
+    }
 }
 
-int GtkYieldMutex::Grab()
+void GtkYieldMutex::ThreadsLeave()
 {
-    g_error ("never called");
-    return sal_True;
-}
+    aYieldStack.push_front( mnCount );
 
-void GtkYieldMutex::Ungrab( int nGrabs )
-{
-    (void)nGrabs;
-    g_error ("never called");
+#if OSL_DEBUG_LEVEL > 1
+    if( mnThreadId &&
+        mnThreadId != osl::Thread::getCurrentIdentifier())
+        fprintf( stderr, "\n\n--- A different thread owns the mutex ...---\n\n\n");
+#endif
+
+    while( mnCount > 1 )
+        release();
+    release();
 }
 
 SalVirtualDevice* GtkInstance::CreateVirtualDevice( SalGraphics *pG,
commit abd519f347312cbe5dc5ab9c50e9d5388f912070
Author: vjinoch <elianoss at gmail.com>
Date:   Tue Apr 9 18:06:36 2013 +0200

    Remove code marked by HORRIBLE_OBSOLETE_YIELDMUTEX_IMPL tag.
    
    Change-Id: Ib87e3a5155176a6ce0531e04b08a2731a9c956a7
    Reviewed-on: https://gerrit.libreoffice.org/3289
    Reviewed-by: Michael Meeks <michael.meeks at suse.com>
    Tested-by: Michael Meeks <michael.meeks at suse.com>

diff --git a/vcl/unx/gtk/app/gtkinst.cxx b/vcl/unx/gtk/app/gtkinst.cxx
index 554c26c..c920fda 100644
--- a/vcl/unx/gtk/app/gtkinst.cxx
+++ b/vcl/unx/gtk/app/gtkinst.cxx
@@ -111,22 +111,15 @@ extern "C"
     }
     static bool hookLocks( oslModule pModule )
     {
-        typedef void (*GdkLockFn) (GCallback enter_fn, GCallback leave_fn);
-
-        GdkLockFn gdk_threads_set_lock_functions =
-                (GdkLockFn) osl_getAsciiFunctionSymbol( pModule, "gdk_threads_set_lock_functions" );
-        if ( !gdk_threads_set_lock_functions )
-        {
-#if OSL_DEBUG_LEVEL > 1
-            fprintf( stderr, "Failed to hook gdk threads locks\n" );
+#if !GTK_CHECK_VERSION(2,4,0)
+        g_error("no lock hooking!");
 #endif
-            return false;
-        }
-
         gdk_threads_set_lock_functions (GdkThreadsEnter, GdkThreadsLeave);
+
 #if OSL_DEBUG_LEVEL > 1
         fprintf( stderr, "Hooked gdk threads locks\n" );
 #endif
+        (void)pModule;
         return true;
     }
 
@@ -168,12 +161,6 @@ extern "C"
 
         if ( hookLocks( pModule ) )
             pYieldMutex = new GtkHookedYieldMutex();
-        else
-#if GTK_CHECK_VERSION(3,0,0)
-            g_error ("impossible case for gtk3");
-#else
-            pYieldMutex = new GtkYieldMutex();
-#endif
 
         gdk_threads_init();
 
@@ -354,135 +341,30 @@ GtkYieldMutex::GtkYieldMutex()
 
 void GtkYieldMutex::acquire()
 {
-#ifdef HORRIBLE_OBSOLETE_YIELDMUTEX_IMPL
-    oslThreadIdentifier aCurrentThread = osl::Thread::getCurrentIdentifier();
-    // protect member manipulation
-    SolarMutexObject::acquire();
-    if( mnCount > 0 && mnThreadId == aCurrentThread )
-    {
-        mnCount++;
-        SolarMutexObject::release();
-        return;
-    }
-    SolarMutexObject::release();
-
-    // obtain gdk mutex
-    gdk_threads_enter();
-
-    // obtained gdk mutex, now lock count is one by definition
-    SolarMutexObject::acquire();
-    mnCount = 1;
-    mnThreadId = aCurrentThread;
-    SolarMutexObject::release();
-#else
     g_error ("never called");
-#endif
 }
 
 void GtkYieldMutex::release()
 {
-#ifdef HORRIBLE_OBSOLETE_YIELDMUTEX_IMPL
-    oslThreadIdentifier aCurrentThread = osl::Thread::getCurrentIdentifier();
-    // protect member manipulation
-    SolarMutexObject::acquire();
-    // strange things happen, do nothing if we don't own the mutex
-    if( mnThreadId == aCurrentThread )
-    {
-        mnCount--;
-        if( mnCount == 0 )
-        {
-            gdk_threads_leave();
-            mnThreadId = 0;
-        }
-    }
-    SolarMutexObject::release();
-#else
     g_error ("never called");
-#endif
 }
 
 sal_Bool GtkYieldMutex::tryToAcquire()
 {
-#ifdef HORRIBLE_OBSOLETE_YIELDMUTEX_IMPL
-    oslThreadIdentifier aCurrentThread = osl::Thread::getCurrentIdentifier();
-    // protect member manipulation
-    SolarMutexObject::acquire();
-    if( mnCount > 0 )
-    {
-        if( mnThreadId == aCurrentThread )
-        {
-            mnCount++;
-            SolarMutexObject::release();
-            return sal_True;
-        }
-        else
-        {
-            SolarMutexObject::release();
-            return sal_False;
-        }
-    }
-    SolarMutexObject::release();
-
-    // HACK: gdk_threads_mutex is private, we shouldn't use it.
-    // how to we do a try_lock without having a gdk_threads_try_enter ?
-    if( ! g_mutex_trylock( gdk_threads_mutex ) )
-        return sal_False;
-
-    // obtained gdk mutex, now lock count is one by definition
-    SolarMutexObject::acquire();
-    mnCount = 1;
-    mnThreadId = aCurrentThread;
-    SolarMutexObject::release();
-
-#else
     g_error ("never called");
-#endif
     return sal_True;
 }
 
 int GtkYieldMutex::Grab()
 {
-#ifdef HORRIBLE_OBSOLETE_YIELDMUTEX_IMPL
-    // this MUST only be called by gdk/gtk callbacks:
-    // they are entered with gdk mutex locked; the mutex
-    // was unlocked by GtkYieldMutex befor yielding which
-    // is now locked again by gtk implicitly
-
-    // obtained gdk mutex, now lock count is one by definition
-    SolarMutexObject::acquire();
-    int nRet = mnCount;
-    if( mnCount == 0 ) // recursive else
-        mnThreadId = osl::Thread::getCurrentIdentifier();
-#if OSL_DEBUG_LEVEL > 1
-    else if( mnThreadId != osl::Thread::getCurrentIdentifier() )
-    {
-        fprintf( stderr, "Yield mutex grabbed in different thread !\n" );
-        abort();
-    }
-#endif
-    mnCount = 1;
-    SolarMutexObject::release();
-    return nRet;
-#else
     g_error ("never called");
     return sal_True;
-#endif
 }
 
 void GtkYieldMutex::Ungrab( int nGrabs )
 {
-#ifdef HORRIBLE_OBSOLETE_YIELDMUTEX_IMPL
-    // this MUST only be called when leaving the callback
-    // that locked the mutex with Grab()
-    SolarMutexObject::acquire();
-    mnCount = nGrabs;
-    if( mnCount == 0 )
-        mnThreadId = 0;
-    SolarMutexObject::release();
-#else
     (void)nGrabs;
     g_error ("never called");
-#endif
 }
 
 SalVirtualDevice* GtkInstance::CreateVirtualDevice( SalGraphics *pG,


More information about the Libreoffice-commits mailing list