mirror of
https://github.com/edu4rdshl/gnome-shell.git
synced 2026-07-18 07:34:54 +00:00
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
This commit is contained in:
parent
a9d6cc921e
commit
a6d0e89ecb
1 changed files with 3 additions and 6 deletions
|
|
@ -901,12 +901,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");
|
||||
|
|
@ -1068,6 +1062,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);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue