Hello community,

here is the log from the commit of package cinnamon-screensaver for 
openSUSE:Factory checked in at 2017-08-22 11:11:02
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/cinnamon-screensaver (Old)
 and      /work/SRC/openSUSE:Factory/.cinnamon-screensaver.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "cinnamon-screensaver"

Tue Aug 22 11:11:02 2017 rev:10 rq:518013 version:3.4.2

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/cinnamon-screensaver/cinnamon-screensaver.changes    
    2017-06-26 15:56:52.728609957 +0200
+++ 
/work/SRC/openSUSE:Factory/.cinnamon-screensaver.new/cinnamon-screensaver.changes
   2017-08-22 11:11:10.287340560 +0200
@@ -1,0 +2,28 @@
+Sun Aug 20 16:09:40 UTC 2017 - [email protected]
+
+- Update to version 3.4.2:
+  * stage.py: Kill any screensaver plugins when destroying all of
+    the widgets - this will leave unfinished plugin processes.
+  * framedImage: Render images at their native size using the theme
+    value as the maximum size, rather than desired size.
+    This ensures the image displays at its best possible size for
+    quality, but still makes sure an oversize image doesn't break
+    anything.
+  * stage.py: Don't re-allocate the floating widgets unless
+    necessary to prevent obscuring of the unlock widget. This
+    prevents the small jump of the clock when waking the computer,
+    depending on settings.
+  * framedImage: Remove some dead lines, use the correct css
+    property, update commenting.
+  * Fix a typo in a GTK+ 3.20 CSS file.
+  * clock: Update to use new wall-clock api to set the correct
+    update interval depending on the provided date/time format.
+  * Don't lock the screen in live or guest sessions.
+  * framedImage.py: Stop using CSS for image size - since we now
+    use the image's native size if it is reasonable to do so,
+    there's no need for a theme to be involved. Just hardcode a
+    sane maximum and keep images that size or less. is not valid
+    CSS (even though that's what we're using min-height for here).
+  * Remove old webkit2-3.0 support.
+
+-------------------------------------------------------------------

Old:
----
  cinnamon-screensaver-3.4.1.tar.gz

New:
----
  cinnamon-screensaver-3.4.2.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ cinnamon-screensaver.spec ++++++
--- /var/tmp/diff_new_pack.m666Lh/_old  2017-08-22 11:11:10.991241447 +0200
+++ /var/tmp/diff_new_pack.m666Lh/_new  2017-08-22 11:11:10.995240883 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           cinnamon-screensaver
-Version:        3.4.1
+Version:        3.4.2
 Release:        0
 Summary:        Cinnamon screensaver and locker
 License:        GPL-2.0+
@@ -101,7 +101,6 @@
 %icon_theme_cache_postun
 
 %files
-%defattr(-,root,root)
 %doc AUTHORS COPYING* README debian/changelog
 %config %{_sysconfdir}/pam.d/cinnamon-screensaver
 %{_bindir}/%{name}

