unstick window to get it out of mru_list it should not be in; assert that
2003-12-12 Havoc Pennington <hp@redhat.com> * src/window.c (meta_window_free): unstick window to get it out of mru_list it should not be in; assert that window has been removed from all mru_list. Perhaps fixes #122016 crash.
This commit is contained in:
parent
0bb3361b73
commit
a92be6e319
@ -1,3 +1,9 @@
|
|||||||
|
2003-12-12 Havoc Pennington <hp@redhat.com>
|
||||||
|
|
||||||
|
* src/window.c (meta_window_free): unstick window to get it out of
|
||||||
|
mru_list it should not be in; assert that window has been removed
|
||||||
|
from all mru_list. Perhaps fixes #122016 crash.
|
||||||
|
|
||||||
2003-11-29 Havoc Pennington <hp@redhat.com>
|
2003-11-29 Havoc Pennington <hp@redhat.com>
|
||||||
|
|
||||||
* fix up compositing manager to somewhat work
|
* fix up compositing manager to somewhat work
|
||||||
|
23
src/window.c
23
src/window.c
@ -944,6 +944,12 @@ meta_window_free (MetaWindow *window)
|
|||||||
meta_window_unqueue_move_resize (window);
|
meta_window_unqueue_move_resize (window);
|
||||||
meta_window_unqueue_update_icon (window);
|
meta_window_unqueue_update_icon (window);
|
||||||
meta_window_free_delete_dialog (window);
|
meta_window_free_delete_dialog (window);
|
||||||
|
|
||||||
|
/* We need to unstick to remove the window from
|
||||||
|
* any workspace->mru_list for workspaces not
|
||||||
|
* in window->workspaces
|
||||||
|
*/
|
||||||
|
meta_window_unstick (window);
|
||||||
|
|
||||||
tmp = window->workspaces;
|
tmp = window->workspaces;
|
||||||
while (tmp != NULL)
|
while (tmp != NULL)
|
||||||
@ -960,6 +966,19 @@ meta_window_free (MetaWindow *window)
|
|||||||
|
|
||||||
g_assert (window->workspaces == NULL);
|
g_assert (window->workspaces == NULL);
|
||||||
|
|
||||||
|
#ifndef G_DISABLE_CHECKS
|
||||||
|
tmp = window->screen->workspaces;
|
||||||
|
while (tmp != NULL)
|
||||||
|
{
|
||||||
|
MetaWorkspace *workspace = tmp->data;
|
||||||
|
|
||||||
|
g_assert (g_list_find (workspace->windows, window) == NULL);
|
||||||
|
g_assert (g_list_find (workspace->mru_list, window) == NULL);
|
||||||
|
|
||||||
|
tmp = tmp->next;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
meta_stack_remove (window->screen->stack, window);
|
meta_stack_remove (window->screen->stack, window);
|
||||||
|
|
||||||
/* FIXME restore original size if window has maximized */
|
/* FIXME restore original size if window has maximized */
|
||||||
@ -3243,7 +3262,7 @@ meta_window_stick (MetaWindow *window)
|
|||||||
{
|
{
|
||||||
workspace = (MetaWorkspace *) tmp->data;
|
workspace = (MetaWorkspace *) tmp->data;
|
||||||
if (!g_list_find (workspace->mru_list, window))
|
if (!g_list_find (workspace->mru_list, window))
|
||||||
workspace->mru_list = g_list_append (workspace->mru_list, window);
|
workspace->mru_list = g_list_append (workspace->mru_list, window);
|
||||||
|
|
||||||
tmp = tmp->next;
|
tmp = tmp->next;
|
||||||
}
|
}
|
||||||
@ -3272,7 +3291,7 @@ meta_window_unstick (MetaWindow *window)
|
|||||||
{
|
{
|
||||||
workspace = (MetaWorkspace *) tmp->data;
|
workspace = (MetaWorkspace *) tmp->data;
|
||||||
if (!meta_workspace_contains_window (workspace, window))
|
if (!meta_workspace_contains_window (workspace, window))
|
||||||
workspace->mru_list = g_list_remove (workspace->mru_list, window);
|
workspace->mru_list = g_list_remove (workspace->mru_list, window);
|
||||||
tmp = tmp->next;
|
tmp = tmp->next;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -85,6 +85,7 @@ meta_workspace_free (MetaWorkspace *workspace)
|
|||||||
}
|
}
|
||||||
|
|
||||||
g_assert (workspace->windows == NULL);
|
g_assert (workspace->windows == NULL);
|
||||||
|
g_assert (workspace->mru_list == NULL);
|
||||||
|
|
||||||
screen = workspace->screen;
|
screen = workspace->screen;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user