Hello community,

here is the log from the commit of package cinnamon-screensaver for 
openSUSE:Factory checked in at 2018-04-26 13:37:14
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/cinnamon-screensaver (Old)
 and      /work/SRC/openSUSE:Factory/.cinnamon-screensaver.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "cinnamon-screensaver"

Thu Apr 26 13:37:14 2018 rev:13 rq:599333 version:3.8.0

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/cinnamon-screensaver/cinnamon-screensaver.changes    
    2017-11-14 12:55:51.573938386 +0100
+++ 
/work/SRC/openSUSE:Factory/.cinnamon-screensaver.new/cinnamon-screensaver.changes
   2018-04-26 13:37:15.805768896 +0200
@@ -1,0 +2,27 @@
+Thu Apr 19 20:07:54 UTC 2018 - [email protected]
+
+- Update to version 3.8.0:
+  * stage.py: Disconnect from, and destroy the CsScreen last, when
+    tearing down the stage.
+  * keybindings: Allow suspend, hibernate and screen rotation from
+    screensaver.
+  * libcscreensaver/service.py: Fix xdg-screensaver suspend.
+  * doc: Add back dbus interface documentation.
+  * dbus: Own other screensaver names to prevent them from being
+    activated on demand during a cinnamon session.
+  * nameBlocker.py: Watch for dbus activations and kill instead of
+    simply blocking.  See inline notes for explanation related to
+    xdg-screensaver.
+  * xscreensavers: Add safechild wrapper (from blueberry) - provides
+    better control over screensaver hack processes, to prevent
+    their lingering after the screensaver or cinnamon-settings is
+    done with them.
+  * xscreensavers: Use python3 for safechild, attempt to kill the
+    hack process when terminated.
+  * service, manager: Always complete the lock invocation, whether
+    we succeed or not, and whether we were already active or not.
+  * webkit script: Use correct path to user webkit screensavers.
+  * Don't show switch-user when org.cinnamon.desktop.lockdown
+    disable-user-switching is False.
+
+-------------------------------------------------------------------

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

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

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

Other differences:
------------------
++++++ cinnamon-screensaver.spec ++++++
--- /var/tmp/diff_new_pack.KXgUAT/_old  2018-04-26 13:37:16.409746761 +0200
+++ /var/tmp/diff_new_pack.KXgUAT/_new  2018-04-26 13:37:16.409746761 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package cinnamon-screensaver
 #
-# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -17,12 +17,12 @@
 
 
 Name:           cinnamon-screensaver
-Version:        3.6.1
+Version:        3.8.0
 Release:        0
 Summary:        Cinnamon screensaver and locker
-License:        GPL-2.0+
+License:        GPL-2.0-or-later
 Group:          System/GUI/Other
-Url:            https://github.com/linuxmint/cinnamon-screensaver
+URL:            https://github.com/linuxmint/cinnamon-screensaver
 Source:         
https://github.com/linuxmint/%{name}/archive/%{version}/%{name}-%{version}.tar.gz
 # PATCH-FIX-OPENSUSE cinnamon-screensaver-suse-pam.patch -- Use SUSE-specific 
PAM configuration.
 Patch0:         %{name}-suse-pam.patch
@@ -49,15 +49,13 @@
 Requires:       libcinnamon-desktop-data
 Requires:       python3-cairo
 Requires:       python3-gobject
+Requires:       python3-gobject-Gdk
 Requires:       python3-gobject-cairo
 Requires:       python3-setproctitle
 Requires:       python3-xapp
 Recommends:     %{name}-lang
 Recommends:     xscreensaver-data
 Suggests:       xscreensaver-data-extra
-%if 0%{?suse_version} > 1320 || 0%{?sle_version} >= 120200
-Requires:       python3-gobject-Gdk
-%endif
 
 %description
 cinnamon-screensaver is a screensaver and locker that aims to have
@@ -92,20 +90,21 @@
 
 %post
 /sbin/ldconfig
-%if 0%{?suse_version} <= 1320
+%if 0%{?suse_version} < 1500
 %desktop_database_post
 %icon_theme_cache_post
 %endif
 
 %postun
 /sbin/ldconfig
-%if 0%{?suse_version} <= 1320
+%if 0%{?suse_version} < 1500
 %desktop_database_postun
 %icon_theme_cache_postun
 %endif
 
 %files
-%doc AUTHORS COPYING* README debian/changelog
+%license COPYING*
+%doc AUTHORS README debian/changelog
 %config %{_sysconfdir}/pam.d/cinnamon-screensaver
 %{_bindir}/%{name}
 %{_bindir}/%{name}-command

++++++ cinnamon-screensaver-3.6.1.tar.gz -> cinnamon-screensaver-3.8.0.tar.gz 
++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cinnamon-screensaver-3.6.1/.circleci/config.yml 
new/cinnamon-screensaver-3.8.0/.circleci/config.yml
--- old/cinnamon-screensaver-3.6.1/.circleci/config.yml 1970-01-01 
01:00:00.000000000 +0100
+++ new/cinnamon-screensaver-3.8.0/.circleci/config.yml 2018-04-19 
13:46:25.000000000 +0200
@@ -0,0 +1,65 @@
+version: 2.0
+
+shared: &shared
+
+    steps:
+
+        - checkout
+
+        - run:
+            name: Prepare environment
+            command: apt-get update
+
+        - run:
+            name: Install dependencies
+            command: |
+                wget 
https://github.com/linuxmint/xapps/releases/download/master.${CIRCLE_JOB}/packages.tar.gz
 -O xapps.tar.gz
+                wget 
https://github.com/linuxmint/cinnamon-desktop/releases/download/master.${CIRCLE_JOB}/packages.tar.gz
 -O cinnamon-desktop.tar.gz
