[ooo-build-commit] patches/dev300
René Engelhard
rene at kemper.freedesktop.org
Mon Nov 30 02:37:41 PST 2009
patches/dev300/apply | 3
patches/dev300/cws-qstartfix2.diff | 164 +++++++++++++++++++++++++++++++++++++
2 files changed, 167 insertions(+)
New commits:
commit 9a68719269dd3d3f7169b952ae5db9c9aec73a43
Author: Rene Engelhard <rene at debian.org>
Date: Mon Nov 30 11:35:21 2009 +0100
backport cws qstartfix2
* patches/dev300/cws-qstartfix2.diff: add
* patches/dev300/apply: add cws-qstartfix2.diff to CWSBackports
diff --git a/patches/dev300/apply b/patches/dev300/apply
index 52b03ff..72de12a 100644
--- a/patches/dev300/apply
+++ b/patches/dev300/apply
@@ -206,6 +206,9 @@ cws-koheichart02-xmloff.diff, kohei
cws-koheicopyborder-sc.diff, kohei
cws-koheicopyborder-svx.diff, kohei
+# fix QuickStarter crash on exit
+cws-qstartfix2.diff, i#101245, mmeeks
+
[ LinuxOnly ]
# Don't stat tons of config files we don't need to read on startup
speed-configmgr.diff, i#56783, michael
diff --git a/patches/dev300/cws-qstartfix2.diff b/patches/dev300/cws-qstartfix2.diff
new file mode 100644
index 0000000..2920ded
--- /dev/null
+++ b/patches/dev300/cws-qstartfix2.diff
@@ -0,0 +1,164 @@
+--- sfx2/source/appl/shutdownicon.cxx
++++ sfx2/source/appl/shutdownicon.cxx
+@@ -69,6 +69,7 @@
+ #include <unistd.h>
+ #include <errno.h>
+ #endif
++#include <vcl/timer.hxx>
+
+ #include "sfxresid.hxx"
+
+@@ -186,6 +187,23 @@
+ return true;
+ }
+
++class IdleUnloader : Timer
++{
++ ::osl::Module *m_pModule;
++public:
++ IdleUnloader (::osl::Module **pModule) :
++ m_pModule (*pModule)
++ {
++ *pModule = NULL;
++ Start();
++ }
++ virtual void Timeout()
++ {
++ delete m_pModule;
++ delete this;
++ }
++};
++
+ void ShutdownIcon::initSystray()
+ {
+ if (m_bInitialized)
+@@ -201,15 +221,15 @@
+ {
+ if (!m_bInitialized)
+ return;
++
+ if (m_pDeInitSystray)
+ m_pDeInitSystray();
+
+ m_bVeto = false;
+ m_pInitSystray = 0;
+ m_pDeInitSystray = 0;
+- if (m_pPlugin)
+- delete m_pPlugin;
+- m_pPlugin = 0;
++ new IdleUnloader (&m_pPlugin);
++
+ delete m_pFileDlg;
+ m_pFileDlg = NULL;
+ m_bInitialized = false;
+@@ -228,6 +249,7 @@
+ ShutdownIcon::~ShutdownIcon()
+ {
+ deInitSystray();
++ new IdleUnloader (&m_pPlugin);
+ }
+
+ // ---------------------------------------------------------------------------
+@@ -853,9 +884,11 @@
+ ::osl::File::getFileURLFromSystemPath( aShortcut, aShortcutUrl );
+ ::osl::File::remove( aShortcutUrl );
+ #ifdef UNX
+- ShutdownIcon *pIcon = getInstance();
+- if( pIcon )
+- pIcon->deInitSystray();
++ if (pShutdownIcon)
++ {
++ ShutdownIcon *pIcon = getInstance();
++ pIcon->deInitSystray();
++ }
+ #endif
+ }
+ #elif defined OS2
+
+--- libegg/source/eggtrayicon.c
++++ libegg/source/eggtrayicon.c
+@@ -76,6 +76,14 @@
+ static void egg_tray_icon_manager_window_destroyed (EggTrayIcon *icon);
+ #endif
+
++/*
++ * This is made somewhat more 'interesting' by the facts that:
++ * a) GTypePlugin is a foul & tangled mess
++ * b) We may have been unloaded, and left an invalid
++ * EggTrayIcon class lying around in the GType database,
++ * we could use GTypePlugin to fix this, but see a) -
++ * this is far easier and simpler.
++ */
+ GType
+ egg_tray_icon_get_type (void)
+ {
+@@ -88,18 +96,23 @@
+ sizeof (EggTrayIconClass),
+ (GBaseInitFunc) NULL,
+ (GBaseFinalizeFunc) NULL,
+- (GClassInitFunc) egg_tray_icon_class_init,
++ (GClassInitFunc) NULL, /* class_init */
+ NULL, /* class_finalize */
+ NULL, /* class_data */
+ sizeof (EggTrayIcon),
+ 0, /* n_preallocs */
+- (GInstanceInitFunc) egg_tray_icon_init,
++ (GInstanceInitFunc) NULL, /* instance_init */
+ NULL
+ };
+
+- our_type = g_type_register_static (GTK_TYPE_PLUG, "EggTrayIcon", &our_info, 0);
++ our_type = g_type_from_name ("EggTrayIcon");
++ if (!our_type)
++ our_type = g_type_register_static (GTK_TYPE_PLUG, "EggTrayIcon", &our_info, 0);
+ }
+
++ /* always overwrite the function pointers */
++ egg_tray_icon_class_init (g_type_class_ref (our_type));
++
+ return our_type;
+ }
+
+@@ -128,22 +141,15 @@
+
+ container_class->add = egg_tray_icon_add;
+
+- g_object_class_install_property (gobject_class,
+- PROP_ORIENTATION,
+- g_param_spec_enum ("orientation",
+- _("Orientation"),
+- _("The orientation of the tray."),
+- GTK_TYPE_ORIENTATION,
+- GTK_ORIENTATION_HORIZONTAL,
+- G_PARAM_READABLE));
+-
+-#if defined (GDK_WINDOWING_X11)
+- /* Nothing */
+-#elif defined (GDK_WINDOWING_WIN32)
+- g_warning ("Port eggtrayicon to Win32");
+-#else
+- g_warning ("Port eggtrayicon to this GTK+ backend");
+-#endif
++ if (!g_object_class_find_property (gobject_class, "orientation"))
++ g_object_class_install_property (gobject_class,
++ PROP_ORIENTATION,
++ g_param_spec_enum ("orientation",
++ "Orientation",
++ "The orientation of the tray.",
++ GTK_TYPE_ORIENTATION,
++ GTK_ORIENTATION_HORIZONTAL,
++ G_PARAM_READABLE));
+ }
+
+ static void
+@@ -471,7 +477,9 @@
+ EggTrayIcon*
+ egg_tray_icon_new (const gchar *name)
+ {
+- return g_object_new (EGG_TYPE_TRAY_ICON, "title", name, NULL);
++ EggTrayIcon *icon = g_object_new (EGG_TYPE_TRAY_ICON, "title", name, NULL);
++ egg_tray_icon_init (icon);
++ return icon;
+ }
+
+ guint
More information about the ooo-build-commit
mailing list