From a3d5ebbdd70583289b96a74e86dd88f602bea31a Mon Sep 17 00:00:00 2001 From: tpearson Date: Thu, 11 Aug 2011 22:17:04 +0000 Subject: Fix major kompmgr flickering on sesson startup Note that there is still a (small) single flicker that occurs as the composition is engaged, however this is an Xorg design defect and can only be fixed by loading composition support in kdm git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdebase@1246526 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- kwin/workspace.cpp | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'kwin/workspace.cpp') diff --git a/kwin/workspace.cpp b/kwin/workspace.cpp index acd3387da..6829b3ccb 100644 --- a/kwin/workspace.cpp +++ b/kwin/workspace.cpp @@ -2564,9 +2564,24 @@ void Workspace::helperDialog( const TQString& message, const Client* c ) // kompmgr stuff - + void Workspace::startKompmgr() { + // See if the desktop is loaded yet + Atom type; + int format; + unsigned long length, after; + unsigned char* data_root; + Atom prop_root; + prop_root = XInternAtom(qt_xdisplay(), "_XROOTPMAP_ID", False); + if( XGetWindowProperty( qt_xdisplay(), qt_xrootwin(), prop_root, 0L, 1L, False, AnyPropertyType, &type, &format, &length, &after, &data_root) == Success && data_root != NULL ) { + // Root pixmap is available; OK to load... + } + else { + // Try again a bit later! + TQTimer::singleShot( 200, this, TQT_SLOT(startKompmgr()) ); + return; + } if (!kompmgr || kompmgr->isRunning()) return; if (!kompmgr->start(KProcess::OwnGroup, KProcess::Stderr)) -- cgit v1.2.3