+                ls *.tar.gz | xargs -i tar zxvf {}
+                apt install --yes --allow-downgrades ./packages/*.deb
+                rm -rf packages
+
+        - run:
+            name: Build project
+            command: mint-build -i
+
+        - run:
+            name: Prepare packages
+            command: |
+                if [ -z $CI_PULL_REQUEST ]; then
+                    mkdir /packages
+                    mv /root/*.deb /packages/
+                    git log > /packages/git.log
+                    cd /
+                    tar zcvf packages.tar.gz packages
+                fi
+
+        - run:
+            name: Deploy packages to Github
+            command: |
+                if [ -z $CI_PULL_REQUEST ]; then
+                    wget 
https://github.com/tcnksm/ghr/releases/download/v0.5.4/ghr_v0.5.4_linux_amd64.zip
+                    apt-get install --yes unzip
+                    unzip ghr_v0.5.4_linux_amd64.zip
+                    TAG="master".$CIRCLE_JOB
+                    ./ghr -t $GITHUB_TOKEN -u $CIRCLE_PROJECT_USERNAME -r 
$CIRCLE_PROJECT_REPONAME -replace $TAG /packages.tar.gz
+                    ./ghr -t $GITHUB_TOKEN -u $CIRCLE_PROJECT_USERNAME -r 
$CIRCLE_PROJECT_REPONAME -recreate -b "Latest unstable packages" $TAG 
/packages.tar.gz
+                fi
+
+jobs:
+    "mint19":
+        <<: *shared
+        docker:
+            - image: linuxmintd/mint19-amd64
+
+    "lmde3":
+        <<: *shared
+        docker:
+            - image: linuxmintd/lmde3-amd64
+
+workflows:
+    version: 2
+    build:
+        jobs:
+            - "mint19"
+            - "lmde3"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cinnamon-screensaver-3.6.1/.gitignore 
new/cinnamon-screensaver-3.8.0/.gitignore
--- old/cinnamon-screensaver-3.6.1/.gitignore   2017-11-09 13:43:57.000000000 
+0100
+++ new/cinnamon-screensaver-3.8.0/.gitignore   2018-04-19 13:46:25.000000000 
+0200
@@ -52,7 +52,7 @@
 *.typelib
 *.pc
 .libs
-debian
+debian/files
 m4
 depcomp
 py-compile
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cinnamon-screensaver-3.6.1/configure.ac 
new/cinnamon-screensaver-3.8.0/configure.ac
--- old/cinnamon-screensaver-3.6.1/configure.ac 2017-11-09 13:43:57.000000000 
+0100
+++ new/cinnamon-screensaver-3.8.0/configure.ac 2018-04-19 13:46:25.000000000 
+0200
@@ -2,7 +2,7 @@
 
 AC_PREREQ(2.60)
 AC_INIT([cinnamon-screensaver],
-        [3.6.1],
+        [3.8.0],
         [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.6.1/debian/changelog 
new/cinnamon-screensaver-3.8.0/debian/changelog
--- old/cinnamon-screensaver-3.6.1/debian/changelog     2017-11-09 
13:43:57.000000000 +0100
+++ new/cinnamon-screensaver-3.8.0/debian/changelog     2018-04-19 
13:46:25.000000000 +0200
@@ -1,3 +1,51 @@
+cinnamon-screensaver (3.8.0) tara; urgency=medium
+
+  [ Michael Webster ]
+  * stage.py: Disconnect from, and destroy the CsScreen last, when tearing 
down the stage.
+
+  [ Clement Lefebvre ]
+  * Add CI configuration
+  * CI: Fix dependencies
+
+  [ Michael Thies ]
+  * keybindings: Allow suspend, hibernate and screen rotation from screensaver 
(#257)
+
+  [ itzexor ]
+  * libcscreensaver/service.py: fix xdg-screensaver suspend
+  * doc: add back dbus interface documentation
+
+  [ Michael Webster ]
+  * dbus: Own other screensaver names to prevent them from being activated on 
demand during a cinnamon session.
+  * nameBlocker.py: Watch for dbus activations and kill instead of simply 
blocking.  See inline notes for explanation related to xdg-screensaver.
+  * xscreensavers: Add safechild wrapper (from blueberry) - provides better 
control over screensaver hack processes, to prevent their lingering after the 
screensaver or cinnamon-settings is done with them.
+  * xscreensavers: Use python3 for safechild, attempt to kill the hack process 
when terminated.
+  * service, manager: always complete the lock invocation, whether we succeed 
or not, and whether we were already active or not.
+  * webkit script: Use correct path to user webkit screensavers.
+
+  [ Fabio Fantoni ]
+  * debian: wrap-and-sort -bst (#274)
+  * debian: Call autogen.sh with dh_autoreconf
+  * cleanup debian/rules from not needed gnome things
+  * debian: add missed gir to libcscreensaver0
+  * debian: right lib path from debian/rules without generate .install
+  * debian: improve python3 support
+  * Bump debhelper build-dep and compat to 10
+  * .gitignore: debian/files instead all debian folder
+  * improve debian/cinnamon-screensaver.install
+  * add debian/not-installed
+  * debian: remove old prerm
+  * update debian/copyright
+  * improve debian/control
+  * move pamhelper to libexec
+  * debian: remove cinnamon-screensaver-pam-helper, integrating in 
cinnamon-screensaver pkg
+  * circleci: remove mint18 job
+  * debian/control: add break/replace anyway to remove old 
cinnamon-screensaver-pam-helper
+
+  [ Clement Lefebvre ]
+  * Don't show switch-user when org.cinnamon.desktop.lockdown 
disable-user-switching is False
+
+ -- Clement Lefebvre <[email protected]>  Thu, 19 Apr 2018 12:46:03 +0100
+
 cinnamon-screensaver (3.6.1) sylvia; urgency=medium
 
   * Disable fade-in effects on idle
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/cinnamon-screensaver-3.6.1/debian/cinnamon-screensaver-pam-helper.install 
new/cinnamon-screensaver-3.8.0/debian/cinnamon-screensaver-pam-helper.install
--- 
old/cinnamon-screensaver-3.6.1/debian/cinnamon-screensaver-pam-helper.install   
    2017-11-09 13:43:57.000000000 +0100
+++ 
new/cinnamon-screensaver-3.8.0/debian/cinnamon-screensaver-pam-helper.install   
    2018-04-19 13:46:25.000000000 +0200
@@ -1 +1 @@
-/usr/lib/*/cinnamon-screensaver-pam-helper
\ No newline at end of file
+/usr/lib/*/cinnamon-screensaver-pam-helper
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/cinnamon-screensaver-3.6.1/debian/cinnamon-screensaver-x-plugin.install 
new/cinnamon-screensaver-3.8.0/debian/cinnamon-screensaver-x-plugin.install
--- old/cinnamon-screensaver-3.6.1/debian/cinnamon-screensaver-x-plugin.install 
2017-11-09 13:43:57.000000000 +0100
+++ new/cinnamon-screensaver-3.8.0/debian/cinnamon-screensaver-x-plugin.install 
2018-04-19 13:46:25.000000000 +0200
@@ -1 +1 @@
-/usr/share/cinnamon-screensaver/screensavers/[email protected]
\ No newline at end of file
+/usr/share/cinnamon-screensaver/screensavers/[email protected]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/cinnamon-screensaver-3.6.1/debian/cinnamon-screensaver.install 
new/cinnamon-screensaver-3.8.0/debian/cinnamon-screensaver.install
--- old/cinnamon-screensaver-3.6.1/debian/cinnamon-screensaver.install  
2017-11-09 13:43:57.000000000 +0100
+++ new/cinnamon-screensaver-3.8.0/debian/cinnamon-screensaver.install  
2018-04-19 13:46:25.000000000 +0200
@@ -1,16 +1,9 @@
-/usr/share/applications
-/usr/share/icons
-/usr/share/cinnamon-screensaver/*.py
-/usr/share/cinnamon-screensaver/*.css
-/usr/share/cinnamon-screensaver/__pycache__
-/usr/share/cinnamon-screensaver/dbusdepot/*.py
-/usr/share/cinnamon-screensaver/dbusdepot/__pycache__
-/usr/share/cinnamon-screensaver/pamhelper/*.py
-/usr/share/cinnamon-screensaver/pamhelper/__pycache__
-/usr/share/cinnamon-screensaver/util/*.py
-/usr/share/cinnamon-screensaver/util/__pycache__
-/usr/share/cinnamon-screensaver/widgets/*.py
-/usr/share/cinnamon-screensaver/widgets/__pycache__
-/usr/share/dbus-1
-/usr/bin
-/etc/pam.d/cinnamon-screensaver
+etc/pam.d/cinnamon-screensaver
+usr/bin
+usr/lib/*/cinnamon-screensaver/cinnamon-screensaver-pam-helper
+usr/share/applications
+usr/share/cinnamon-screensaver/*.css
+usr/share/cinnamon-screensaver/*.py
+usr/share/cinnamon-screensaver/*/*.py
+usr/share/dbus-1
+usr/share/icons
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/cinnamon-screensaver-3.6.1/debian/cinnamon-screensaver.prerm 
new/cinnamon-screensaver-3.8.0/debian/cinnamon-screensaver.prerm
--- old/cinnamon-screensaver-3.6.1/debian/cinnamon-screensaver.prerm    
2017-11-09 13:43:57.000000000 +0100
+++ new/cinnamon-screensaver-3.8.0/debian/cinnamon-screensaver.prerm    
1970-01-01 01:00:00.000000000 +0100
@@ -1,17 +0,0 @@
-#!/bin/bash
-
-set -e
-
-if [ -L /usr/bin/gnome-screensaver ]; then
-  echo "Removing link /usr/bin/gnome-screensaver"
-  rm -f /usr/bin/gnome-screensaver
-fi
-
-if [ -L /usr/bin/gnome-screensaver-command ]; then
-  echo "Removing link /usr/bin/gnome-screensaver-command"
-  rm -f /usr/bin/gnome-screensaver-command
-fi
-
-#DEBHELPER#
-
-exit 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cinnamon-screensaver-3.6.1/debian/compat 
new/cinnamon-screensaver-3.8.0/debian/compat
--- old/cinnamon-screensaver-3.6.1/debian/compat        2017-11-09 
13:43:57.000000000 +0100
+++ new/cinnamon-screensaver-3.8.0/debian/compat        2018-04-19 
13:46:25.000000000 +0200
@@ -1 +1 @@
-9
+10
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cinnamon-screensaver-3.6.1/debian/control 
new/cinnamon-screensaver-3.8.0/debian/control
--- old/cinnamon-screensaver-3.6.1/debian/control       2017-11-09 
13:43:57.000000000 +0100
+++ new/cinnamon-screensaver-3.8.0/debian/control       2018-04-19 
13:46:25.000000000 +0200
@@ -2,84 +2,85 @@
 Section: x11
 Priority: optional
 Maintainer: Linux Mint <[email protected]>
-Build-Depends: autoconf-archive,
-               debhelper (>= 9),
-               devscripts,
-               dh-autoreconf,
-               dh-python,
-               dh-exec,
-               librsvg2-bin,
-               python-rsvg,
-               libglib2.0-dev,
-               libdbus-1-dev,
-               libgtk-3-dev,
-               libglib2.0-dev,
-               libxext-dev,
-               libgirepository1.0-dev,
-               libpam0g-dev,
-               gobject-introspection,
-               intltool (>= 0.40.0),
-               gnome-pkg-tools (>= 0.10)
+Build-Depends:
+ autoconf-archive,
+ automake,
+ debhelper (>= 10),
+ dh-python,
+ gnome-pkg-tools (>= 0.10),
+ gobject-introspection,
+ intltool (>= 0.40.0),
+ libdbus-1-dev,
+ libgirepository1.0-dev,
+ libglib2.0-dev (>= 2.37.3),
+ libgtk-3-dev (>= 3.1.4),
+ libpam0g-dev,
+ librsvg2-bin,
+ libxext-dev,
+ python-rsvg,
+ python3,
 Standards-Version: 3.9.6
 
 Package: cinnamon-screensaver
-Architecture: all
+Architecture: any
 Pre-Depends: ${misc:Pre-Depends}
-Depends: cinnamon-desktop-data (>= 3.0.0),
-         python3,
-         python3-gi,
-         python3-gi-cairo,
-         python3-setproctitle,
-         python3-xapp (>= 1.0.1),
-         gir1.2-cinnamondesktop-3.0 (>= 3.5.0),
-         gir1.2-gkbd-3.0,
-         gir1.2-glib-2.0,
-         gir1.2-gtk-3.0,
-         gir1.2-accountsservice-1.0,
-         gir1.2-xapp-1.0,
-         libcscreensaver0,
-         iso-flag-png,
-         ${misc:Depends},
-         ${python:Depends},
-         ${shlibs:Depends},
-         cinnamon-screensaver-pam-helper
+Depends:
+ cinnamon-desktop-data (>= 3.5),
+ gir1.2-accountsservice-1.0,
+ gir1.2-cinnamondesktop-3.0 (>= 3.5),
+ gir1.2-gkbd-3.0,
+ gir1.2-glib-2.0,
+ gir1.2-gtk-3.0,
+ gir1.2-xapp-1.0,
+ iso-flag-png,
+ libcscreensaver0 (= ${binary:Version}),
+ python3,
+ python3-gi,
+ python3-gi-cairo,
+ python3-setproctitle,
+ python3-xapp (>= 1.0.1),
+ python3-xlib,
+ ${misc:Depends},
+ ${python3:Depends},
+ ${shlibs:Depends},
 Recommends: libpam-gnome-keyring
-Suggests: cinnamon-screensaver-x-plugin,
-          cinnamon-screensaver-webkit-plugin
+Breaks: cinnamon-screensaver-pam-helper (<< 3.8)
+Replaces: cinnamon-screensaver-pam-helper (<< 3.8)
+Suggests: cinnamon-screensaver-webkit-plugin, cinnamon-screensaver-x-plugin
 Description: Cinnamon screen saver and locker
  cinnamon-screensaver is a screen saver and locker that aims to have simple,
  sane and secure defaults, and be well integrated with the Cinnamon desktop.
 
-Package: cinnamon-screensaver-pam-helper
-Architecture: any
-Description: PAM helper for cinnamon-screensaver
-
-Package: cinnamon-screensaver-x-plugin
-Architecture: all
-Pre-Depends: ${misc:Pre-Depends}
-Depends: cinnamon-screensaver (>= 3.1.0),
-         xscreensaver-data
-Recommends: xscreensaver-data-extra,
-            xscreensaver-gl,
-            xscreensaver-gl-extra
-Description: XScreensaver plugin for cinnamon-screensaver
-
 Package: cinnamon-screensaver-webkit-plugin
 Architecture: all
 Pre-Depends: ${misc:Pre-Depends}
-Depends: cinnamon-screensaver (>= 3.1.0),
-         gir1.2-webkit2-4.0
+Depends:
+ cinnamon-screensaver (>= 3.1.0),
+ gir1.2-webkit2-4.0,
+ python3:any,
+ ${misc:Depends},
+ ${python3:Depends},
 Description: Webkit plugin for cinnamon-screensaver
+ cinnamon-screensaver is a screen saver and locker that aims to have simple,
+ sane and secure defaults, and be well integrated with the Cinnamon desktop.
+ .
+ This package contains the plugin for using webkit screensavers.
 
-Package: libcscreensaver0
-Section: libs
-Architecture: any
-Multi-Arch: same
+Package: cinnamon-screensaver-x-plugin
+Architecture: all
 Pre-Depends: ${misc:Pre-Depends}
-Depends: ${misc:Depends},
-         ${shlibs:Depends}
-Description: library and introspection data used only by cinnamon-screensaver
- to work around currently un-introspectable functions in Gdk-3.0
+Depends:
+ cinnamon-screensaver (>= 3.1.0),
+ python3:any,
+ xscreensaver-data,
+ ${misc:Depends},
+ ${python3:Depends},
+Recommends: xscreensaver-data-extra, xscreensaver-gl, xscreensaver-gl-extra
+Description: XScreensaver plugin for cinnamon-screensaver
+ cinnamon-screensaver is a screen saver and locker that aims to have simple,
+ sane and secure defaults, and be well integrated with the Cinnamon desktop.
+ .
+ This package contains the plugin for using the xscreensaver animations.
 
 Package: libcscreensaver-dbg
 Section: debug
@@ -90,3 +91,15 @@
 Depends: libcscreensaver0 (= ${binary:Version}), ${misc:Depends}
 Description: Cinnamon Screensaver library - debug symbols
  This package contains the symbols files needed to debug the Cinnamon 
Screensaver library.
+
+Package: libcscreensaver0
+Section: libs
+Architecture: any
+Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${gir:Depends}, ${misc:Depends}, ${shlibs:Depends}
+Description: library and introspection data used by cinnamon-screensaver
+ cinnamon-screensaver is a screen saver and locker that aims to have simple,
+ sane and secure defaults, and be well integrated with the Cinnamon desktop.
+ .
+ This package contains the library used by the screensaver.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cinnamon-screensaver-3.6.1/debian/copyright 
new/cinnamon-screensaver-3.8.0/debian/copyright
--- old/cinnamon-screensaver-3.6.1/debian/copyright     2017-11-09 
13:43:57.000000000 +0100
+++ new/cinnamon-screensaver-3.8.0/debian/copyright     2018-04-19 
13:46:25.000000000 +0200
@@ -4,5 +4,70 @@
 Source: https://github.com/linuxmint/cinnamon-screensaver.git
 
 Files: *
-Copyright: 2016
+Copyright: 2016, Michael Webster <[email protected]>
 License: GPL-2+
+
+Files: COPYING.LIB
+Copyright: 1951, Franklin Street - Suite 500, Boston, MA, 02110-1335, USA
+           1991, Free Software Foundation, Inc
+License: LGPL-2+
+
+Files: debian/*
+Copyright: 2014-2017, Maximiliano Curia <[email protected]>
+Copyright: 2013-2017, Linux Mint Project <[email protected]>
+License: LGPL-2+
+
+Files: libcscreensaver/setuid.c
+       libcscreensaver/setuid.h
+       libcscreensaver/subprocs.c
+       libcscreensaver/subprocs.h
+Copyright: 1991-2004, Jamie Zawinski <[email protected]>
+           2004, William Jon McCann <[email protected]>
+License: MIT/X11
+
+Files: po/Makefile.in.in
+Copyright: 2004-2008, Rodney Dawes <[email protected]>
+           1995-1997, Ulrich Drepper <[email protected]>
+License: Permissive
+
+License: GPL-2+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+ .
+ This program is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ General Public License for more details.
+ .
+ On Debian systems, the complete text of the GNU General Public License
+ version 2 can be found in `/usr/share/common-licenses/GPL-2'.
+
+License: LGPL-2+
+ This program is free software; you can redistribute it and/or modify it under
+ the terms of the GNU Library General Public License as published by the Free
+ Software Foundation; either version 2 of the License, or (at your option) any
+ later version.
+ .
+ This program is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ FOR A PARTICULAR PURPOSE.  See the GNU Library General Public License for
+ more details.
+ .
+ On Debian systems, the complete text of the GNU Library General Public License
+ version 2 can be found in `/usr/share/common-licenses/LGPL-2'.
+
+License: MIT/X11
+ Permission to use, copy, modify, distribute, and sell this software and its
+ documentation for any purpose is hereby granted without fee, provided that
+ the above copyright notice appear in all copies and that both that
+ copyright notice and this permission notice appear in supporting
+ documentation.  No representations are made about the suitability of this
+ software for any purpose.  It is provided "as is" without express or
+ implied warranty.
+
+License: Permissive
+ This file may be copied and used freely without restrictions.  It may
+ be used in projects which are not available under a GNU Public License,
+ but which still want to provide support for the GNU gettext functionality.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/cinnamon-screensaver-3.6.1/debian/libcscreensaver0.install 
new/cinnamon-screensaver-3.8.0/debian/libcscreensaver0.install
--- old/cinnamon-screensaver-3.6.1/debian/libcscreensaver0.install      
1970-01-01 01:00:00.000000000 +0100
+++ new/cinnamon-screensaver-3.8.0/debian/libcscreensaver0.install      
2018-04-19 13:46:25.000000000 +0200
@@ -0,0 +1,4 @@
+usr/lib/*/girepository-1.0/CScreensaver-1.0.typelib
+usr/lib/*/libcscreensaver.so.0
+usr/lib/*/libcscreensaver.so.0.*
+usr/share/gir-1.0/CScreensaver-1.0.gir
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/cinnamon-screensaver-3.6.1/debian/libcscreensaver0.install.in 
new/cinnamon-screensaver-3.8.0/debian/libcscreensaver0.install.in
--- old/cinnamon-screensaver-3.6.1/debian/libcscreensaver0.install.in   
2017-11-09 13:43:57.000000000 +0100
+++ new/cinnamon-screensaver-3.8.0/debian/libcscreensaver0.install.in   
1970-01-01 01:00:00.000000000 +0100
@@ -1,3 +0,0 @@
-DEB_PKG_CONFIG_LIBDIR/libcscreensaver.so.0
-DEB_PKG_CONFIG_LIBDIR/libcscreensaver.so.0.*
-DEB_PKG_CONFIG_LIBDIR/girepository-1.0/CScreensaver-1.0.typelib
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cinnamon-screensaver-3.6.1/debian/not-installed 
new/cinnamon-screensaver-3.8.0/debian/not-installed
--- old/cinnamon-screensaver-3.6.1/debian/not-installed 1970-01-01 
01:00:00.000000000 +0100
+++ new/cinnamon-screensaver-3.8.0/debian/not-installed 2018-04-19 
13:46:25.000000000 +0200
@@ -0,0 +1,8 @@
+# Internal lib, no need for the dev parts
+usr/lib/*/libcscreensaver.la
+usr/lib/*/libcscreensaver.so
+usr/lib/*/pkgconfig/cscreensaver.pc
+usr/include/cinnamon-screensaver/
+# precompiled python files
+*/__pycache__/
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cinnamon-screensaver-3.6.1/debian/rules 
new/cinnamon-screensaver-3.8.0/debian/rules
--- old/cinnamon-screensaver-3.6.1/debian/rules 2017-11-09 13:43:57.000000000 
+0100
+++ new/cinnamon-screensaver-3.8.0/debian/rules 2018-04-19 13:46:25.000000000 
+0200
@@ -1,23 +1,24 @@
 #!/usr/bin/make -f
 
-DEB_PKG_CONFIG_LIBDIR=$(shell pkg-config gobject-introspection-1.0 --variable 
libdir | sed -e 's/.//')
+export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed
+DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
 
 %:
-       dh $@ --parallel --with=autoreconf,gnome
+       dh $@ --with=python3,gir
 
-override_dh_gnome_clean:
-       dh_gnome_clean --no-control
+override_dh_autoreconf:
+       NOCONFIGURE=1 dh_autoreconf --as-needed ./autogen.sh
 
 override_dh_strip:
        dh_strip --dbg-package=libcscreensaver-dbg
 
+override_dh_auto_configure:
+       dh_auto_configure -- \
+           --enable-locking \
+           
--libexecdir=\$${prefix}/lib/$(DEB_HOST_MULTIARCH)/cinnamon-screensaver
+
 override_dh_install:
-       sed 's@DEB_PKG_CONFIG_LIBDIR@${DEB_PKG_CONFIG_LIBDIR}@' 
debian/libcscreensaver0.install.in > debian/libcscreensaver0.install
        dh_install --list-missing
 
-DEB_CONFIGURE_SCRIPT_ENV += PYTHON="/usr/bin/python3"
-
-DEB_MAKE_EXTRA_ARGS += pythondir=/usr/share/cinnamon-screensaver
-
-install/cinnamon-screensaver::
-       dh_python3 -p$(cdbs_curpkg)
+override_dh_python3:
+       dh_python3 usr/share/cinnamon-screensaver
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cinnamon-screensaver-3.6.1/doc/dbus-interface.html 
new/cinnamon-screensaver-3.8.0/doc/dbus-interface.html
--- old/cinnamon-screensaver-3.6.1/doc/dbus-interface.html      1970-01-01 
01:00:00.000000000 +0100
+++ new/cinnamon-screensaver-3.8.0/doc/dbus-interface.html      2018-04-19 
13:46:25.000000000 +0200
@@ -0,0 +1,171 @@
+<html><head><meta http-equiv="Content-Type" content="text/html; 
charset=ISO-8859-1"><title>Cinnamon Screensaver 1.8.0 
Documentation</title><meta name="generator" content="DocBook XSL Stylesheets 
V1.76.1"></head><body bgcolor="white" text="black" link="#0000FF" 
vlink="#840084" alink="#0000FF"><div class="book" title="Cinnamon Screensaver 
1.8.0 Documentation"><div class="titlepage"><div><div><h1 class="title"><a 
name="index"></a>Cinnamon Screensaver 1.8.0 Documentation</h1></div><div><div 
class="authorgroup"><div class="author"><h3 class="author"><span 
class="firstname">William Jon</span> <span 
class="surname">McCann</span></h3><div class="affiliation"><div 
class="address"><p><br>
+������������<code class="email">&lt;<a class="email" 
href="mailto:[email protected]";>[email protected]</a>&gt;</code><br>
+����������</p></div></div></div></div></div><div><p 
class="releaseinfo">Version 1.8.0</p></div></div><hr></div><div 
class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="chapter"><a 
href="#dbus-interface">1. DBUS Interface</a></span></dt><dd><dl><dt><span 
class="sect1"><a href="#gs-intro">Introduction</a></span></dt><dt><span 
class="sect1"><a href="#gs-methods">Methods</a></span></dt><dd><dl><dt><span 
class="sect2"><a href="#gs-method-Lock">
+        <code class="literal">Lock</code>
+      </a></span></dt><dt><span class="sect2"><a href="#gs-method-Cycle">
+        <code class="literal">Cycle</code>
+      </a></span></dt><dt><span class="sect2"><a 
href="#gs-method-SimulateUserActivity">
+        <code class="literal">SimulateUserActivity</code>
+      </a></span></dt><dt><span class="sect2"><a href="#gs-method-Throttle">
+        <code class="literal">Throttle</code>
+      </a></span></dt><dt><span class="sect2"><a href="#gs-method-UnThrottle">
+        <code class="literal">UnThrottle</code>
+      </a></span></dt><dt><span class="sect2"><a href="#gs-method-SetActive">
+        <code class="literal">SetActive</code>
+      </a></span></dt><dt><span class="sect2"><a href="#gs-method-GetActive">
+        <code class="literal">GetActive</code>
+      </a></span></dt><dt><span class="sect2"><a 
href="#gs-method-GetActiveTime">
+        <code class="literal">GetActiveTime</code>
+      </a></span></dt><dt><span class="sect2"><a 
href="#gs-method-GetSessionIdle">
+        <code class="literal">GetSessionIdle</code>
+      </a></span></dt><dt><span class="sect2"><a 
href="#gs-method-GetSessionIdleTime">
+        <code class="literal">GetSessionIdleTime</code>
+      </a></span></dt></dl></dd><dt><span class="sect1"><a 
href="#gs-signals">Signals</a></span></dt><dd><dl><dt><span class="sect2"><a 
href="#gs-signal-ActiveChanged">
+        <code class="literal">ActiveChanged</code>
+      </a></span></dt><dt><span class="sect2"><a 
href="#gs-signal-SessionIdleChanged">
+        <code class="literal">SessionIdleChanged</code>
+      </a></span></dt><dt><span class="sect2"><a 
href="#gs-signal-AuthenticationRequestBegin">
+        <code class="literal">AuthenticationRequestBegin</code>
+      </a></span></dt><dt><span class="sect2"><a 
href="#gs-signal-AuthenticationRequestEnd">
+        <code class="literal">AuthenticationRequestEnd</code>
+      </a></span></dt></dl></dd><dt><span class="sect1"><a 
href="#gs-examples">Examples</a></span></dt></dl></dd></dl></div><div 
class="chapter" title="Chapter�1.�DBUS Interface"><div 
class="titlepage"><div><div><h2 class="title"><a 
name="dbus-interface"></a>Chapter�1.�DBUS Interface</h2></div></div></div><div 
class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a 
href="#gs-intro">Introduction</a></span></dt><dt><span class="sect1"><a 
href="#gs-methods">Methods</a></span></dt><dd><dl><dt><span class="sect2"><a 
href="#gs-method-Lock">
+        <code class="literal">Lock</code>
+      </a></span></dt><dt><span class="sect2"><a href="#gs-method-Cycle">
+        <code class="literal">Cycle</code>
+      </a></span></dt><dt><span class="sect2"><a 
href="#gs-method-SimulateUserActivity">
+        <code class="literal">SimulateUserActivity</code>
+      </a></span></dt><dt><span class="sect2"><a href="#gs-method-Throttle">
+        <code class="literal">Throttle</code>
+      </a></span></dt><dt><span class="sect2"><a href="#gs-method-UnThrottle">
+        <code class="literal">UnThrottle</code>
+      </a></span></dt><dt><span class="sect2"><a href="#gs-method-SetActive">
+        <code class="literal">SetActive</code>
+      </a></span></dt><dt><span class="sect2"><a href="#gs-method-GetActive">
+        <code class="literal">GetActive</code>
+      </a></span></dt><dt><span class="sect2"><a 
href="#gs-method-GetActiveTime">
+        <code class="literal">GetActiveTime</code>
+      </a></span></dt><dt><span class="sect2"><a 
href="#gs-method-GetSessionIdle">
+        <code class="literal">GetSessionIdle</code>
+      </a></span></dt><dt><span class="sect2"><a 
href="#gs-method-GetSessionIdleTime">
+        <code class="literal">GetSessionIdleTime</code>
+      </a></span></dt></dl></dd><dt><span class="sect1"><a 
href="#gs-signals">Signals</a></span></dt><dd><dl><dt><span class="sect2"><a 
href="#gs-signal-ActiveChanged">
+        <code class="literal">ActiveChanged</code>
+      </a></span></dt><dt><span class="sect2"><a 
href="#gs-signal-SessionIdleChanged">
+        <code class="literal">SessionIdleChanged</code>
+      </a></span></dt><dt><span class="sect2"><a 
href="#gs-signal-AuthenticationRequestBegin">
+        <code class="literal">AuthenticationRequestBegin</code>
+      </a></span></dt><dt><span class="sect2"><a 
href="#gs-signal-AuthenticationRequestEnd">
+        <code class="literal">AuthenticationRequestEnd</code>
+      </a></span></dt></dl></dd><dt><span class="sect1"><a 
href="#gs-examples">Examples</a></span></dt></dl></div><p>
+    This API is currently unstable and is likely to change in the future.
+  </p><div class="sect1" title="Introduction"><div 
class="titlepage"><div><div><h2 class="title" style="clear: both"><a 
name="gs-intro"></a>Introduction</h2></div></div></div><p>
+      Cinnamon Screensaver exposes a DBUS API for programs to obtain 
information about
+      the screensaver state and to interact with the screensaver in limited 
ways.
+    </p><p>
+      The following constants are used to uniquely refer to the 
CinnamonScreensaver
+      object when making DBUS method calls:
+    </p><div class="informaltable"><table 
border="1"><colgroup><col><col></colgroup><tbody><tr><td>DBUS 
Service:</td><td><code 
class="literal">org.cinnamon.ScreenSaver</code></td></tr><tr><td>DBUS Object 
Path:</td><td><code 
class="literal">/org.cinnamon.ScreenSaver</code></td></tr><tr><td>DBUS 
Interface:</td><td><code 
class="literal">org.cinnamon.ScreenSaver</code></td></tr></tbody></table></div></div><div
 class="sect1" title="Methods"><div class="titlepage"><div><div><h2 
