Hello community,

here is the log from the commit of package cinnamon-screensaver for 
openSUSE:Factory checked in at 2018-10-18 15:35:56
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/cinnamon-screensaver (Old)
 and      /work/SRC/openSUSE:Factory/.cinnamon-screensaver.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "cinnamon-screensaver"

Thu Oct 18 15:35:56 2018 rev:16 rq:642666 version:3.8.3

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/cinnamon-screensaver/cinnamon-screensaver.changes    
    2018-07-06 10:43:43.243131553 +0200
+++ 
/work/SRC/openSUSE:Factory/.cinnamon-screensaver.new/cinnamon-screensaver.changes
   2018-10-18 15:36:50.886262910 +0200
@@ -1,0 +2,15 @@
+Wed Oct 17 14:17:51 UTC 2018 - sor.ale...@meowr.ru
+
+- Update to version 3.8.3:
+  * CsScreen/stage: Fix coverage changes when plugging in monitors
+    that may affect scale factor.
+  * power widget: Ensure widget state is correct when becoming
+    Active, instead of only updating at the next power state change.
+  * monitorView: Do not use a transition for the view stack.
+  * fader: Always run the callback, even if the fade is halted due
+    to the widget not being mapped.
+  * stage/screen: During any screen change, resize the stage
+    backdrop immediately, to try to prevent incomplete coverage.
+  * Fall back to os.path.expanduser to find the Home directory.
+
+-------------------------------------------------------------------

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

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

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

Other differences:
------------------
++++++ cinnamon-screensaver.spec ++++++
--- /var/tmp/diff_new_pack.npbYMA/_old  2018-10-18 15:37:00.994251330 +0200
+++ /var/tmp/diff_new_pack.npbYMA/_new  2018-10-18 15:37:00.998251324 +0200
@@ -12,12 +12,12 @@
 # license that conforms to the Open Source Definition (Version 1.9)
 # published by the Open Source Initiative.
 
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
 #
 
 
 Name:           cinnamon-screensaver
-Version:        3.8.2
+Version:        3.8.3
 Release:        0
 Summary:        Cinnamon screensaver and locker
 License:        GPL-2.0-or-later

