diff --git a/org.kde.KWin.xml b/org.kde.KWin.xml
index 47ed80f91f..25afc0dcff 100644
--- a/org.kde.KWin.xml
+++ b/org.kde.KWin.xml
@@ -73,10 +73,10 @@
-
+
-
+
diff --git a/sm.cpp b/sm.cpp
index eb87976b63..ad3b5e2321 100644
--- a/sm.cpp
+++ b/sm.cpp
@@ -204,9 +204,15 @@ void Workspace::storeSubSession(const QString &name, QSet sessionIds
//cg.writeEntry( "desktop", currentDesktop());
}
-void Workspace::storeActivity(const QString &id)
+void Workspace::stopActivity(const QString &id)
{
- QStringList openActivities = openActivityList(); //FIXME please don't deadlock
+ //ugly hack to avoid dbus deadlocks
+ QMetaObject::invokeMethod(this, "reallyStopActivity", Qt::QueuedConnection, Q_ARG(QString, id));
+ }
+
+void Workspace::reallyStopActivity(const QString &id)
+ {
+ QStringList openActivities = openActivityList();
QSet saveSessionIds;
QSet dontCloseSessionIds;
@@ -328,7 +334,7 @@ void Workspace::loadSubSessionInfo(const QString &name)
addSessionInfo(cg);
}
-void Workspace::loadActivity(const QString &id)
+void Workspace::startActivity(const QString &id)
{
if (!allActivities_.contains(id))
return; //bogus id
diff --git a/workspace.h b/workspace.h
index b44e35b76d..8a07fe9794 100644
--- a/workspace.h
+++ b/workspace.h
@@ -449,8 +449,8 @@ class Workspace : public QObject, public KDecorationDefines
void toggleTiling();
void nextTileLayout();
void previousTileLayout();
- void storeActivity( const QString &id );
- void loadActivity( const QString &id );
+ void stopActivity( const QString &id );
+ void startActivity( const QString &id );
void setCurrentScreen( int new_screen );
@@ -769,6 +769,7 @@ class Workspace : public QObject, public KDecorationDefines
void updateCurrentActivity(const QString &new_activity);
void activityRemoved(const QString &activity);
void activityAdded(const QString &activity);
+ void reallyStopActivity( const QString &id ); //dbus deadlocks suck
protected:
bool keyPressMouseEmulation( XKeyEvent& ev );