[Libreoffice-commits] .: sfx2/inc

David Tardon dtardon at kemper.freedesktop.org
Thu Apr 28 06:08:03 PDT 2011


 sfx2/inc/sfx2/shell.hxx |   54 +++++++++++++++++++++---------------------------
 1 file changed, 24 insertions(+), 30 deletions(-)

New commits:
commit 33df3dd99c464f7c590ada99537ef3483d8fbe9b
Author: David Tardon <dtardon at redhat.com>
Date:   Thu Apr 28 12:32:28 2011 +0200

    this wasn't so good idea after all--reverting for now

diff --git a/sfx2/inc/sfx2/shell.hxx b/sfx2/inc/sfx2/shell.hxx
index ee550b3..04d4aac 100644
--- a/sfx2/inc/sfx2/shell.hxx
+++ b/sfx2/inc/sfx2/shell.hxx
@@ -28,13 +28,10 @@
 #ifndef _SFX_SHELL_HXX
 #define _SFX_SHELL_HXX
 
-#include <boost/shared_ptr.hpp>
-
 #include "sal/config.h"
 #include "sfx2/dllapi.h"
 #include "sal/types.h"
 #include <com/sun/star/embed/VerbDescriptor.hpp>
-#include <rtl/instance.hxx>
 #include <tools/debug.hxx>
 #include <tools/rtti.hxx>
 #include <svl/brdcst.hxx>
@@ -314,6 +311,9 @@ inline void SfxShell::SetPool
 #define SFX_SLOTMAP_ARG(ShellClass) static SfxSlot a##ShellClass##Slots_Impl[] =
 
 #define SFX_DECL_INTERFACE(nId) 											\
+            static SfxInterface*                pInterface;                 \
+        private:                                                            \
+            static void 						InitInterface_Impl();		\
         public:                                                             \
             static const SfxFormalArgument*     pSfxFormalArgs_Impl;        \
             static SfxInterface*                GetStaticInterface();       \
@@ -323,27 +323,21 @@ inline void SfxShell::SetPool
 
 #define SFX_IMPL_INTERFACE(Class,SuperClass,NameResId)                      \
                                                                             \
+    SfxInterface* Class::pInterface = 0;                                    \
     const SfxFormalArgument* Class::pSfxFormalArgs_Impl = a##Class##Args_Impl;\
-    static void Init##Class##Interface_Impl(boost::shared_ptr<SfxInterface>& pInterface); \
-    struct Class##Interface_Impl \
-        : public rtl::StaticWithInit<boost::shared_ptr<SfxInterface>, Class##Interface_Impl> \
-    { \
-        boost::shared_ptr<SfxInterface> operator()() const \
-        { \
-            boost::shared_ptr<SfxInterface> pIface( \
-                    new SfxInterface(                                           \
-                #Class, NameResId, Class::GetInterfaceId(),                            \
-                SuperClass::GetStaticInterface(),                               \
-                a##Class##Slots_Impl[0],                                        \
-                (sal_uInt16) (sizeof(a##Class##Slots_Impl) / sizeof(SfxSlot) ) ) ) \
-                ; \
-            Init##Class##Interface_Impl(pIface); \
-            return pIface; \
-        } \
-    }; \
     SfxInterface* Class::GetStaticInterface()                      \
     {                                                                       \
-        return get_pointer(Class##Interface_Impl::get()); \
+        if ( !pInterface )                                                  \
+        {                                                                   \
+            pInterface =                                                    \
+                new SfxInterface(                                           \
+            #Class, NameResId, GetInterfaceId(),                            \
+            SuperClass::GetStaticInterface(),                               \
+            a##Class##Slots_Impl[0],                                        \
+            (sal_uInt16) (sizeof(a##Class##Slots_Impl) / sizeof(SfxSlot) ) );   \
+            InitInterface_Impl();                                           \
+        }                                                                   \
+        return pInterface;                                                  \
     }                                                                       \
                                                                             \
     SfxInterface* Class::GetInterface() const                               \
@@ -356,7 +350,7 @@ inline void SfxShell::SetPool
         GetStaticInterface()->Register(pMod);                               \
     }                                                                       \
                                                                             \
-    void Init##Class##Interface_Impl(boost::shared_ptr<SfxInterface>& pInterface)
+    void Class::InitInterface_Impl()
 
 #define SFX_POSITION_MASK				0x000F
 #define SFX_VISIBILITY_MASK 			0xFFF0
@@ -375,28 +369,28 @@ inline void SfxShell::SetPool
 #define SFX_VISIBILITY_NOCONTEXT        0xFFFF  // Always visable
 
 #define SFX_OBJECTBAR_REGISTRATION(nPos,rResId) \
-        pInterface->RegisterObjectBar( nPos, rResId )
+        GetStaticInterface()->RegisterObjectBar( nPos, rResId )
 
 #define SFX_FEATURED_OBJECTBAR_REGISTRATION(nPos,rResId,nFeature) \
-        pInterface->RegisterObjectBar( nPos, rResId, nFeature )
+        GetStaticInterface()->RegisterObjectBar( nPos, rResId, nFeature )
 
 #define SFX_CHILDWINDOW_REGISTRATION(nId) \
-        pInterface->RegisterChildWindow( nId, (sal_Bool) sal_False )
+        GetStaticInterface()->RegisterChildWindow( nId, (sal_Bool) sal_False )
 
 #define SFX_FEATURED_CHILDWINDOW_REGISTRATION(nId,nFeature) \
-        pInterface->RegisterChildWindow( nId, (sal_Bool) sal_False, nFeature )
+        GetStaticInterface()->RegisterChildWindow( nId, (sal_Bool) sal_False, nFeature )
 
 #define SFX_CHILDWINDOW_CONTEXT_REGISTRATION(nId) \
-        pInterface->RegisterChildWindow( nId, (sal_Bool) sal_True )
+        GetStaticInterface()->RegisterChildWindow( nId, (sal_Bool) sal_True )
 
 #define SFX_POPUPMENU_REGISTRATION(rResId) \
-        pInterface->RegisterPopupMenu( rResId )
+        GetStaticInterface()->RegisterPopupMenu( rResId )
 
 #define SFX_OBJECTMENU_REGISTRATION(nPos,rResId) \
-        pInterface->RegisterObjectMenu( nPos, rResId )
+        GetStaticInterface()->RegisterObjectMenu( nPos, rResId )
 
 #define SFX_STATUSBAR_REGISTRATION(rResId) \
-        pInterface->RegisterStatusBar( rResId )
+        GetStaticInterface()->RegisterStatusBar( rResId )
 
 #endif
 


More information about the Libreoffice-commits mailing list