diff --git a/0001-prevent-KDE-Qt-from-interfering-with-the-session-man.patch b/0001-prevent-KDE-Qt-from-interfering-with-the-session-man.patch new file mode 100644 index 0000000..2b48b45 --- /dev/null +++ b/0001-prevent-KDE-Qt-from-interfering-with-the-session-man.patch @@ -0,0 +1,76 @@ +From 71f2aff7a56cef4e133abad3c2e447c76c5ee1fe Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Lubo=C5=A1=20Lu=C5=88=C3=A1k?= +Date: Tue, 25 Mar 2014 12:20:16 +0100 +Subject: [PATCH] prevent KDE/Qt from interfering with the session manager + +I occassionally get lockups in IceProcessMessages() called from QtCore, +I'm actually not exactly sure why, as theoretically two connections +from one app shouldn't be a problem, but since LO does its own +session handling, there's no need to the KDE/Qt code to be involved, +so prevent it from connecting to the session manager altogether. + +Change-Id: Iebe20d4cb5403e5fea8bd5d8c1f69b62d1c2907b +--- + vcl/unx/kde4/KDEXLib.cxx | 17 ++++++++++++++++- + vcl/unx/kde4/VCLKDEApplication.hxx | 8 -------- + 2 files changed, 16 insertions(+), 9 deletions(-) + +diff --git a/vcl/unx/kde4/KDEXLib.cxx b/vcl/unx/kde4/KDEXLib.cxx +index 820d39a..e4900a7 100644 +--- a/vcl/unx/kde4/KDEXLib.cxx ++++ b/vcl/unx/kde4/KDEXLib.cxx +@@ -166,8 +166,23 @@ void KDEXLib::Init() + + KCmdLineArgs::init( m_nFakeCmdLineArgs, m_pAppCmdLineArgs, kAboutData ); + ++ // LO does its own session management, so prevent KDE/Qt from interfering ++ // (QApplication::disableSessionManagement(false) wouldn't quite do, ++ // since that still actually connects to the session manager, it just ++ // won't save the application data on session shutdown). ++ char* session_manager = NULL; ++ if( getenv( "SESSION_MANAGER" ) != NULL ) ++ { ++ session_manager = strdup( getenv( "SESSION_MANAGER" )); ++ unsetenv( "SESSION_MANAGER" ); ++ } + m_pApplication = new VCLKDEApplication(); +- kapp->disableSessionManagement(); ++ if( session_manager != NULL ) ++ { ++ setenv( "SESSION_MANAGER", session_manager, 1 ); ++ free( session_manager ); ++ } ++ + KApplication::setQuitOnLastWindowClosed(false); + + #if KDE_HAVE_GLIB +diff --git a/vcl/unx/kde4/VCLKDEApplication.hxx b/vcl/unx/kde4/VCLKDEApplication.hxx +index 412ee34..4ce0b2c 100644 +--- a/vcl/unx/kde4/VCLKDEApplication.hxx ++++ b/vcl/unx/kde4/VCLKDEApplication.hxx +@@ -21,22 +21,14 @@ + + #define Region QtXRegion + +-#include +- + #include + + #undef Region + +-/* #i59042# override KApplications method for session management +- * since it will interfere badly with our own. +- */ + class VCLKDEApplication : public KApplication + { + public: + VCLKDEApplication(); +- +- virtual void commitData(QSessionManager&) {}; +- + virtual bool x11EventFilter(XEvent* event); + }; + +-- +1.8.5.3 + diff --git a/libreoffice.spec b/libreoffice.spec index 6f7f2e4..84d1ca0 100644 --- a/libreoffice.spec +++ b/libreoffice.spec @@ -291,6 +291,7 @@ Patch27: 0001-rhbz-1080196-Delete-the-destination-first-then-paste.patch Patch28: 0001-Related-rhbz-1075951-abrt-crash-in-MSWordExportBase-.patch Patch29: 0001-drop-OnlyShowIn-from-.desktop-files.patch Patch30: 0001-Resolves-rhbz-1081176-don-t-jump-to-cursor-pos-when.patch +Patch31: 0001-prevent-KDE-Qt-from-interfering-with-the-session-man.patch %define instdir %{_libdir} %define baseinstdir %{instdir}/libreoffice @@ -2187,7 +2188,8 @@ update-desktop-database %{_datadir}/applications &> /dev/null || : %changelog * Fri Apr 11 2014 Caolán McNamara - 1:4.2.3.3-2 -- Related: rhbz#1081176 don't jump to cursor pos when we don't want to +- Resolves: rhbz#1081176 don't jump to cursor pos when we don't want to +- Related: rhbz#1085916 kde startup woes * Sat Apr 05 2014 David Tardon - 1:4.2.3.3-1 - update to 4.2.3 rc3