[libreoffice] Resolves: rhbz#652695 release desktop in timeout
Caolan McNamara
caolanm at fedoraproject.org
Fri Nov 26 10:26:21 UTC 2010
commit a610ba3af2098b94e92de1dddbe76b225366897d
Author: Caolán McNamara <caolanm at redhat.com>
Date: Fri Nov 26 10:26:27 2010 +0000
Resolves: rhbz#652695 release desktop in timeout
0001-destroydesktop.in.timeout.patch | 51 ++++++++++++++++++++++++++++++++++
libreoffice.spec | 5 ++-
2 files changed, 55 insertions(+), 1 deletions(-)
---
diff --git a/0001-destroydesktop.in.timeout.patch b/0001-destroydesktop.in.timeout.patch
new file mode 100644
index 0000000..7ae1a77
--- /dev/null
+++ b/0001-destroydesktop.in.timeout.patch
@@ -0,0 +1,51 @@
+@@ -, +, @@
+ fix crash in exiting via disabling lone quick-starter, terminate at idle
+--- a/sfx2/source/appl/shutdownicon.cxx
++++ a/sfx2/source/appl/shutdownicon.cxx
+@@ -182,6 +182,9 @@ bool ShutdownIcon::LoadModule( osl::Module **pModule,
+ return true;
+ }
+
++// These two timeouts are necessary to avoid there being
++// plugin frames still on the stack, after unloading that
++// code, causing a crash during disabling / termination.
+ class IdleUnloader : Timer
+ {
+ ::osl::Module *m_pModule;
+@@ -199,6 +202,22 @@ public:
+ }
+ };
+
++class IdleTerminate : Timer
++{
++ Reference< XDesktop > m_xDesktop;
++public:
++ IdleTerminate (Reference< XDesktop > xDesktop)
++ {
++ m_xDesktop = xDesktop;
++ Start();
++ }
++ virtual void Timeout()
++ {
++ m_xDesktop->terminate();
++ delete this;
++ }
++};
++
+ void ShutdownIcon::initSystray()
+ {
+ if (m_bInitialized)
+@@ -576,11 +595,8 @@ void ShutdownIcon::terminateDesktop()
+ if ( xSupplier.is() )
+ {
+ Reference< XIndexAccess > xTasks ( xSupplier->getFrames(), UNO_QUERY );
+- if( xTasks.is() )
+- {
+- if( xTasks->getCount() < 1 )
+- xDesktop->terminate();
+- }
++ if( xTasks.is() && xTasks->getCount() < 1 )
++ new IdleTerminate( xDesktop );
+ }
+
+ // remove the instance pointer
diff --git a/libreoffice.spec b/libreoffice.spec
index 5b02908..58c9a64 100644
--- a/libreoffice.spec
+++ b/libreoffice.spec
@@ -96,6 +96,7 @@ Patch12: turn-script-providers-into-extensions.patch
Patch13: qstart.dont-forceenabled-on-post-reg-restart.patch
Patch14: libreoffice-installfix.patch
Patch15: exit.quickstarter.when.deleted.patch
+Patch16: 0001-destroydesktop.in.timeout.patch
%{!?python_sitearch: %global python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(1))")}
%define instdir %{_libdir}
@@ -708,6 +709,7 @@ cp -p %{SOURCE20} external/unowinreg/unowinreg.dll
%patch13 -p1 -b .qstart.dont-forceenabled-on-post-reg-restart.patch
%patch14 -p1 -b .libreoffice-installfix.patch
%patch15 -p1 -b .exit.quickstarter.when.deleted.patch
+%patch16 -p1 -b .0001-destroydesktop.in.timeout.patch
touch scripting/source/pyprov/delzip
touch scripting/util/provider/beanshell/delzip
touch scripting/util/provider/javascript/delzip
@@ -2012,8 +2014,9 @@ update-desktop-database %{_datadir}/applications &> /dev/null || :
%changelog
-* Thu Nov 25 2010 Caolán McNamara <caolanm at redhat.com> 3.2.99.3-2
+* Fri Nov 26 2010 Caolán McNamara <caolanm at redhat.com> 3.2.99.3-2
- Resolves: rhbz#610103 exit quickstarter when libs deleted
+- Resolves: rhbz#652695 release desktop in timeout
* Thu Nov 18 2010 Caolán McNamara <caolanm at redhat.com 3.2.99.3-1
- next Libreoffice milestone
More information about the scm-commits
mailing list