diff options
author | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2011-08-11 22:17:04 +0000 |
---|---|---|
committer | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2011-08-11 22:17:04 +0000 |
commit | a3d5ebbdd70583289b96a74e86dd88f602bea31a (patch) | |
tree | 0543b38ce89c6e73e68a038ef933dfa1b965b417 /kwin/workspace.cpp | |
parent | 4f1f76a2d336f560ddc6aa5c01f67ceb42ddcbee (diff) | |
download | tdebase-a3d5ebbdd70583289b96a74e86dd88f602bea31a.tar.gz tdebase-a3d5ebbdd70583289b96a74e86dd88f602bea31a.zip |
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
Diffstat (limited to 'kwin/workspace.cpp')
-rw-r--r-- | kwin/workspace.cpp | 17 |
1 files changed, 16 insertions, 1 deletions
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)) |