class="title" style="clear: both"><a 
name="gs-methods"></a>Methods</h2></div></div></div><p>
+      These are the DBUS methods.
+    </p><div class="sect2" title="Lock"><div class="titlepage"><div><div><h3 
class="title"><a name="gs-method-Lock"></a>
+        <code class="literal">Lock</code>
+      </h3></div></div></div><p>
+        Request that the screen be locked.
+      </p><div class="informaltable"><table 
border="1"><colgroup><col><col></colgroup><thead><tr><th>Direction</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>in</td><td>string</td><td>the
 away message</td></tr></tbody></table></div></div><div class="sect2" 
title="Cycle"><div class="titlepage"><div><div><h3 class="title"><a 
name="gs-method-Cycle"></a>
+        <code class="literal">Cycle</code>
+      </h3></div></div></div><p>
+        Request that the screen saver theme be restarted and, if applicable,
+        switch to the next one in the list.
+      </p></div><div class="sect2" title="SimulateUserActivity"><div 
class="titlepage"><div><div><h3 class="title"><a 
name="gs-method-SimulateUserActivity"></a>
+        <code class="literal">SimulateUserActivity</code>
+      </h3></div></div></div><p>
+        Simulate user activity.  If the screensaver is activated this
+        will attempt to deactivate and authentication will be
+        requested if necessary.  If the screensaver is not activated
+        then the idle timers will be reset.
+      </p></div><div class="sect2" title="Throttle"><div 
class="titlepage"><div><div><h3 class="title"><a name="gs-method-Throttle"></a>
+        <code class="literal">Throttle</code>
+      </h3></div></div></div><p>
+        Request that running themes while the screensaver is active be blocked
+        until UnThrottle is called or the calling process exits.
+      </p><div class="informaltable"><table 
border="1"><colgroup><col><col></colgroup><thead><tr><th>Direction</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>in</td><td>string</td><td>the
 application name, e.g. 
"gnome-power-manager"</td></tr><tr><td>in</td><td>string</td><td>the localized 
reason to inhibit, e.g. "on battery 
power"</td></tr><tr><td>out</td><td>unsigned integer</td><td>the 
cookie</td></tr></tbody></table></div><p>
+        A cookie is a random, unique, non-zero UINT32 used to identify the 
throttle request.
+      </p></div><div class="sect2" title="UnThrottle"><div 
class="titlepage"><div><div><h3 class="title"><a 
name="gs-method-UnThrottle"></a>
+        <code class="literal">UnThrottle</code>
+      </h3></div></div></div><p>
+        Cancel a previous call to Throttle() identified by the cookie.
+      </p><div class="informaltable"><table 
border="1"><colgroup><col><col></colgroup><thead><tr><th>Direction</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>in</td><td>unsigned
 integer</td><td>the cookie</td></tr></tbody></table></div></div><div 
class="sect2" title="SetActive"><div class="titlepage"><div><div><h3 
class="title"><a name="gs-method-SetActive"></a>
+        <code class="literal">SetActive</code>
+      </h3></div></div></div><p>
+        Request a change in the state of the screensaver.
+        Set to TRUE to request that the screensaver activate.
+        Active means that the screensaver has blanked the screen and may run a
+        graphical theme.  This does not necessary mean that the screen is 
locked.
+      </p><div class="informaltable"><table 
border="1"><colgroup><col><col></colgroup><thead><tr><th>Direction</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>in</td><td>boolean</td><td>TRUE
 to request activation, FALSE to request 
deactivation</td></tr></tbody></table></div></div><div class="sect2" 
title="GetActive"><div class="titlepage"><div><div><h3 class="title"><a 
name="gs-method-GetActive"></a>
+        <code class="literal">GetActive</code>
+      </h3></div></div></div><p>
+        Returns the value of the current state of activity. See SetActive().
+      </p><div class="informaltable"><table 
border="1"><colgroup><col><col></colgroup><thead><tr><th>Direction</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>out</td><td>boolean</td><td>Activation
 state</td></tr></tbody></table></div></div><div class="sect2" 
title="GetActiveTime"><div class="titlepage"><div><div><h3 class="title"><a 
name="gs-method-GetActiveTime"></a>
+        <code class="literal">GetActiveTime</code>
+      </h3></div></div></div><p>
+        Returns the number of seconds that the screensaver has been active.
+        Returns zero if the screensaver is not active.
+      </p><div class="informaltable"><table 
border="1"><colgroup><col><col></colgroup><thead><tr><th>Direction</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>out</td><td>unsigned
 integer</td><td>Active time in 
