--- trunk/KDE/kdebase/workspace/kwin/composite.cpp 2008/07/24 13:00:06 837331
+++ trunk/KDE/kdebase/workspace/kwin/composite.cpp 2008/07/28 11:49:43 838646
@@ -253,6 +253,9 @@
}
delete popup; // force re-creation of the Alt+F3 popup (opacity option)
popup = NULL;
+ // discard all Deleted windows (#152914)
+ while( !deleted.isEmpty())
+ deleted.first()->discard( Allowed );
#endif
}
--- trunk/KDE/kdebase/workspace/kwin/deleted.cpp 2008/05/20 22:01:49 810520
+++ trunk/KDE/kdebase/workspace/kwin/deleted.cpp 2008/07/28 11:49:43 838646
@@ -48,6 +48,13 @@
return d;
}
+// to be used only from Workspace::finishCompositing()
+void Deleted::discard( allowed_t )
+ {
+ delete_refcount = 0;
+ delete this;
+ }
+
void Deleted::copyToDeleted( Toplevel* c )
{
assert( dynamic_cast< Deleted* >( c ) == NULL );
--- trunk/KDE/kdebase/workspace/kwin/deleted.h 2007/11/27 19:40:25 742302
+++ trunk/KDE/kdebase/workspace/kwin/deleted.h 2008/07/28 11:49:43 838646
@@ -35,6 +35,7 @@
// used by effects to keep the window around for e.g. fadeout effects when it's destroyed
void refWindow();
void unrefWindow( bool delay = false );
+ void discard( allowed_t );
virtual int desktop() const;
virtual QPoint clientPos() const;
virtual QSize clientSize() const;