++++++ cinnamon-screensaver-3.8.2.tar.gz -> cinnamon-screensaver-3.8.3.tar.gz 
++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cinnamon-screensaver-3.8.2/configure.ac 
new/cinnamon-screensaver-3.8.3/configure.ac
--- old/cinnamon-screensaver-3.8.2/configure.ac 2018-06-08 12:38:11.000000000 
+0200
+++ new/cinnamon-screensaver-3.8.3/configure.ac 2018-10-16 17:35:37.000000000 
+0200
@@ -2,7 +2,7 @@
 
 AC_PREREQ(2.60)
 AC_INIT([cinnamon-screensaver],
-        [3.8.2],
+        [3.8.3],
         [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.8.2/debian/changelog 
new/cinnamon-screensaver-3.8.3/debian/changelog
--- old/cinnamon-screensaver-3.8.2/debian/changelog     2018-06-08 
12:38:11.000000000 +0200
+++ new/cinnamon-screensaver-3.8.3/debian/changelog     2018-10-16 
17:35:37.000000000 +0200
@@ -1,3 +1,17 @@
+cinnamon-screensaver (3.8.3) tara; urgency=medium
+
+  [ Michael Webster ]
+  * CsScreen/stage: Fix coverage changes when plugging in monitors that may 
affect scale factor.
+  * power widget: Ensure widget state is correct when becoming Active, instead 
of only updating at the next power state change.
+  * monitorView: don't use a transition for the view stack.
+  * fader: Always run the callback, even if the fade is halted due to the 
widget not being mapped.
+  * stage/screen: During any screen change, resize the stage backdrop 
immediately, to try to prevent incomplete coverage.
+
+  [ Andrew Geng ]
+  * Fall back to os.path.expanduser to find home dir. (#284)
+
+ -- Clement Lefebvre <r...@linuxmint.com>  Tue, 16 Oct 2018 16:35:16 +0100
+
 cinnamon-screensaver (3.8.2) tara; urgency=medium
 
   [ Michael Webster ]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/cinnamon-screensaver-3.8.2/libcscreensaver/cs-screen-x11.c 
new/cinnamon-screensaver-3.8.3/libcscreensaver/cs-screen-x11.c
--- old/cinnamon-screensaver-3.8.2/libcscreensaver/cs-screen-x11.c      
2018-06-08 12:38:11.000000000 +0200
+++ new/cinnamon-screensaver-3.8.3/libcscreensaver/cs-screen-x11.c      
2018-10-16 17:35:37.000000000 +0200
@@ -26,8 +26,8 @@
 #endif
 
 enum {
-        MONITORS_CHANGED,
-        SCREEN_CHANGED,
+        SCREEN_MONITORS_CHANGED,
+        SCREEN_SIZE_CHANGED,
         LAST_SIGNAL
 };
 
@@ -378,15 +378,19 @@
 
     screen = CS_SCREEN (user_data);
 
+    reload_screen_info (screen);
+    g_signal_emit (screen, signals[SCREEN_SIZE_CHANGED], 0);
+
     gdk_flush ();
 
-    old_monitor_infos = screen->monitor_infos;
+    DEBUG ("CsScreen received 'monitors-changed' signal from GdkScreen\n");
 
+    old_monitor_infos = screen->monitor_infos;
     reload_monitor_infos (screen);
 
     g_free (old_monitor_infos);
 
-    g_signal_emit (screen, signals[MONITORS_CHANGED], 0);
+    g_signal_emit (screen, signals[SCREEN_MONITORS_CHANGED], 0);
 }
 
 static void
@@ -396,11 +400,10 @@
 
     screen = CS_SCREEN (user_data);
 
-    gdk_flush ();
+    DEBUG ("CsScreen received 'size-changed' signal from GdkScreen\n");
 
     reload_screen_info (screen);
-
-    g_signal_emit (screen, signals[SCREEN_CHANGED], 0);
+    g_signal_emit (screen, signals[SCREEN_SIZE_CHANGED], 0);
 }
 
 static void
@@ -470,14 +473,14 @@
     object_class->finalize = cs_screen_finalize;
     object_class->dispose = cs_screen_dispose;
 
-    signals[MONITORS_CHANGED] = g_signal_new ("monitors-changed",
+    signals[SCREEN_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",
+    signals[SCREEN_SIZE_CHANGED] = g_signal_new ("size-changed",
                                             G_TYPE_FROM_CLASS (object_class),
                                             G_SIGNAL_RUN_LAST,
                                             0,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cinnamon-screensaver-3.8.2/src/constants.py 
new/cinnamon-screensaver-3.8.3/src/constants.py
--- old/cinnamon-screensaver-3.8.2/src/constants.py     2018-06-08 
12:38:11.000000000 +0200
+++ new/cinnamon-screensaver-3.8.3/src/constants.py     2018-10-16 
17:35:37.000000000 +0200
@@ -18,6 +18,10 @@
 # after an idle-activation is canceled.
 GRAB_RELEASE_TIMEOUT = 1 * 1000
 
+# Used by powerWidget - the level a battery must be below before the battery 
icon widget in the infopanel
+# will show even when asleep (active but not awake.)
+BATTERY_CRITICAL_PERCENT = 20
+
 # Cinnamon Screensaver
 SS_SERVICE                      = "org.cinnamon.ScreenSaver"
 SS_PATH                         = "/org/cinnamon/ScreenSaver"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/cinnamon-screensaver-3.8.2/src/dbusdepot/accountsServiceClient.py 
new/cinnamon-screensaver-3.8.3/src/dbusdepot/accountsServiceClient.py
--- old/cinnamon-screensaver-3.8.2/src/dbusdepot/accountsServiceClient.py       
2018-06-08 12:38:11.000000000 +0200
+++ new/cinnamon-screensaver-3.8.3/src/dbusdepot/accountsServiceClient.py       
2018-10-16 17:35:37.000000000 +0200
@@ -35,8 +35,11 @@
 
     def get_face_path(self):
         face_path = None
+        home_path = self.service.get_home_dir()
+        if home_path is None:
+            home_path = os.path.expanduser('~')
 
-        for path in [os.path.join(self.service.get_home_dir(), ".face"),
+        for path in [os.path.join(home_path, ".face"),
                      self.service.get_icon_file()]:
             if os.path.exists(path):
                 face_path = path
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cinnamon-screensaver-3.8.2/src/infoPanel.py 
new/cinnamon-screensaver-3.8.3/src/infoPanel.py
--- old/cinnamon-screensaver-3.8.2/src/infoPanel.py     2018-06-08 
12:38:11.000000000 +0200
+++ new/cinnamon-screensaver-3.8.3/src/infoPanel.py     2018-10-16 
17:35:37.000000000 +0200
@@ -46,6 +46,7 @@
 
         self.power_widget = PowerWidget()
         self.power_widget.set_no_show_all(True)
+        
self.power_widget.connect("power-state-changed",self.on_power_state_changed)
         hbox.pack_start(self.power_widget, True, True, 2)
 
         self.show_all()
@@ -53,6 +54,9 @@
     def on_notification_received(self, obj):
         self.update_revealed()
 
+    def on_power_state_changed(self, obj):
+        self.update_revealed()
+
     def update_revealed(self):
         """
         Determines whether or not to show the panel, depending on:
@@ -66,20 +70,22 @@
             return
 
         do_reveal = False
+        battery_critical = False
 
         self.show_power = self.power_widget.should_show()
+        if self.show_power:
+            battery_critical = self.power_widget.battery_critical
+
         self.show_notifications = self.notification_widget.should_show()
 
         # Determine if we want to show all the time or only when status.Awake
-
         if status.Awake:
             if self.show_power or self.show_notifications:
                 do_reveal = True
-        elif status.Active and not status.PluginRunning:
-            if self.show_notifications:
+        elif not status.PluginRunning:
+            if self.show_notifications or battery_critical:
                 do_reveal = True
 
-
         if do_reveal:
             self.power_widget.set_visible(self.show_power)
             self.notification_widget.set_visible(self.show_notifications)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cinnamon-screensaver-3.8.2/src/manager.py 
new/cinnamon-screensaver-3.8.3/src/manager.py
--- old/cinnamon-screensaver-3.8.2/src/manager.py       2018-06-08 
12:38:11.000000000 +0200
+++ new/cinnamon-screensaver-3.8.3/src/manager.py       2018-10-16 
17:35:37.000000000 +0200
@@ -262,7 +262,10 @@
         if self.stage == None:
             return
 
-        self.stage.refresh()
+        if status.Debug:
+            print("manager: queuing stage refresh (login manager reported 
active?")
+
+        self.stage.queue_refresh_stage()
 
     def start_timers(self):
         """
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cinnamon-screensaver-3.8.2/src/monitorView.py 
new/cinnamon-screensaver-3.8.3/src/monitorView.py
--- old/cinnamon-screensaver-3.8.2/src/monitorView.py   2018-06-08 
12:38:11.000000000 +0200
+++ new/cinnamon-screensaver-3.8.3/src/monitorView.py   2018-10-16 
17:35:37.000000000 +0200
@@ -108,8 +108,8 @@
         self.update_geometry()
 
         self.stack = Gtk.Stack()
-        self.stack.set_transition_type(Gtk.StackTransitionType.CROSSFADE)
-        self.stack.set_transition_duration(250)
+        self.stack.set_transition_type(Gtk.StackTransitionType.NONE)
+        self.stack.set_transition_duration(0)
         self.add(self.stack)
 
         self.wallpaper_stack = WallpaperStack()
@@ -183,9 +183,7 @@
             return
 
         self.stack.set_visible_child_name("plugin")
-        trackers.con_tracker_get().connect(self.stack,
-                                           "notify::transition-running",
-                                           self.notify_transition_callback)
+        self.emit("current-view-change-complete")
 
     def show_wallpaper(self):
         """
@@ -201,25 +199,7 @@
             return
 
         self.stack.set_visible_child_name("wallpaper")
-        trackers.con_tracker_get().connect(self.stack,
-                                           "notify::transition-running",
-                                           self.notify_transition_callback)
-
-    def notify_transition_callback(self, stack, pspec, data=None):
-        """
-        GtkStacks don't have any signal for telling you 'we're done 
transitioning'
-        the closest we can come to it is for every animation tick they call a 
notify
-        on the 'transition-running' property.  We wait until it returns False
-        to emit our own transition completed signal.  This only works because 
our
-        stack here *does* use a duration and transition type that isn't "None".
-        """
-        if stack.get_transition_running():
-            return
-        else:
-            trackers.con_tracker_get().disconnect(self.stack,
-                                                  "notify::transition-running",
-                                                  
self.notify_transition_callback)
-            self.emit("current-view-change-complete")
+        self.emit("current-view-change-complete")
 
     def update_view(self, widget=None, data=None):
         """
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cinnamon-screensaver-3.8.2/src/stage.py 
new/cinnamon-screensaver-3.8.3/src/stage.py
--- old/cinnamon-screensaver-3.8.2/src/stage.py 2018-06-08 12:38:11.000000000 
+0200
+++ new/cinnamon-screensaver-3.8.3/src/stage.py 2018-10-16 17:35:37.000000000 
+0200
@@ -67,6 +67,8 @@
         self.audio_panel = None
         self.info_panel = None
 
+        self.stage_refresh_id = 0
+
         self.floaters = []
 
         self.event_handler = EventHandler(manager)
@@ -144,32 +146,63 @@
             print("Problem updating monitor views views: %s" % str(e))
 
     def on_screen_size_changed(self, screen, data=None):
-        if status.Debug:
-            print("Stage: Received screen changed signal, updating backdrop")
+        """
+        The screen changing size should be acted upon immediately, to ensure 
coverage.
+        Wallpapers and plugins are secondary.
+        """
 
-        Gdk.flush()
+        if status.Debug:
+            print("Stage: Received screen size-changed signal, refreshing 
stage")
 
         self.update_geometry()
         self.move_onscreen()
-
         self.overlay.queue_resize()
 
+
     def on_monitors_changed(self, screen, data=None):
+        """
+        Updating monitors also will trigger an immediate stage coverage update 
(same
+        as on_screen_size_changed), and follow up at idle with actual monitor 
view
+        refreshes (wallpapers/plugins.)
+        """
         if status.Debug:
-            print("Stage: Received screen monitors-changed signal, updating 
monitor views")
+            print("Stage: Received screen monitors-changed signal, refreshing 
stage")
+
+        self.update_geometry()
+        self.move_onscreen()
+        self.overlay.queue_resize()
 
         Gdk.flush()
 
-        self.update_monitors()
-        self.overlay.queue_resize()
+        self.queue_refresh_stage()
 
     def on_grab_broken_event(self, widget, event, data=None):
         GObject.idle_add(self.manager.grab_stage)
 
         return False
 
-    def refresh(self):
+    def queue_refresh_stage(self):
+        """
+        Queues a complete refresh of the stage, resizing the screen if 
necessary,
+        reconstructing the individual monitor objects, etc...
+        """
+        if self.stage_refresh_id > 0:
+            GObject.source_remove(self.stage_refresh_id)
+            self.stage_refresh_id = 0
+
+        self.stage_refresh_id = 
GObject.idle_add(self._update_full_stage_on_idle)
+
+    def _update_full_stage_on_idle(self, data=None):
+        self.stage_refresh_id = 0
+
+        self._refresh()
+
+        return False
+
+    def _refresh(self):
         Gdk.flush()
+        if status.Debug:
+            print("Stage: refresh callback")
 
         self.update_geometry()
         self.move_onscreen()
@@ -231,6 +264,14 @@
         self.gdk_filter.start(self)
 
     def move_onscreen(self):
+        w = self.get_window()
+
+        if w:
+            w.move_resize(self.rect.x,
+                          self.rect.y,
+                          self.rect.width,
+                          self.rect.height)
+
         self.move(self.rect.x, self.rect.y)
         self.resize(self.rect.width, self.rect.height)
 
@@ -535,6 +576,8 @@
         self.info_panel = InfoPanel()
         self.add_child_widget(self.info_panel)
 
+        self.info_panel.update_revealed()
+
     def queue_dialog_key_event(self, event):
         """
         Sent from our EventHandler via the ScreensaverManager, this catches
@@ -732,8 +775,12 @@
         Updates all of our MonitorViews based on the power
         or Awake states.
         """
+
         if not status.Awake:
             if (not status.shouldShowPlugin()):
+                if status.Debug:
+                    if settings.should_show_plugin():
+                        print("Stage: plugin configured but disabling because 
we're on battery")
                 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():
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cinnamon-screensaver-3.8.2/src/util/fader.py 
new/cinnamon-screensaver-3.8.3/src/util/fader.py
--- old/cinnamon-screensaver-3.8.2/src/util/fader.py    2018-06-08 
12:38:11.000000000 +0200
+++ new/cinnamon-screensaver-3.8.3/src/util/fader.py    2018-10-16 
17:35:37.000000000 +0200
@@ -48,6 +48,8 @@
                 self.tick_id = 
self.widget.add_tick_callback(self._on_frame_tick_fade_in)
 
             self._fade_in_step(self.start_time)
+        else:
+            self.finished_cb()
 
         return GLib.SOURCE_REMOVE
 
@@ -64,6 +66,8 @@
                 self.tick_id = 
self.widget.add_tick_callback(self._on_frame_tick_fade_out)
 
             self._fade_out_step(self.start_time)
+        else:
+            self.finished_cb()
 
         return GLib.SOURCE_REMOVE
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/cinnamon-screensaver-3.8.2/src/widgets/powerWidget.py 
new/cinnamon-screensaver-3.8.3/src/widgets/powerWidget.py
--- old/cinnamon-screensaver-3.8.2/src/widgets/powerWidget.py   2018-06-08 
12:38:11.000000000 +0200
+++ new/cinnamon-screensaver-3.8.3/src/widgets/powerWidget.py   2018-10-16 
17:35:37.000000000 +0200
@@ -4,6 +4,7 @@
 
 from util import trackers
 import singletons
+import constants as c
 
 class PowerWidget(Gtk.Frame):
     """
@@ -29,6 +30,8 @@
 
         self.power_client = singletons.UPowerClient
 
+        self.battery_critical = False
+
         trackers.con_tracker_get().connect(self.power_client,
                                            "power-state-changed",
                                            self.on_power_state_changed)
@@ -39,11 +42,14 @@
 
         self.power_client.rescan_devices()
 
+        self.on_power_state_changed(self.power_client)
+
     def on_power_state_changed(self, client):
         for widget in self.box.get_children():
             widget.destroy()
 
         self.path_widget_pairs = []
+        self.battery_critical = False
 
         self.construct_icons()
 
@@ -81,6 +87,8 @@
 
             if pct > 0:
                 text = _("%d%%" % pct)
+                if pct < c.BATTERY_CRITICAL_PERCENT:
+                    self.battery_critical = True
         except Exception as e:
             pass
 


Reply via email to