Kaydet (Commit) 71f2aff7 authored tarafından Luboš Luňák's avatar Luboš Luňák

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
üst dd52330d
...@@ -166,8 +166,23 @@ void KDEXLib::Init() ...@@ -166,8 +166,23 @@ void KDEXLib::Init()
KCmdLineArgs::init( m_nFakeCmdLineArgs, m_pAppCmdLineArgs, kAboutData ); 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(); m_pApplication = new VCLKDEApplication();
kapp->disableSessionManagement(); if( session_manager != NULL )
{
setenv( "SESSION_MANAGER", session_manager, 1 );
free( session_manager );
}
KApplication::setQuitOnLastWindowClosed(false); KApplication::setQuitOnLastWindowClosed(false);
#if KDE_HAVE_GLIB #if KDE_HAVE_GLIB
......
...@@ -21,22 +21,14 @@ ...@@ -21,22 +21,14 @@
#define Region QtXRegion #define Region QtXRegion
#include <QSessionManager>
#include <kapplication.h> #include <kapplication.h>
#undef Region #undef Region
/* #i59042# override KApplications method for session management
* since it will interfere badly with our own.
*/
class VCLKDEApplication : public KApplication class VCLKDEApplication : public KApplication
{ {
public: public:
VCLKDEApplication(); VCLKDEApplication();
virtual void commitData(QSessionManager&) {};
virtual bool x11EventFilter(XEvent* event); virtual bool x11EventFilter(XEvent* event);
}; };
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment