|
|
52af691 |
diff -up gnome-screensaver-2.28.0/src/gs-manager.c.multihead-issues gnome-screensaver-2.28.0/src/gs-manager.c
|
|
|
52af691 |
--- gnome-screensaver-2.28.0/src/gs-manager.c.multihead-issues 2009-08-19 19:19:14.000000000 -0400
|
|
|
52af691 |
+++ gnome-screensaver-2.28.0/src/gs-manager.c 2009-10-23 19:48:08.306135389 -0400
|
|
|
52af691 |
@@ -1450,6 +1450,9 @@ gs_manager_create_window_for_monitor (GS
|
|
|
52af691 |
connect_window_signals (manager, window);
|
|
|
52af691 |
|
|
|
52af691 |
manager->priv->windows = g_slist_append (manager->priv->windows, window);
|
|
|
52af691 |
+
|
|
|
52af691 |
+ if (manager->priv->active && !manager->priv->fading)
|
|
|
52af691 |
+ gtk_widget_show (window);
|
|
|
52af691 |
}
|
|
|
52af691 |
|
|
|
52af691 |
static void
|
|
|
52af691 |
@@ -1471,21 +1474,25 @@ on_screen_monitors_changed (GdkScreen *s
|
|
|
52af691 |
if (n_monitors > n_windows) {
|
|
|
52af691 |
/* add more windows */
|
|
|
52af691 |
for (i = n_windows; i < n_monitors; i++) {
|
|
|
52af691 |
- gs_manager_create_window_for_monitor (manager, screen, i - 1);
|
|
|
52af691 |
+ gs_manager_create_window_for_monitor (manager, screen, i);
|
|
|
52af691 |
}
|
|
|
52af691 |
} else {
|
|
|
52af691 |
/* remove the extra windows */
|
|
|
52af691 |
- for (l = manager->priv->windows; l != NULL; l = l->next) {
|
|
|
52af691 |
+ l = manager->priv->windows;
|
|
|
52af691 |
+ while (l != NULL) {
|
|
|
52af691 |
GdkScreen *this_screen;
|
|
|
52af691 |
int this_monitor;
|
|
|
52af691 |
+ GSList *next = l->next;
|
|
|
52af691 |
|
|
|
52af691 |
this_screen = gs_window_get_screen (GS_WINDOW (l->data));
|
|
|
52af691 |
this_monitor = gs_window_get_monitor (GS_WINDOW (l->data));
|
|
|
52af691 |
if (this_screen == screen && this_monitor >= n_monitors) {
|
|
|
52af691 |
manager_maybe_stop_job_for_window (manager, GS_WINDOW (l->data));
|
|
|
52af691 |
+ g_hash_table_remove (manager->priv->jobs, l->data);
|
|
|
52af691 |
gs_window_destroy (GS_WINDOW (l->data));
|
|
|
52af691 |
manager->priv->windows = g_slist_delete_link (manager->priv->windows, l);
|
|
|
52af691 |
}
|
|
|
52af691 |
+ l = next;
|
|
|
52af691 |
}
|
|
|
52af691 |
}
|
|
|
52af691 |
}
|