set event mask on root window to 0 so other window managers (such as

2002-01-04  Havoc Pennington  <hp@pobox.com>

	* src/screen.c (meta_screen_free): set event mask on root window
	to 0 so other window managers (such as ourselves restarting) can
	start up; addresses race condition on restart where the old WM
	still had RedirectMask when the new WM was trying to start up.

	* src/display.c (meta_display_close): free each screen

	* src/window.c (meta_window_show): always focus new windows in
	click-to-focus mode
This commit is contained in:
Havoc Pennington 2002-01-04 22:18:10 +00:00 committed by Havoc Pennington
parent 501a60ab20
commit 60f48e44ff
4 changed files with 36 additions and 1 deletions

View File

@ -1,3 +1,15 @@
2002-01-04 Havoc Pennington <hp@pobox.com>
* src/screen.c (meta_screen_free): set event mask on root window
to 0 so other window managers (such as ourselves restarting) can
start up; addresses race condition on restart where the old WM
still had RedirectMask when the new WM was trying to start up.
* src/display.c (meta_display_close): free each screen
* src/window.c (meta_window_show): always focus new windows in
click-to-focus mode
2002-01-03 Havoc Pennington <hp@pobox.com>
* src/window.c: use meta_XFree not XFree

View File

@ -433,6 +433,18 @@ meta_display_close (MetaDisplay *display)
event_callback,
display);
#endif
/* Free all screens */
tmp = display->screens;
while (tmp != NULL)
{
MetaScreen *screen = tmp->data;
meta_screen_free (screen);
tmp = tmp->next;
}
g_slist_free (display->screens);
display->screens = NULL;
/* Must be after all calls to meta_window_free() since they
* unregister windows

View File

@ -242,7 +242,7 @@ meta_screen_new (MetaDisplay *display,
void
meta_screen_free (MetaScreen *screen)
{
{
meta_prefs_remove_listener (prefs_changed_callback, screen);
meta_screen_ungrab_keys (screen);
@ -250,6 +250,12 @@ meta_screen_free (MetaScreen *screen)
meta_ui_free (screen->ui);
meta_stack_free (screen->stack);
meta_error_trap_push (screen->display);
XSelectInput (screen->display->xdisplay, screen->xroot, 0);
if (meta_error_trap_pop (screen->display) != Success)
meta_warning (_("Could not release screen %d on display '%s'\n"),
screen->number, screen->display->name);
g_free (screen->screen_name);
g_free (screen);

View File

@ -1108,6 +1108,11 @@ meta_window_show (MetaWindow *window)
meta_display_get_current_time (window->display));
}
}
/* Always focus new windows in click-to-focus */
if (meta_prefs_get_focus_mode () == META_FOCUS_MODE_CLICK)
meta_window_focus (window,
meta_display_get_current_time (window->display));
}
}