seconds</td></tr></tbody></table></div></div><div class="sect2" 
title="GetSessionIdle"><div class="titlepage"><div><div><h3 class="title"><a 
name="gs-method-GetSessionIdle"></a>
+        <code class="literal">GetSessionIdle</code>
+      </h3></div></div></div><p>
+        Returns the value of the current state of session idleness.
+      </p><div class="informaltable"><table 
border="1"><colgroup><col><col></colgroup><thead><tr><th>Direction</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>out</td><td>boolean</td><td>If
 the session is idle</td></tr></tbody></table></div></div><div class="sect2" 
title="GetSessionIdleTime"><div class="titlepage"><div><div><h3 
class="title"><a name="gs-method-GetSessionIdleTime"></a>
+        <code class="literal">GetSessionIdleTime</code>
+      </h3></div></div></div><p>
+        Returns the number of seconds that the session has been idle.
+        Returns zero if the session is not idle.
+      </p><div class="informaltable"><table 
border="1"><colgroup><col><col></colgroup><thead><tr><th>Direction</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>out</td><td>unsigned
 integer</td><td>Idle time in 
seconds</td></tr></tbody></table></div></div></div><div class="sect1" 
title="Signals"><div class="titlepage"><div><div><h2 class="title" 
style="clear: both"><a name="gs-signals"></a>Signals</h2></div></div></div><p>
+      These are the DBUS signals.
+    </p><div class="sect2" title="ActiveChanged"><div 
class="titlepage"><div><div><h3 class="title"><a 
name="gs-signal-ActiveChanged"></a>
+        <code class="literal">ActiveChanged</code>
+      </h3></div></div></div><p>
+        See method GetActive().
+      </p><div class="informaltable"><table 
border="1"><colgroup><col><col></colgroup><thead><tr><th>Direction</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>out</td><td>boolean</td><td>Returns
 the value of the current state of 
activity.</td></tr></tbody></table></div></div><div class="sect2" 
title="SessionIdleChanged"><div class="titlepage"><div><div><h3 
class="title"><a name="gs-signal-SessionIdleChanged"></a>
+        <code class="literal">SessionIdleChanged</code>
+      </h3></div></div></div><p>
+        See method GetActive().
+      </p><div class="informaltable"><table 
border="1"><colgroup><col><col></colgroup><thead><tr><th>Direction</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>out</td><td>boolean</td><td>Returns
 the value of the current state of 
activity.</td></tr></tbody></table></div></div><div class="sect2" 
title="AuthenticationRequestBegin"><div class="titlepage"><div><div><h3 
class="title"><a name="gs-signal-AuthenticationRequestBegin"></a>
+        <code class="literal">AuthenticationRequestBegin</code>
+      </h3></div></div></div><p>
+        Emitted before an authentication request
+      </p></div><div class="sect2" title="AuthenticationRequestEnd"><div 
class="titlepage"><div><div><h3 class="title"><a 
name="gs-signal-AuthenticationRequestEnd"></a>
+        <code class="literal">AuthenticationRequestEnd</code>
+      </h3></div></div></div><p>
+        Emitted after an authentication request
+      </p></div></div><div class="sect1" title="Examples"><div 
class="titlepage"><div><div><h2 class="title" style="clear: both"><a 
name="gs-examples"></a>Examples</h2></div></div></div><p>
+      You can get the number of seconds the screensaver has been active by
+      running the following:
+    </p><pre class="screen">
+dbus-send --session \
+          --dest=org.cinnamon.ScreenSaver \
+          --type=method_call \
+          --print-reply \
+          --reply-timeout=20000 \
+          /org/cinnamon/ScreenSaver \
+          org.cinnamon.ScreenSaver.GetSessionIdleTime
+    </pre><p>
+      You can activate the screensaver like so:
+    </p><pre class="screen">
+dbus-send --session \
+          --dest=org.cinnamon.ScreenSaver \
+          --type=method_call \
+          --print-reply \
+          --reply-timeout=20000 \
+          /org/cinnamon/ScreenSaver \
+          org.cinnamon.ScreenSaver.SetActive \
+          boolean:true
+    </pre><p>
+      You can monitor screensaver changes:
+    </p><pre class="screen">
+dbus-monitor --session \
+          "type='signal',interface='org.cinnamon.ScreenSaver'"
+    </pre><p>
+      Or watch for a specific screensaver signal:
+    </p><pre class="screen">
+dbus-monitor --session \
+          
"type='signal',interface='org.cinnamon.ScreenSaver',member='SessionIdleChanged'"
+    </pre></div></div></div></body></html>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/cinnamon-screensaver-3.6.1/libcscreensaver/cs-screen-x11.c 
new/cinnamon-screensaver-3.8.0/libcscreensaver/cs-screen-x11.c
--- old/cinnamon-screensaver-3.6.1/libcscreensaver/cs-screen-x11.c      
2017-11-09 13:43:57.000000000 +0100
+++ new/cinnamon-screensaver-3.8.0/libcscreensaver/cs-screen-x11.c      
2018-04-19 13:46:25.000000000 +0200
@@ -627,6 +627,20 @@
     return ret;
 }
 
