[gnome-shell] shell-app: Unref running state when window count drops to zero



commit 73f6e75d8dd6219ff8bf0f8b210c7174e0898e77
Author: Florian Müllner <fmuellner gnome org>
Date:   Thu Jan 23 11:51:44 2014 -0500

    shell-app: Unref running state when window count drops to zero
    
    With the lastest ShellApp changes, an app is considered stopped
    when the last "interesting" window is closed. However the app
    may still track non-interesting windows, so if we unref the
    running state on the state transition, we hit an assertion later-on
    when trying to remove the non-interesting window.
    Fix this by keeping the running state around until the last window
    is closed.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=722840

 src/shell-app.c |    9 +++------
 1 files changed, 3 insertions(+), 6 deletions(-)
---
diff --git a/src/shell-app.c b/src/shell-app.c
index 83b96c1..9dabeba 100644
--- a/src/shell-app.c
+++ b/src/shell-app.c
@@ -891,12 +891,6 @@ shell_app_state_transition (ShellApp      *app,
                       state == SHELL_APP_STATE_STARTING));
   app->state = state;
 
-  if (app->state == SHELL_APP_STATE_STOPPED && app->running_state)
-    {
-      unref_running_state (app->running_state);
-      app->running_state = NULL;
-    }
-
   _shell_app_system_notify_app_state_changed (shell_app_system_get_default (), app);
 
   g_object_notify (G_OBJECT (app), "state");
@@ -1058,6 +1052,9 @@ _shell_app_remove_window (ShellApp   *app,
   if (app->running_state->interesting_windows == 0)
     shell_app_state_transition (app, SHELL_APP_STATE_STOPPED);
 
+  if (app->running_state && app->running_state->windows == NULL)
+    g_clear_pointer (&app->running_state, unref_running_state);
+
   g_signal_emit (app, shell_app_signals[WINDOWS_CHANGED], 0);
 }
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]