++++++ cinnamon-screensaver-3.4.1.tar.gz -> cinnamon-screensaver-3.4.2.tar.gz 
++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cinnamon-screensaver-3.4.1/.github/ISSUE_TEMPLATE.md 
new/cinnamon-screensaver-3.4.2/.github/ISSUE_TEMPLATE.md
--- old/cinnamon-screensaver-3.4.1/.github/ISSUE_TEMPLATE.md    1970-01-01 
01:00:00.000000000 +0100
+++ new/cinnamon-screensaver-3.4.2/.github/ISSUE_TEMPLATE.md    2017-08-08 
13:14:01.000000000 +0200
@@ -0,0 +1,21 @@
+
+```
+ * Cinnamon-Screensaver version (cinnamon-screensaver --version)
+ * Distribution - (Mint 17.2, Arch, Fedora 25, etc...)
+ * Graphics hardware *and* driver used
+ * 32 or 64 bit
+ ```
+
+**Issue**
+
+
+
+**Steps to reproduce**
+
+
+
+**Expected behaviour**
+
+
+
+**Other information**
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cinnamon-screensaver-3.4.1/configure.ac 
new/cinnamon-screensaver-3.4.2/configure.ac
--- old/cinnamon-screensaver-3.4.1/configure.ac 2017-06-20 15:40:52.000000000 
+0200
+++ new/cinnamon-screensaver-3.4.2/configure.ac 2017-08-08 13:14:01.000000000 
+0200
@@ -2,7 +2,7 @@
 
 AC_PREREQ(2.60)
 AC_INIT([cinnamon-screensaver],
-        [3.4.1],
+        [3.4.2],
         [https://github.com/linuxmint/cinnamon-screensaver/issues])
 
 PKG_PROG_PKG_CONFIG([0.26])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cinnamon-screensaver-3.4.1/debian/changelog 
new/cinnamon-screensaver-3.4.2/debian/changelog
--- old/cinnamon-screensaver-3.4.1/debian/changelog     2017-06-20 
15:40:52.000000000 +0200
+++ new/cinnamon-screensaver-3.4.2/debian/changelog     2017-08-08 
13:14:01.000000000 +0200
@@ -1,3 +1,14 @@
+cinnamon-screensaver (3.4.2) sonya; urgency=medium
+
+  [ Michael Webster ]
+  * add an issue template
+  * CsScreen: Fix hotplug/screen change detection and response, other issues.
+  * logindClient.py: Produce a more helpful message when logind is running, 
but we're unable to figure out a valid session id.
+  * manager/stage: Allow a second activation trigger to override a previous.
+  * manager.py: Force secondary activations to be immediate. (prevents flash)
+
+ -- Clement Lefebvre <[email protected]>  Tue, 08 Aug 2017 13:11:48 +0200
+
 cinnamon-screensaver (3.4.1) sonya; urgency=medium
 
   [ Michael Webster ]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/cinnamon-screensaver-3.4.1/libcscreensaver/cs-screen-x11.c 
new/cinnamon-screensaver-3.4.2/libcscreensaver/cs-screen-x11.c
--- old/cinnamon-screensaver-3.4.1/libcscreensaver/cs-screen-x11.c      
2017-06-20 15:40:52.000000000 +0200
+++ new/cinnamon-screensaver-3.4.2/libcscreensaver/cs-screen-x11.c      
2017-08-08 13:14:01.000000000 +0200
@@ -26,7 +26,8 @@
 #endif
 
 enum {
-        CHANGED,
+        MONITORS_CHANGED,
+        SCREEN_CHANGED,
         LAST_SIGNAL
 };
 
@@ -39,6 +40,8 @@
 
 #define cs_XFree(p) do { if ((p)) XFree ((p)); } while (0)
 
+#define PRIMARY_MONITOR 0
+
 static gboolean
 cs_rectangle_equal (const GdkRectangle *src1,
                     const GdkRectangle *src2)
@@ -196,7 +199,7 @@
      * primary.
      */
 
-    screen->primary_monitor_index = 0;
+    screen->primary_monitor_index = PRIMARY_MONITOR;
 
 
 #ifdef HAVE_XFREE_XINERAMA
@@ -353,7 +356,7 @@
 
     apply_scale_factor (screen->monitor_infos,
                         screen->n_monitor_infos,
-                        gdk_screen_get_monitor_scale_factor 
(screen->gdk_screen, 0));
+                        gdk_screen_get_monitor_scale_factor 
(screen->gdk_screen, PRIMARY_MONITOR));
 
     g_assert (screen->n_monitor_infos > 0);
     g_assert (screen->monitor_infos != NULL);
@@ -363,45 +366,46 @@
 reload_screen_info (CsScreen *screen)
 {
     Screen *xscreen;
+    gint scale_factor;
 
     xscreen = gdk_x11_screen_get_xscreen (screen->gdk_screen);
 
     screen->rect.x = screen->rect.y = 0;
     screen->rect.width = WidthOfScreen (xscreen);
     screen->rect.height = HeightOfScreen (xscreen);
+
+    scale_factor = gdk_screen_get_monitor_scale_factor (screen->gdk_screen, 
PRIMARY_MONITOR);
+    screen->rect.width /= scale_factor;
+    screen->rect.height /= scale_factor;
 }
 
-static gboolean
-on_screen_changed_idle (gpointer user_data)
+static void
+on_monitors_changed (GdkScreen *gdk_screen, gpointer user_data)
 {
     CsMonitorInfo *old_monitor_infos;
+    CsScreen *screen;
 
-    CsScreen *screen = CS_SCREEN (user_data);
-
-    reload_screen_info (screen);
+    screen = CS_SCREEN (user_data);
 
     old_monitor_infos = screen->monitor_infos;
+
     reload_monitor_infos (screen);
-    g_free (old_monitor_infos);
 
-    g_signal_emit (screen, signals[CHANGED], 0);
+    g_free (old_monitor_infos);
 
-    screen->idle_changed_id = 0;
-    return FALSE;
+    g_signal_emit (screen, signals[MONITORS_CHANGED], 0);
 }
 
 static void
 on_screen_changed (GdkScreen *gdk_screen, gpointer user_data)
 {
-    CsScreen *screen = CS_SCREEN (user_data);
+    CsScreen *screen;
 
-    if (screen->idle_changed_id > 0)
-    {
-        g_source_remove (screen->idle_changed_id);
-        screen->idle_changed_id = 0;
-    }
+    screen = CS_SCREEN (user_data);
+
+    reload_screen_info (screen);
 
-    g_idle_add ((GSourceFunc) on_screen_changed_idle, screen);
+    g_signal_emit (screen, signals[SCREEN_CHANGED], 0);
 }
 
 static void
@@ -409,7 +413,7 @@
 {
     screen->gdk_screen = gdk_screen_get_default ();
 
-    screen->monitors_changed_id = g_signal_connect (screen->gdk_screen, 
"monitors-changed", G_CALLBACK (on_screen_changed), screen);
+    screen->monitors_changed_id = g_signal_connect (screen->gdk_screen, 
"monitors-changed", G_CALLBACK (on_monitors_changed), screen);
     screen->screen_size_changed_id = g_signal_connect (screen->gdk_screen, 
"size-changed", G_CALLBACK (on_screen_changed), screen);
 
     reload_screen_info (screen);
@@ -426,6 +430,26 @@
 
     screen = CS_SCREEN (object);
 
+    if (screen->monitor_infos)
+    {
+        g_free (screen->monitor_infos);
+    }
+
+    DEBUG ("CsScreen finalize\n");
+
+    G_OBJECT_CLASS (cs_screen_parent_class)->finalize (object);
+}
+
+static void
+cs_screen_dispose (GObject *object)
+{
+    CsScreen *screen;
+
+    g_return_if_fail (object != NULL);
+    g_return_if_fail (CS_IS_SCREEN (object));
+
+    screen = CS_SCREEN (object);
+
     if (screen->monitors_changed_id > 0)
     {
         g_signal_handler_disconnect (screen->gdk_screen, 
screen->monitors_changed_id);
@@ -438,12 +462,9 @@
         screen->screen_size_changed_id = 0;
     }
 
-    if (screen->monitor_infos)
-    {
-        g_free (screen->monitor_infos);
-    }
+    DEBUG ("CsScreen dispose\n");
 
-    G_OBJECT_CLASS (cs_screen_parent_class)->finalize (object);
+    G_OBJECT_CLASS (cs_screen_parent_class)->dispose (object);
 }
 
 static void
@@ -452,13 +473,21 @@
     GObjectClass *object_class = G_OBJECT_CLASS (klass);
 
     object_class->finalize = cs_screen_finalize;
+    object_class->dispose = cs_screen_dispose;
 
-    signals[CHANGED] = g_signal_new ("changed",
-                                     G_TYPE_FROM_CLASS (object_class),
-                                     G_SIGNAL_RUN_LAST,
-                                     0,
-                                     NULL, NULL, NULL,
-                                     G_TYPE_NONE, 0);
+    signals[MONITORS_CHANGED] = g_signal_new ("monitors-changed",
+                                              G_TYPE_FROM_CLASS (object_class),
+                                              G_SIGNAL_RUN_LAST,
+                                              0,
+                                              NULL, NULL, NULL,
+                                              G_TYPE_NONE, 0);
+
+    signals[SCREEN_CHANGED] = g_signal_new ("size-changed",
+                                            G_TYPE_FROM_CLASS (object_class),
+                                            G_SIGNAL_RUN_LAST,
+                                            0,
+                                            NULL, NULL, NULL,
+                                            G_TYPE_NONE, 0);
 }
 
 CsScreen *
