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