Sophie

Sophie

distrib > Mandriva > mes5 > x86_64 > by-pkgid > 9f01e80eb6b847e4aa18d3ff15fb443e > files > 4

gnome-screensaver-2.24.0-1.1mdvmes5.2.src.rpm


http://git.gnome.org/browse/gnome-screensaver/commit/?id=2f597ea9f1f363277fd4dfc109fa41bbc6225aca

--- src/gs-manager.c	2008-08-20 21:35:13.000000000 -0400
+++ src/gs-manager.c.oden	2011-05-18 12:06:55.000000000 -0400
@@ -1449,6 +1449,10 @@ gs_manager_create_window_for_monitor (GS
         connect_window_signals (manager, window);
 
         manager->priv->windows = g_slist_append (manager->priv->windows, window);
+
+        if (manager->priv->active && !manager->priv->fading) {
+                gtk_widget_show (window);
+        }
 }
 
 static void
@@ -1470,21 +1474,25 @@ on_screen_monitors_changed (GdkScreen *s
         if (n_monitors > n_windows) {
                 /* add more windows */
                 for (i = n_windows; i < n_monitors; i++) {
-                        gs_manager_create_window_for_monitor (manager, screen, i - 1);
+                        gs_manager_create_window_for_monitor (manager, screen, i);
                 }
         } else {
                 /* remove the extra windows */
-                for (l = manager->priv->windows; l != NULL; l = l->next) {
+                l = manager->priv->windows;
+                while (l != NULL) {
                         GdkScreen *this_screen;
                         int        this_monitor;
+                        GSList    *next = l->next;
 
                         this_screen = gs_window_get_screen (GS_WINDOW (l->data));
                         this_monitor = gs_window_get_monitor (GS_WINDOW (l->data));
                         if (this_screen == screen && this_monitor >= n_monitors) {
                                 manager_maybe_stop_job_for_window (manager, GS_WINDOW (l->data));
+                                g_hash_table_remove (manager->priv->jobs, l->data);
                                 gs_window_destroy (GS_WINDOW (l->data));
                                 manager->priv->windows = g_slist_delete_link (manager->priv->windows, l);
                         }
+                        l = next;
                 }
         }
 }