@@ -468,8 +497,7 @@
 
     debug_mode = debug;
 
-    result = g_object_new (CS_TYPE_SCREEN,
-                           NULL);
+    result = g_object_new (CS_TYPE_SCREEN, NULL);
 
     return CS_SCREEN (result);
 }
@@ -491,7 +519,10 @@
     g_return_if_fail (monitor >= 0 && monitor < screen->n_monitor_infos);
     g_return_if_fail (geometry != NULL);
 
-    *geometry = screen->monitor_infos[monitor].rect;
+    geometry->x = screen->monitor_infos[monitor].rect.x;
+    geometry->y = screen->monitor_infos[monitor].rect.y;
+    geometry->width = screen->monitor_infos[monitor].rect.width;
+    geometry->height = screen->monitor_infos[monitor].rect.height;
 }
 
 /**
@@ -508,7 +539,10 @@
     g_return_if_fail (CS_IS_SCREEN (screen));
     g_return_if_fail (geometry != NULL);
 
-    *geometry = screen->rect;
+    geometry->x = screen->rect.x;
+    geometry->y = screen->rect.y;
+    geometry->width = screen->rect.width;
+    geometry->height = screen->rect.height;
 }
 
 /**
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/cinnamon-screensaver-3.4.1/libcscreensaver/cs-screen.h 
new/cinnamon-screensaver-3.4.2/libcscreensaver/cs-screen.h
--- old/cinnamon-screensaver-3.4.1/libcscreensaver/cs-screen.h  2017-06-20 
15:40:52.000000000 +0200
+++ new/cinnamon-screensaver-3.4.2/libcscreensaver/cs-screen.h  2017-08-08 
13:14:01.000000000 +0200
@@ -40,8 +40,6 @@
 
     gulong monitors_changed_id;
     gulong screen_size_changed_id;
-
-    guint idle_changed_id;
 } CsScreen;
 
 typedef struct
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cinnamon-screensaver-3.4.1/src/albumArt.py 
new/cinnamon-screensaver-3.4.2/src/albumArt.py
--- old/cinnamon-screensaver-3.4.1/src/albumArt.py      2017-06-20 
15:40:52.000000000 +0200
+++ new/cinnamon-screensaver-3.4.2/src/albumArt.py      2017-08-08 
13:14:01.000000000 +0200
@@ -20,9 +20,8 @@
     using a timer which randomizes its halign and valign properties
     as well as its current monitor.
     """
-    def __init__(self, screen, away_message=None, initial_monitor=0):
+    def __init__(self, away_message=None, initial_monitor=0):
         super(AlbumArt, self).__init__(initial_monitor)
-        self.screen = screen
         self.get_style_context().add_class("albumart")
         self.set_halign(Gtk.Align.END)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cinnamon-screensaver-3.4.1/src/audioPanel.py 
new/cinnamon-screensaver-3.4.2/src/audioPanel.py
--- old/cinnamon-screensaver-3.4.1/src/audioPanel.py    2017-06-20 
15:40:52.000000000 +0200
+++ new/cinnamon-screensaver-3.4.2/src/audioPanel.py    2017-08-08 
13:14:01.000000000 +0200
@@ -6,9 +6,10 @@
 from volumeControl import VolumeControl
 from playerControl import PlayerControl
 from util import utils, settings
+import status
 
 class AudioPanel(BaseWindow):
-    def __init__(self, screen):
+    def __init__(self):
         """
         Upper left panel - only shows when Awake.  Will always show the
         volume slider, and will only show the player controls if there is
@@ -17,8 +18,7 @@
         super(AudioPanel, self).__init__()
         self.set_transition_type(Gtk.RevealerTransitionType.SLIDE_DOWN)
 
-        self.screen = screen
-        self.monitor_index = self.screen.get_primary_monitor()
+        self.monitor_index = status.screen.get_primary_monitor()
 
         self.update_geometry()
 
@@ -47,4 +47,4 @@
         if should_show:
             self.show_all()
         else:
-            self.disabled = True
\ No newline at end of file
+            self.disabled = True
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cinnamon-screensaver-3.4.1/src/baseWindow.py 
new/cinnamon-screensaver-3.4.2/src/baseWindow.py
--- old/cinnamon-screensaver-3.4.1/src/baseWindow.py    2017-06-20 
15:40:52.000000000 +0200
+++ new/cinnamon-screensaver-3.4.2/src/baseWindow.py    2017-08-08 
13:14:01.000000000 +0200
@@ -63,6 +63,6 @@
 
     def update_geometry(self):
         if status.Spanned:
-            self.rect = self.screen.get_screen_geometry()
+            self.rect = status.screen.get_screen_geometry()
         else:
-            self.rect = self.screen.get_monitor_geometry(self.monitor_index)
\ No newline at end of file
+            self.rect = status.screen.get_monitor_geometry(self.monitor_index)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cinnamon-screensaver-3.4.1/src/clock.py 
new/cinnamon-screensaver-3.4.2/src/clock.py
--- old/cinnamon-screensaver-3.4.1/src/clock.py 2017-06-20 15:40:52.000000000 
+0200
+++ new/cinnamon-screensaver-3.4.2/src/clock.py 2017-08-08 13:14:01.000000000 
+0200
@@ -17,9 +17,8 @@
     using a timer which randomizes its halign and valign properties
     as well as its current monitor.
     """
-    def __init__(self, screen, away_message=None, initial_monitor=0):
+    def __init__(self, away_message=None, initial_monitor=0):
         super(ClockWidget, self).__init__(initial_monitor)
-        self.screen = screen
         self.get_style_context().add_class("clock")
         self.set_halign(Gtk.Align.START)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/cinnamon-screensaver-3.4.1/src/dbusdepot/logindClient.py 
new/cinnamon-screensaver-3.4.2/src/dbusdepot/logindClient.py
--- old/cinnamon-screensaver-3.4.1/src/dbusdepot/logindClient.py        
2017-06-20 15:40:52.000000000 +0200
+++ new/cinnamon-screensaver-3.4.2/src/dbusdepot/logindClient.py        
2017-08-08 13:14:01.000000000 +0200
@@ -50,6 +50,11 @@
             if id_suffix != "":
                 self.session_id = "/org/freedesktop/login1/session/%s" % 
(id_suffix,)
                 print("found session: %s" % (id_suffix,))
+            else:
+                print("Could not construct a valid ID for Logind session.  Is 
XDG_SESSION_ID set?")
+                self.session_proxy = None
+                self.on_failure()
+                return
 
         try:
             self.session_proxy = 
CScreensaver.LogindSessionProxy.new_for_bus(Gio.BusType.SYSTEM,
@@ -81,4 +86,4 @@
             self.emit("active")
 
     def on_failure(self, *args):
-        self.emit("startup-status", False)
\ No newline at end of file
+        self.emit("startup-status", False)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cinnamon-screensaver-3.4.1/src/floating.py 
new/cinnamon-screensaver-3.4.2/src/floating.py
--- old/cinnamon-screensaver-3.4.1/src/floating.py      2017-06-20 
15:40:52.000000000 +0200
+++ new/cinnamon-screensaver-3.4.2/src/floating.py      2017-08-08 
13:14:01.000000000 +0200
@@ -2,6 +2,7 @@
 
 from gi.repository import Gtk
 import random
+import status
 
 from util import trackers
 from util import settings
@@ -54,9 +55,9 @@
         self.set_halign(Gtk.Align(horizontal))
         self.set_valign(Gtk.Align(vertical))
 
-        if self.screen.get_n_monitors() > 1:
+        if status.screen.get_n_monitors() > 1:
             new_monitor = self.current_monitor
-            n = self.screen.get_n_monitors()
+            n = status.screen.get_n_monitors()
 
             while new_monitor == self.current_monitor:
                 new_monitor = random.randint(0, n - 1)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cinnamon-screensaver-3.4.1/src/infoPanel.py 
new/cinnamon-screensaver-3.4.2/src/infoPanel.py
--- old/cinnamon-screensaver-3.4.1/src/infoPanel.py     2017-06-20 
15:40:52.000000000 +0200
+++ new/cinnamon-screensaver-3.4.2/src/infoPanel.py     2017-08-08 
13:14:01.000000000 +0200
@@ -15,12 +15,11 @@
     relevant to say, regardless of our Awake state (*except* when a plugin is
     running, due to graphical issues.)
     """
-    def __init__(self, screen):
+    def __init__(self):
         super(InfoPanel, self).__init__()
         self.set_transition_type(Gtk.RevealerTransitionType.SLIDE_DOWN)
 
-        self.screen = screen
-        self.monitor_index = self.screen.get_primary_monitor()
+        self.monitor_index = status.screen.get_primary_monitor()
 
         self.update_geometry()
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cinnamon-screensaver-3.4.1/src/manager.py 
new/cinnamon-screensaver-3.4.2/src/manager.py
--- old/cinnamon-screensaver-3.4.1/src/manager.py       2017-06-20 
15:40:52.000000000 +0200
+++ new/cinnamon-screensaver-3.4.2/src/manager.py       2017-08-08 
13:14:01.000000000 +0200
@@ -95,7 +95,13 @@
                             transition = 0
                         else:
                             transition = c.STAGE_SPAWN_TRANSITION
+
                         self.spawn_stage(msg, transition, 
self.on_spawn_stage_complete)
+                    else:
+                        transition = 0
+
+                        self.stage.transition_in(transition, 
self.on_spawn_stage_complete)
+                        self.stage.set_message(msg)
                     return True
                 else:
                     status.Active = False
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cinnamon-screensaver-3.4.1/src/monitorView.py 
new/cinnamon-screensaver-3.4.2/src/monitorView.py
--- old/cinnamon-screensaver-3.4.1/src/monitorView.py   2017-06-20 
15:40:52.000000000 +0200
+++ new/cinnamon-screensaver-3.4.2/src/monitorView.py   2017-08-08 
13:14:01.000000000 +0200
@@ -98,10 +98,9 @@
     __gsignals__ = {
         'current-view-change-complete': (GObject.SignalFlags.RUN_LAST, None, 
()),
     }
-    def __init__(self, screen, index):
+    def __init__(self, index):
         super(MonitorView, self).__init__()
 
-        self.screen = screen
         self.monitor_index = index
 
         self.proc = None
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cinnamon-screensaver-3.4.1/src/passwordEntry.py 
new/cinnamon-screensaver-3.4.2/src/passwordEntry.py
--- old/cinnamon-screensaver-3.4.1/src/passwordEntry.py 2017-06-20 
15:40:52.000000000 +0200
+++ new/cinnamon-screensaver-3.4.2/src/passwordEntry.py 2017-08-08 
13:14:01.000000000 +0200
@@ -177,6 +177,8 @@
         self.update_saved_group(self.keyboard_controller.get_current_group())
 
     def on_destroy(self, widget, data=None):
+        self.stop_progress()
+
         trackers.con_tracker_get().disconnect(self.keyboard_controller,
                                               "config-changed",
                                               self.on_config_changed)
@@ -235,4 +237,4 @@
         Gtk.Widget.grab_focus(self)
 
         length = self.get_buffer().get_length()
-        self.select_region(length, -1)
\ No newline at end of file
+        self.select_region(length, -1)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cinnamon-screensaver-3.4.1/src/stage.py 
new/cinnamon-screensaver-3.4.2/src/stage.py
--- old/cinnamon-screensaver-3.4.1/src/stage.py 2017-06-20 15:40:52.000000000 
+0200
+++ new/cinnamon-screensaver-3.4.2/src/stage.py 2017-08-08 13:14:01.000000000 
+0200
@@ -55,7 +55,7 @@
         self.destroying = False
 
         self.manager = manager
-        self.screen = CScreensaver.Screen.new(status.Debug)
+        status.screen = CScreensaver.Screen.new(status.Debug)
         self.away_message = away_message
 
         self.monitors = []
@@ -118,9 +118,13 @@
         # For instance: Chrome and Firefox native notifications.
         self.gdk_filter = CScreensaver.GdkEventFilter()
 
-        trackers.con_tracker_get().connect(self.screen,
-                                           "changed",
-                                           self.on_screen_changed)
+        trackers.con_tracker_get().connect(status.screen,
+                                           "size-changed",
+                                           self.on_screen_size_changed)
+
+        trackers.con_tracker_get().connect(status.screen,
+                                           "monitors-changed",
+                                           self.on_monitors_changed)
 
         trackers.con_tracker_get().connect(self,
                                            "grab-broken-event",
@@ -129,12 +133,21 @@
         if status.InteractiveDebug:
             self.set_interactive_debugging(True)
 
-    def on_screen_changed(self, screen, data=None):
+    def on_screen_size_changed(self, screen, data=None):
         self.update_geometry()
         self.move_onscreen()
 
-        for monitor in self.monitors:
-            monitor.update_geometry()
+        self.overlay.queue_resize()
+
+    def on_monitors_changed(self, screen, data=None):
+        self.destroy_monitor_views()
+
+        try:
+            self.setup_monitors()
+            for monitor in self.monitors:
+                self.sink_child_widget(monitor)
+        except Exception as e:
+            print("Problem setting up monitor views during monitor change 
event: %s" % str(e))
 
         self.overlay.queue_resize()
 
@@ -147,6 +160,10 @@
         """
         This is the primary way of making the Stage visible.
         """
+
+        # Cancel any existing transition
+        self.fader.cancel()
+
         if effect_time == 0:
             self.set_opacity(1.0)
             self.move_onscreen()
@@ -264,12 +281,14 @@
 
         try:
             if self.clock_widget != None:
+                self.clock_widget.stop_positioning()
                 self.clock_widget.destroy()
         except Exception as e:
             print(e)
 
         try:
             if self.albumart_widget != None:
+                self.albumart_widget.stop_positioning()
                 self.albumart_widget.destroy()
         except Exception as e:
             print(e)
@@ -322,9 +341,15 @@
         self.gdk_filter.stop()
         self.gdk_filter = None
 
-        trackers.con_tracker_get().disconnect(self.screen,
-                                              "changed",
-                                              self.on_screen_changed)
+        trackers.con_tracker_get().disconnect(status.screen,
+                                              "size-changed",
+                                              self.on_screen_size_changed)
+
+        trackers.con_tracker_get().disconnect(status.screen,
+                                              "monitors-changed",
+                                              self.on_monitors_changed)
+
+        status.screen = None
 
         self.destroy()
 
@@ -337,15 +362,15 @@
         status.Spanned = settings.bg_settings.get_enum("picture-options") == 
CDesktopEnums.BackgroundStyle.SPANNED
 
         if status.InteractiveDebug or status.Spanned:
-            monitors = (self.screen.get_primary_monitor(),)
+            monitors = (status.screen.get_primary_monitor(),)
         else:
-            n = self.screen.get_n_monitors()
+            n = status.screen.get_n_monitors()
             monitors = ()
             for i in range(n):
                 monitors += (i,)
 
         for index in monitors:
-            monitor = MonitorView(self.screen, index)
+            monitor = MonitorView(index)
 
             image = Gtk.Image()
 
@@ -409,7 +434,7 @@
         Initially invisible, regardless - its visibility is controlled via its
         own positioning timer.
         """
-        self.clock_widget = ClockWidget(self.screen, self.away_message, 
self.screen.get_mouse_monitor())
+        self.clock_widget = ClockWidget(self.away_message, 
status.screen.get_mouse_monitor())
         self.add_child_widget(self.clock_widget)
 
         self.floaters.append(self.clock_widget)
@@ -427,7 +452,7 @@
         Initially invisible, regardless - its visibility is controlled via its
         own positioning timer.
         """
-        self.albumart_widget = AlbumArt(self.screen, self.away_message, 
self.screen.get_mouse_monitor())
+        self.albumart_widget = AlbumArt(None, 
status.screen.get_mouse_monitor())
         self.add_child_widget(self.albumart_widget)
 
         self.floaters.append(self.clock_widget)
@@ -478,10 +503,10 @@
         """
         Constructs the AudioPanel and InfoPanel and adds them to the overlay.
         """
-        self.audio_panel = AudioPanel(self.screen)
+        self.audio_panel = AudioPanel()
         self.add_child_widget(self.audio_panel)
 
-        self.info_panel = InfoPanel(self.screen)
+        self.info_panel = InfoPanel()
         self.add_child_widget(self.info_panel)
 
     def queue_dialog_key_event(self, event):
@@ -682,19 +707,19 @@
         or Awake states.
         """
         low_power = not self.power_client.plugged_in
-
-        if (not settings.should_show_plugin()) or 
(settings.should_show_plugin() and low_power):
-            if self.clock_widget != None and settings.get_show_clock():
-                self.clock_widget.start_positioning()
-            if self.albumart_widget != None and settings.get_show_albumart():
-                self.albumart_widget.start_positioning()
-        else:
-            if self.clock_widget != None:
-                self.clock_widget.stop_positioning()
-                self.clock_widget.hide()
-            if self.albumart_widget != None:
-                self.albumart_widget.stop_positioning()
-                self.albumart_widget.hide()
+        if not status.Awake:
+            if (not settings.should_show_plugin()) or 
(settings.should_show_plugin() and low_power):
+                if self.clock_widget != None and settings.get_show_clock():
+                    self.clock_widget.start_positioning()
+                if self.albumart_widget != None and 
settings.get_show_albumart():
+                    self.albumart_widget.start_positioning()
+            else:
+                if self.clock_widget != None:
+                    self.clock_widget.stop_positioning()
+                    self.clock_widget.hide()
+                if self.albumart_widget != None:
+                    self.albumart_widget.stop_positioning()
+                    self.albumart_widget.hide()
 
         for monitor in self.monitors:
             monitor.update_view(status.Awake, low_power)
@@ -736,10 +761,10 @@
         """
 
         if status.InteractiveDebug:
-            monitor_n = self.screen.get_primary_monitor()
-            self.rect = self.screen.get_monitor_geometry(monitor_n)
+            monitor_n = status.screen.get_primary_monitor()
+            self.rect = status.screen.get_monitor_geometry(monitor_n)
         else:
-            self.rect = self.screen.get_screen_geometry()
+            self.rect = status.screen.get_screen_geometry()
 
         hints = Gdk.Geometry()
         hints.min_width = self.rect.width
@@ -755,16 +780,16 @@
 
     def get_mouse_monitor(self):
         if status.InteractiveDebug:
-            return self.screen.get_primary_monitor()
+            return status.screen.get_primary_monitor()
         else:
-            return self.screen.get_mouse_monitor()
+            return status.screen.get_mouse_monitor()
 
     def maybe_update_layout(self):
         """
         Called on all user events, moves widgets to the currently
         focused monitor if it changes (whichever monitor the mouse is in)
         """
-        current_focus_monitor = self.screen.get_mouse_monitor()
+        current_focus_monitor = status.screen.get_mouse_monitor()
 
         if self.last_focus_monitor == -1:
             self.last_focus_monitor = current_focus_monitor
@@ -780,6 +805,12 @@
         """
         self.overlay.add_overlay(widget)
 
+    def sink_child_widget(self, widget):
+        """
+        Move a child to the bottom of the overlay
+        """
+        self.overlay.reorder_overlay(widget, 0)
+
     def position_overlay_child(self, overlay, child, allocation):
         """
         Callback for our GtkOverlay, think of this as a mini-
@@ -814,8 +845,8 @@
             UnlockDialog always shows on the currently focused monitor (the 
one the
             mouse is currently in), and is kept centered.
             """
-            monitor = self.screen.get_mouse_monitor()
-            monitor_rect = self.screen.get_monitor_geometry(monitor)
+            monitor = status.screen.get_mouse_monitor()
+            monitor_rect = status.screen.get_monitor_geometry(monitor)
 
             min_rect, nat_rect = child.get_preferred_size()
 
@@ -840,11 +871,11 @@
             min_rect, nat_rect = child.get_preferred_size()
 
             if status.Awake:
-                current_monitor = self.screen.get_mouse_monitor()
+                current_monitor = status.screen.get_mouse_monitor()
             else:
                 current_monitor = child.current_monitor
 
-            monitor_rect = self.screen.get_monitor_geometry(current_monitor)
+            monitor_rect = status.screen.get_monitor_geometry(current_monitor)
 
             region_w = monitor_rect.width / 3
             region_h = monitor_rect.height / 3
@@ -927,8 +958,8 @@
             min_rect, nat_rect = child.get_preferred_size()
 
             if status.Awake:
-                current_monitor = self.screen.get_mouse_monitor()
-                monitor_rect = 
self.screen.get_monitor_geometry(current_monitor)
+                current_monitor = status.screen.get_mouse_monitor()
+                monitor_rect = 
status.screen.get_monitor_geometry(current_monitor)
                 allocation.x = monitor_rect.x
                 allocation.y = monitor_rect.y
                 allocation.width = nat_rect.width
@@ -952,8 +983,8 @@
             min_rect, nat_rect = child.get_preferred_size()
 
             if status.Awake:
-                current_monitor = self.screen.get_mouse_monitor()
-                monitor_rect = 
self.screen.get_monitor_geometry(current_monitor)
+                current_monitor = status.screen.get_mouse_monitor()
+                monitor_rect = 
status.screen.get_monitor_geometry(current_monitor)
                 allocation.x = monitor_rect.x + monitor_rect.width - 
nat_rect.width
                 allocation.y = monitor_rect.y
                 allocation.width = nat_rect.width
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cinnamon-screensaver-3.4.1/src/status.py 
new/cinnamon-screensaver-3.4.2/src/status.py
--- old/cinnamon-screensaver-3.4.1/src/status.py        2017-06-20 
15:40:52.000000000 +0200
+++ new/cinnamon-screensaver-3.4.2/src/status.py        2017-08-08 
13:14:01.000000000 +0200
@@ -28,3 +28,5 @@
 # If the wallpaper aspect is 'spanned' we will only create one MonitorView and 
manage it slightly
 # differently.  This is an easy place to keep track of that.  This is set in 
singletons.py.
 Spanned = False
+
+screen = None


Reply via email to