+/**
+ * cs_screen_reset_screensaver:
+ *
+ * Resets the screensaver idle timer. If called when the screensaver is active
+ * it will stop it.
+ *
+ */
+
+void
+cs_screen_reset_screensaver (void)
+{
+    XResetScreenSaver (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()));
+}
+
 void
 cs_screen_nuke_focus (void)
 {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/cinnamon-screensaver-3.6.1/libcscreensaver/cs-screen.h 
new/cinnamon-screensaver-3.8.0/libcscreensaver/cs-screen.h
--- old/cinnamon-screensaver-3.6.1/libcscreensaver/cs-screen.h  2017-11-09 
13:43:57.000000000 +0100
+++ new/cinnamon-screensaver-3.8.0/libcscreensaver/cs-screen.h  2018-04-19 
13:46:25.000000000 +0200
@@ -64,6 +64,8 @@
 
 gint                         cs_screen_get_mouse_monitor (CsScreen *screen);
 
+void                         cs_screen_reset_screensaver (void);
+
 void                         cs_screen_nuke_focus (void);
 
 G_END_DECLS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/cinnamon-screensaver-3.6.1/screensavers/[email protected]/main 
new/cinnamon-screensaver-3.8.0/screensavers/[email protected]/main
--- old/cinnamon-screensaver-3.6.1/screensavers/[email protected]/main        
2017-11-09 13:43:57.000000000 +0100
+++ new/cinnamon-screensaver-3.8.0/screensavers/[email protected]/main        
2018-04-19 13:46:25.000000000 +0200
@@ -49,7 +49,7 @@
         if os.path.isfile(uri):
             self.webkit.load_uri("file://" + uri)
         else:
-            uri2 = os.path.join(os.getenv("HOME"), 
".local/share/cinnamon-screensaver/screensavers/webkit", plugin, "index.html")
+            uri2 = os.path.join(os.getenv("HOME"), 
".local/share/cinnamon-screensaver/screensavers/[email protected]", plugin, 
"index.html")
             self.webkit.load_uri("file://" + uri2)
 
         self.webkit.show()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/cinnamon-screensaver-3.6.1/screensavers/[email protected]/Makefile.am
 
new/cinnamon-screensaver-3.8.0/screensavers/[email protected]/Makefile.am
--- 
old/cinnamon-screensaver-3.6.1/screensavers/[email protected]/Makefile.am
   2017-11-09 13:43:57.000000000 +0100
+++ 
new/cinnamon-screensaver-3.8.0/screensavers/[email protected]/Makefile.am
   2018-04-19 13:46:25.000000000 +0200
@@ -2,7 +2,7 @@
 SUBDIRS = 
 
 xscreensaversdir = $(pkgdatadir)/screensavers/[email protected]
-xscreensavers_SCRIPTS = main
+xscreensavers_SCRIPTS = main safechild
 
 MAINTAINERCLEANFILES = Makefile.in
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/cinnamon-screensaver-3.6.1/screensavers/[email protected]/main 
new/cinnamon-screensaver-3.8.0/screensavers/[email protected]/main
--- old/cinnamon-screensaver-3.6.1/screensavers/[email protected]/main  
2017-11-09 13:43:57.000000000 +0100
+++ new/cinnamon-screensaver-3.8.0/screensavers/[email protected]/main  
2018-04-19 13:46:25.000000000 +0200
@@ -10,6 +10,7 @@
 import syslog
 import signal
 import os
+import psutil
 
 signal.signal(signal.SIGINT, signal.SIG_DFL)
 
@@ -29,6 +30,7 @@
         GLib.unix_signal_add(GLib.PRIORITY_HIGH, signal.SIGTERM, 
self.on_terminate)
 
         self.proc = None
+        self.hack = None
 
         if self.args.standalone:
             self.plug = Gtk.Window()
@@ -71,15 +73,24 @@
             try:
                 path = shlex.split(direc + hack)
                 if os.path.exists(path[0]):
+                    sc_path = self.get_safechild_path()
+
+                    if sc_path == None:
+                        raise Exception("Cannot find safechild subprocess 
wrapper, exiting")
+
+                    path.insert(0, sc_path)
                     path.append("-window-id")
                     path.append(str(self.xid))
+
+                    self.hack = hack
+
                     try:
-                        self.proc = Gio.Subprocess.new(path, 
Gio.SubprocessFlags.NONE)
+                        self.proc = Gio.Subprocess.new(path, 
Gio.SubprocessFlags.STDIN_PIPE)
                         success = True
                     except GLib.Error as e:
                         print("Error spawning screensaver hack: %s" % 
e.message)
             except Exception as e:
-                pass
+                print(e)
 
         if not success:
             syslog.syslog("cinnamon-screensaver: Screensaver '%s' not found" % 
hack)
@@ -95,14 +106,33 @@
 
     def kill_plugin(self):
         if self.proc:
-            self.proc.send_signal(signal.SIGTERM)
+            self.proc.force_exit()
             self.proc = None
 
+        for proc in psutil.process_iter():
+            if proc.name() == self.hack:
+                proc.kill()
+
     def on_terminate(self, data=None):
         self.kill_plugin()
         self.plug.destroy()
         Gtk.main_quit()
 
+    def get_safechild_path(self):
+        datadirs = GLib.get_system_data_dirs()
+
+        for datadir in datadirs:
+            try_path = os.path.join(datadir,
+                                    "cinnamon-screensaver",
+                                    "screensavers",
+                                    "[email protected]",
+                                    "safechild")
+
+            if os.path.exists(try_path):
+                return try_path
+
+        return None
+
     def ensure_config_file(self):
         """
         Check for a .xscreensaver file in the user home folder.  If it doesn't 
exist,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/cinnamon-screensaver-3.6.1/screensavers/[email protected]/safechild 
new/cinnamon-screensaver-3.8.0/screensavers/[email protected]/safechild
--- 
old/cinnamon-screensaver-3.6.1/screensavers/[email protected]/safechild 
    1970-01-01 01:00:00.000000000 +0100
+++ 
new/cinnamon-screensaver-3.8.0/screensavers/[email protected]/safechild 
    2018-04-19 13:46:25.000000000 +0200
@@ -0,0 +1,35 @@
+#!/usr/bin/python3
+
+import subprocess
+import sys
+
+"""
+Wrapper for xscreensaver binaries.
+
+This script spawns a process, then monitors stdin of its own parent
+and terminates the child when an EOF is received from the parent.
+
+This will happen when safechild's parent exits and its
+pipes are closed, regardless of *how* it got terminated.
+
+This script must be spawned by its parent with a STDIN pipe.  The pipe
+never actually needs to be used or access (in fact it's probably safer
+if it *isn't* accessed, since unless you're careful, garbage collection
+may cause an EOF to be sent, causing early termination of this script
+and its child.)
+
+"""
+
+proc = None
+
+try:
+    proc = subprocess.Popen(sys.argv[1:])
+
+    while True:
+        line = sys.stdin.readline()
+        if line == "":
+            proc.kill()
+            proc.wait()
+            break
+except Exception as e:
+    print("safechild exception: ", e)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cinnamon-screensaver-3.6.1/src/dbusdepot/Makefile.am 
new/cinnamon-screensaver-3.8.0/src/dbusdepot/Makefile.am
--- old/cinnamon-screensaver-3.6.1/src/dbusdepot/Makefile.am    2017-11-09 
13:43:57.000000000 +0100
+++ new/cinnamon-screensaver-3.8.0/src/dbusdepot/Makefile.am    2018-04-19 
13:46:25.000000000 +0200
@@ -17,6 +17,7 @@
         logindClient.py \
         loginInterface.py \
         mediaPlayerWatcher.py \
+        nameBlocker.py \
         screensaverClient.py \
         sessionClient.py \
         uPowerClient.py \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/cinnamon-screensaver-3.6.1/src/dbusdepot/nameBlocker.py 
new/cinnamon-screensaver-3.8.0/src/dbusdepot/nameBlocker.py
--- old/cinnamon-screensaver-3.6.1/src/dbusdepot/nameBlocker.py 1970-01-01 
01:00:00.000000000 +0100
+++ new/cinnamon-screensaver-3.8.0/src/dbusdepot/nameBlocker.py 2018-04-19 
13:46:25.000000000 +0200
@@ -0,0 +1,63 @@
+#!/usr/bin/python3
+
+from gi.repository import Gio, GObject, GLib
+
+import status
+
+class NameBlocker(GObject.GObject):
+    """
+    Terminates other screensavers.  Ideally we'd just take ownership of their
+    dbus names, but due to how DE detection works in xdg-screensaver, that 
script
+    incorrectly assumes we're a gnome or mate session if their names are owned.
+    """
+    def __init__(self):
+        super(NameBlocker, self).__init__()
+
+        self.owned_names = []
+
+        self.watch("org.gnome.ScreenSaver")
+        self.watch("org.mate.ScreenSaver")
+
+    def watch(self, name):
+        handle = Gio.bus_watch_name(Gio.BusType.SESSION,
+                                    name,
+                                    Gio.BusNameWatcherFlags.NONE,
+                                    self.on_name_appeared,
+                                    self.on_name_lost)
+
+        self.owned_names.append((handle, "name"))
+
+    def unwatch_all(self):
+        for (handle, name) in self.owned_names:
+            if status.Debug:
+                print("Releasing dbus name: %s" % name)
+
+            Gio.bus_unown_name(handle)
+
+        self.owned_names = []
+
+    def on_name_appeared(self, connection, name, name_owner, data=None):
+        if status.Debug:
+            print("%s appeared on the session bus, killing it" % name)
+
+        connection.call(name_owner,
+                        "/" + name.replace(".", "/"),
+                        name,
+                        "Quit",
+                        None,
+                        None,
+                        Gio.DBusCallFlags.NONE,
+                        -1,
+                        None)
+
+    def on_name_lost(self, connection, name, data=None):
+        if status.Debug:
+            print("%s is gone from the session bus" % name)
+
+    def do_dispose(self):
+        if status.Debug:
+            print("nameBlocker do_dispose")
+
+        self.unwatch_all()
+
+        super(NameBlocker, self).do_dispose()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cinnamon-screensaver-3.6.1/src/manager.py 
new/cinnamon-screensaver-3.8.0/src/manager.py
--- old/cinnamon-screensaver-3.6.1/src/manager.py       2017-11-09 
13:43:57.000000000 +0100
+++ new/cinnamon-screensaver-3.8.0/src/manager.py       2018-04-19 
13:46:25.000000000 +0200
@@ -54,18 +54,28 @@
 
     def lock(self, msg=""):
         """
-        Initiate locking (activating first if necessary.)
+        Initiate locking (activating first if necessary.)  Return True if we 
were
+        already active and just need to set the lock flag (or we were already 
locked
+        as well).  Return False if we're not active, and need to construct a 
stage, etc...
         """
         if not status.Active:
             if self.set_active(True, True, msg):
                 self.stop_lock_delay()
                 if utils.user_can_lock():
                     status.Locked = True
+                return False
         else:
             if utils.user_can_lock():
                 status.Locked = True
             self.stage.set_message(msg)
 
+        # Return True to complete any invocation immediately because:
+        # - we were already active and possibly already locked
+        # - we were unable to achieve a server grab, or something else
+        #   prevents the activation from proceeding, and we don't want to
+        #   block anything...??
+        return True
+
     def unlock(self):
         """
         Initiate unlocking and deactivating
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cinnamon-screensaver-3.6.1/src/pamhelper/Makefile.am 
new/cinnamon-screensaver-3.8.0/src/pamhelper/Makefile.am
--- old/cinnamon-screensaver-3.6.1/src/pamhelper/Makefile.am    2017-11-09 
13:43:57.000000000 +0100
+++ new/cinnamon-screensaver-3.8.0/src/pamhelper/Makefile.am    2018-04-19 
13:46:25.000000000 +0200
@@ -5,9 +5,10 @@
 
 SUBDIRS =
 
-pamhelperdir = $(datadir)/cinnamon-screensaver/pamhelper
+pamhelperdatadir = $(datadir)/cinnamon-screensaver/pamhelper
+pamhelperdir = $(libexecdir)/pamhelper
 
-pamhelper_PYTHON = \
+pamhelperdata_PYTHON = \
     authClient.py \
     $(NULL)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/cinnamon-screensaver-3.6.1/src/pamhelper/authClient.py 
new/cinnamon-screensaver-3.8.0/src/pamhelper/authClient.py
--- old/cinnamon-screensaver-3.6.1/src/pamhelper/authClient.py  2017-11-09 
13:43:57.000000000 +0100
+++ new/cinnamon-screensaver-3.8.0/src/pamhelper/authClient.py  2018-04-19 
13:46:25.000000000 +0200
@@ -2,6 +2,7 @@
 
 from gi.repository import Gio, GObject, GLib, CScreensaver
 
+import config
 import re
 import os
 import signal
@@ -40,7 +41,7 @@
         try:
             helper_path = None
             architecture = platform.machine()
-            paths = ["/usr/lib", "/usr/lib/cinnamon-screensaver", 
"/usr/libexec", "/usr/libexec/cinnamon-screensaver"]
+            paths = [config.libexecdir, "/usr/lib", 
"/usr/lib/cinnamon-screensaver", "/usr/libexec", 
"/usr/libexec/cinnamon-screensaver"]
 
             # On x86 archs, iterate through multiple paths
             # For instance, on a Mint i686 box, the path is actually 
/usr/lib/i386-linux-gnu
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cinnamon-screensaver-3.6.1/src/service.py 
new/cinnamon-screensaver-3.8.0/src/service.py
--- old/cinnamon-screensaver-3.6.1/src/service.py       2017-11-09 
13:43:57.000000000 +0100
+++ new/cinnamon-screensaver-3.8.0/src/service.py       2018-04-19 
13:46:25.000000000 +0200
@@ -7,6 +7,7 @@
 
 import constants as c
 from manager import ScreensaverManager
+import status
 
 class ScreensaverService(GObject.Object):
     """
@@ -92,9 +93,22 @@
 
 # Interface handlers
     def handle_lock(self, iface, inv, msg):
-        self.lock_queue.append(inv)
+        """
+        We want to be able to respond to locking synchronously for security 
reasons.
+        Things like cinnamon-settings-daemon (power) and cinnamon-session use 
the
+        cinnamon-screensaver-command helper script to lock the screen during 
certain events
+        like sleep, hibernate, user switching, etc...
+
+        If we receive a lock request, we forward it to the manager.  It 
returns True if we were
+        already active (or active and locked.)  If so, we can complete the 
invocation immediately.
+        Otherwise, we queue the invocation, and wait for an "active-changed" 
signal from the manager,
+        and then complete the invocations (in the same order they were 
received.)
+        """
 
-        self.manager.lock(msg)
+        if self.manager.lock(msg):
+            iface.complete_lock(inv)
+        else:
+            self.lock_queue.append(inv)
 
         return True
 
@@ -131,6 +145,11 @@
     def handle_simulate_user_activity(self, iface, inv):
         if self.manager.is_locked():
             self.manager.simulate_user_activity()
+        else:
+            if status.Debug:
+                print("Calling XResetScreenSaver");
+
+            CScreensaver.Screen.reset_screensaver()
 
         iface.complete_simulate_user_activity(inv)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cinnamon-screensaver-3.6.1/src/singletons.py 
new/cinnamon-screensaver-3.8.0/src/singletons.py
--- old/cinnamon-screensaver-3.6.1/src/singletons.py    2017-11-09 
13:43:57.000000000 +0100
+++ new/cinnamon-screensaver-3.8.0/src/singletons.py    2018-04-19 
13:46:25.000000000 +0200
@@ -5,6 +5,11 @@
 from util import trackers, settings
 import status
 
+# Watch for, and kill, mate- and gnome-screensaver in case they're activated 
by a program
+# over dbus.
+from dbusdepot.nameBlocker import NameBlocker as _NameBlocker
+NameBlocker = _NameBlocker()
+
 # Our dbus proxies are abstracted out one level more than really necessary - 
we have
 # clients that the screensaver initializes, that can never fail.  The actual 
connection
 # business to the various dbus address is performed asynchronously from within 
each client.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cinnamon-screensaver-3.6.1/src/stage.py 
new/cinnamon-screensaver-3.8.0/src/stage.py
--- old/cinnamon-screensaver-3.6.1/src/stage.py 2017-11-09 13:43:57.000000000 
+0100
+++ new/cinnamon-screensaver-3.8.0/src/stage.py 2018-04-19 13:46:25.000000000 
+0200
@@ -369,9 +369,12 @@
                                               "monitors-changed",
                                               self.on_monitors_changed)
 
-        status.screen = None
+        trackers.con_tracker_get().disconnect(self.overlay,
+                                              "get-child-position",
+                                              self.position_overlay_child)
 
         self.destroy()
+        status.screen = None
 
     def setup_monitors(self):
         """
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cinnamon-screensaver-3.6.1/src/unlock.py 
new/cinnamon-screensaver-3.8.0/src/unlock.py
--- old/cinnamon-screensaver-3.6.1/src/unlock.py        2017-11-09 
13:43:57.000000000 +0100
+++ new/cinnamon-screensaver-3.8.0/src/unlock.py        2018-04-19 
13:46:25.000000000 +0200
@@ -3,7 +3,7 @@
 
 import gi
 
-from gi.repository import Gtk, Gdk, GObject, CScreensaver
+from gi.repository import Gtk, Gdk, GObject, CScreensaver, Gio
 import traceback
 
 
@@ -40,6 +40,8 @@
     def __init__(self):
         super(UnlockDialog, self).__init__()
 
+        settings = Gio.Settings.new("org.cinnamon.desktop.lockdown")
+
         self.set_halign(Gtk.Align.CENTER)
         self.set_valign(Gtk.Align.CENTER)
 
@@ -94,18 +96,14 @@
 
         button_box.pack_start(self.auth_unlock_button, False, False, 4)
 
-        self.auth_switch_button = 
TransparentButton("screensaver-switch-users-symbolic", 
Gtk.IconSize.LARGE_TOOLBAR)
-        self.auth_switch_button.set_tooltip_text(_("Switch User"))
-
-        trackers.con_tracker_get().connect(self.auth_switch_button,
-                                           "clicked",
-                                           self.on_switch_user_clicked)
-
-        button_box.pack_start(self.auth_switch_button, False, False, 4)
+        status.focusWidgets = [self.password_entry, self.auth_unlock_button]
 
-        status.focusWidgets = [self.password_entry,
-                               self.auth_unlock_button,
-                               self.auth_switch_button]
+        if not settings.get_boolean("disable-user-switching"):
+            self.auth_switch_button = 
TransparentButton("screensaver-switch-users-symbolic", 
Gtk.IconSize.LARGE_TOOLBAR)
+            self.auth_switch_button.set_tooltip_text(_("Switch User"))
+            trackers.con_tracker_get().connect(self.auth_switch_button, 
"clicked", self.on_switch_user_clicked)
+            button_box.pack_start(self.auth_switch_button, False, False, 4)
+            status.focusWidgets.append(self.auth_switch_button)
 
         vbox_messages = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, 
spacing=2)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cinnamon-screensaver-3.6.1/src/util/keybindings.py 
new/cinnamon-screensaver-3.8.0/src/util/keybindings.py
--- old/cinnamon-screensaver-3.6.1/src/util/keybindings.py      2017-11-09 
13:43:57.000000000 +0100
+++ new/cinnamon-screensaver-3.8.0/src/util/keybindings.py      2018-04-19 
13:46:25.000000000 +0200
@@ -29,8 +29,11 @@
                    MK.TOUCHPAD_ON,
                    MK.TOUCHPAD_OFF,
                    MK.SHUTDOWN,
+                   MK.SUSPEND,
+                   MK.HIBERNATE,
                    MK.SCREEN_BRIGHTNESS_UP,
                    MK.SCREEN_BRIGHTNESS_DOWN,
+                   MK.ROTATE_VIDEO,
                    MK.KEYBOARD_BRIGHTNESS_UP,
                    MK.KEYBOARD_BRIGHTNESS_DOWN,
                    MK.KEYBOARD_BRIGHTNESS_TOGGLE]


Reply via email to