Hello community,

here is the log from the commit of package cinnamon-screensaver for 
openSUSE:Factory checked in at 2016-11-28 15:09:28
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/cinnamon-screensaver (Old)
 and      /work/SRC/openSUSE:Factory/.cinnamon-screensaver.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "cinnamon-screensaver"

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/cinnamon-screensaver/cinnamon-screensaver.changes    
    2016-11-18 22:03:54.000000000 +0100
+++ 
/work/SRC/openSUSE:Factory/.cinnamon-screensaver.new/cinnamon-screensaver.changes
   2016-11-28 15:09:29.000000000 +0100
@@ -1,0 +2,16 @@
+Fri Nov 25 20:23:14 UTC 2016 - [email protected]
+
+- Update to version 3.2.6 (changes since 3.2.4):
+  * Remove the position bar and position labels in infobar.
+  * Remove an import on BlinkLabel.
+
+-------------------------------------------------------------------
+Thu Nov 24 10:25:32 UTC 2016 - [email protected]
+
+- Update to version 3.2.4:
+  * Replace cinnamon-screensaver bin script with
+    cinnamon-screensaver.c, to perform setuid checks and fixes
+    prior to python and gtk starting.
+  * utils.py: Remove liveuser check, it doesn't work as expected.
+
+-------------------------------------------------------------------

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

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

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

Other differences:
------------------
++++++ cinnamon-screensaver.spec ++++++
--- /var/tmp/diff_new_pack.CGq7S9/_old  2016-11-28 15:09:30.000000000 +0100
+++ /var/tmp/diff_new_pack.CGq7S9/_new  2016-11-28 15:09:30.000000000 +0100
@@ -17,7 +17,7 @@
 
 
 Name:           cinnamon-screensaver
-Version:        3.2.3
+Version:        3.2.6
 Release:        0
 Summary:        Cinnamon screensaver and locker
 License:        GPL-2.0+

++++++ cinnamon-screensaver-3.2.3.tar.gz -> cinnamon-screensaver-3.2.6.tar.gz 
++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cinnamon-screensaver-3.2.3/configure.ac 
new/cinnamon-screensaver-3.2.6/configure.ac
--- old/cinnamon-screensaver-3.2.3/configure.ac 2016-11-17 10:50:34.000000000 
+0100
+++ new/cinnamon-screensaver-3.2.6/configure.ac 2016-11-24 23:39:41.000000000 
+0100
@@ -2,7 +2,7 @@
 
 AC_PREREQ(2.60)
 AC_INIT([cinnamon-screensaver],
-        [3.2.3],
+        [3.2.6],
         [https://github.com/linuxmint/cinnamon-screensaver/issues])
 
 PKG_PROG_PKG_CONFIG([0.26])
@@ -50,6 +50,8 @@
 
 AM_PATH_PYTHON(3.4)
 
+PKG_CHECK_MODULES(SCREENSAVER_MAIN, glib-2.0)
+
 PKG_CHECK_MODULES(CSCREENSAVER, gobject-2.0 gtk+-3.0 gdk-x11-3.0 x11 glib-2.0 
gio-2.0)
 
 have_shape=no
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cinnamon-screensaver-3.2.3/debian/changelog 
new/cinnamon-screensaver-3.2.6/debian/changelog
--- old/cinnamon-screensaver-3.2.3/debian/changelog     2016-11-17 
10:50:34.000000000 +0100
+++ new/cinnamon-screensaver-3.2.6/debian/changelog     2016-11-24 
23:39:41.000000000 +0100
@@ -1,3 +1,23 @@
+cinnamon-screensaver (3.2.6) serena; urgency=medium
+
+  * Remove import on BlinkLabel
+
+ -- Clement Lefebvre <[email protected]>  Thu, 24 Nov 2016 22:38:57 +0000
+
+cinnamon-screensaver (3.2.5) serena; urgency=medium
+
+  * Remove position bar and position labels in infobar
+
+ -- Clement Lefebvre <[email protected]>  Thu, 24 Nov 2016 18:55:32 +0000
+
+cinnamon-screensaver (3.2.4) serena; urgency=medium
+
+  [ Michael Webster ]
+  * Replace cinnamon-screensaver bin script with cinnamon-screensaver.c, to 
perform setuid checks and fixes prior to python and gtk starting.
+  * utils.py: remove liveuser check, it doesn't work as expected.
+
+ -- Clement Lefebvre <[email protected]>  Wed, 23 Nov 2016 12:47:48 +0000
+
 cinnamon-screensaver (3.2.3) serena; urgency=medium
 
   [ Willy Sudiarto Raharjo ]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/cinnamon-screensaver-3.2.3/libcscreensaver/Makefile.am 
new/cinnamon-screensaver-3.2.6/libcscreensaver/Makefile.am
--- old/cinnamon-screensaver-3.2.3/libcscreensaver/Makefile.am  2016-11-17 
10:50:34.000000000 +0100
+++ new/cinnamon-screensaver-3.2.6/libcscreensaver/Makefile.am  2016-11-24 
23:39:41.000000000 +0100
@@ -134,8 +134,6 @@
 libcscreensaver_la_gir_sources =             \
     cs-gdk-event-filter.c \
     cs-gdk-event-filter.h \
-    cs-init-utils.c \
-    cs-init-utils.h \
     cs-notification-watcher.c \
     cs-notification-watcher.h \
     $(dbus_built_sources) \
@@ -143,8 +141,6 @@
 
 libcscreensaver_la_SOURCES =             \
     $(libcscreensaver_la_gir_sources)        \
-    setuid.c \
-    setuid.h \
     $(NULL)
 
 libcscreensaver_la_LIBADD =  \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/cinnamon-screensaver-3.2.3/libcscreensaver/cs-init-utils.c 
new/cinnamon-screensaver-3.2.6/libcscreensaver/cs-init-utils.c
--- old/cinnamon-screensaver-3.2.3/libcscreensaver/cs-init-utils.c      
2016-11-17 10:50:34.000000000 +0100
+++ new/cinnamon-screensaver-3.2.6/libcscreensaver/cs-init-utils.c      
1970-01-01 01:00:00.000000000 +0100
@@ -1,94 +0,0 @@
-#include <config.h>
-
-#include "setuid.h"
-#include <glib/gstdio.h>
-#include <fcntl.h>
-#include <stdio.h>
-#include <string.h>
-#include <sys/types.h>
-
-#include "cs-init-utils.h"
-
-/*
- * Portions:
- * Copyright (c) 1991-2004 Jamie Zawinski <[email protected]>
- * Copyright (c) 2005 William Jon McCann <[email protected]>
- */
-
-#define PAM_SERVICE_NAME "cinnamon-desktop"
-
-/* from gs-auth-pam.c */
-static gboolean
-pam_check (void)
-{
-    gboolean ret = TRUE;
-
-    const char   dir [] = "/etc/pam.d";
-    const char  file [] = "/etc/pam.d/" PAM_SERVICE_NAME;
-    const char file2 [] = "/etc/pam.conf";
-    struct stat st;
-
-    if (g_stat (dir, &st) == 0 && st.st_mode & S_IFDIR) {
-        if (g_stat (file, &st) != 0) {
-            g_warning ("%s does not exist.\n"
-                       "Authentication via PAM is unlikely to work.",
-                       file);
-            ret = FALSE;
-        }
-    } else if (g_stat (file2, &st) == 0) {
-        FILE *f = g_fopen (file2, "r");
-        if (f) {
-            gboolean ok = FALSE;
-            char buf[255];
-            while (fgets (buf, sizeof(buf), f)) {
-                if (strstr (buf, PAM_SERVICE_NAME)) {
-                    ok = TRUE;
-                    break;
-                }
-            }
-
-            fclose (f);
-            if (!ok) {
-                g_warning ("%s does not list the `%s' service.\n"
-                           "Authentication via PAM is unlikely to work.",
-                           file2, PAM_SERVICE_NAME);
-                ret = FALSE;
-            }
-        }
-    /* else warn about file2 existing but being unreadable? */
-    } else {
-        g_warning ("Neither %s nor %s exist.\n"
-                   "Authentication via PAM is unlikely to work.",
-                   file2, file);
-        ret = FALSE;
-    }
-
-    return ret;
-}
-
-gboolean
-cs_init_utils_initialize_locking (gboolean debug)
-{
-    gboolean ret;
-    char    *nolock_reason;
-    char    *orig_uid;
-    char    *uid_message;
-
-    ret = pam_check () && hack_uid (&nolock_reason,
-                                    &orig_uid,
-                                    &uid_message);
-
-    if (nolock_reason) {
-        g_print ("Locking disabled: %s\n", nolock_reason);
-    }
-
-    if (uid_message && debug) {
-        g_print ("Modified UID: %s\n", uid_message);
-    }
-
-    g_free (nolock_reason);
-    g_free (orig_uid);
-    g_free (uid_message);
-
-    return ret;
-}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/cinnamon-screensaver-3.2.3/libcscreensaver/cs-init-utils.h 
new/cinnamon-screensaver-3.2.6/libcscreensaver/cs-init-utils.h
--- old/cinnamon-screensaver-3.2.3/libcscreensaver/cs-init-utils.h      
2016-11-17 10:50:34.000000000 +0100
+++ new/cinnamon-screensaver-3.2.6/libcscreensaver/cs-init-utils.h      
1970-01-01 01:00:00.000000000 +0100
@@ -1,13 +0,0 @@
-#ifndef CS_INIT_UTILS_H
-#define CS_INIT_UTILS_H
-
-#include <glib.h>
-
-G_BEGIN_DECLS
-
-gboolean cs_init_utils_initialize_locking (gboolean debug);
-
-G_END_DECLS
-
-#endif /* CS_INIT_UTILS_H */
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cinnamon-screensaver-3.2.3/libcscreensaver/setuid.c 
new/cinnamon-screensaver-3.2.6/libcscreensaver/setuid.c
--- old/cinnamon-screensaver-3.2.3/libcscreensaver/setuid.c     2016-11-17 
10:50:34.000000000 +0100
+++ new/cinnamon-screensaver-3.2.6/libcscreensaver/setuid.c     1970-01-01 
01:00:00.000000000 +0100
@@ -1,245 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
- *
- * setuid.c --- management of runtime privileges.
- *
- * xscreensaver, Copyright (c) 1993-1998 Jamie Zawinski <[email protected]>
- *
- * 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.
- */
-
-#include "config.h"
-
-#include <errno.h>
-
-#include <stdio.h>
-#include <string.h>
-#include <sys/types.h>
-#include <unistd.h>
-#include <pwd.h>               /* for getpwnam() and struct passwd */
-#include <grp.h>               /* for getgrgid() and struct group */
-
-#include "setuid.h"
-
-static char *
-uid_gid_string (uid_t uid,
-                gid_t gid)
-{
-        static char   *buf;
-        struct passwd *p = NULL;
-        struct group  *g = NULL;
-
-        p = getpwuid (uid);
-        g = getgrgid (gid);
-
-        buf = g_strdup_printf ("%s/%s (%ld/%ld)",
-                               (p && p->pw_name ? p->pw_name : "???"),
-                               (g && g->gr_name ? g->gr_name : "???"),
-                               (long) uid, (long) gid);
-
-        return buf;
-}
-
-static gboolean
-set_ids_by_number (uid_t  uid,
-                   gid_t  gid,
-                   char **message_ret)
-{
-        int uid_errno = 0;
-        int gid_errno = 0;
-        int sgs_errno = 0;
-        struct passwd *p = getpwuid (uid);
-        struct group  *g = getgrgid (gid);
-
-        if (message_ret)
-                *message_ret = NULL;
-
-        /* Rumor has it that some implementations of of setuid() do nothing
-           when called with -1; therefore, if the "nobody" user has a uid of
-           -1, then that would be Really Bad.  Rumor further has it that such
-           systems really ought to be using -2 for "nobody", since that works.
-           So, if we get a uid (or gid, for good measure) of -1, switch to -2
-           instead.  Note that this must be done after we've looked up the
-           user/group names with getpwuid(-1) and/or getgrgid(-1).
-        */
-        if (gid == (gid_t) -1) gid = (gid_t) -2;
-        if (uid == (uid_t) -1) uid = (uid_t) -2;
-
-         errno = 0;
-         if (setgroups (1, &gid) < 0)
-                 sgs_errno = errno ? errno : -1;
-
-        errno = 0;
-        if (setgid (gid) != 0)
-                gid_errno = errno ? errno : -1;
-
-        errno = 0;
-        if (setuid (uid) != 0)
-                uid_errno = errno ? errno : -1;
-
-        if (uid_errno == 0 && gid_errno == 0 && sgs_errno == 0) {
-                static char *reason;
-                reason = g_strdup_printf ("changed uid/gid to %s/%s 
(%ld/%ld).",
-                                          (p && p->pw_name ? p->pw_name : 
"???"),
-                                          (g && g->gr_name ? g->gr_name : 
"???"),
-                                          (long) uid, (long) gid);
-                if (message_ret)
-                        *message_ret = g_strdup (reason);
-
-                g_free (reason);
-
-                return TRUE;
-        } else {
-                char *reason = NULL;
-
-                if (sgs_errno) {
-                        reason = g_strdup_printf ("couldn't setgroups to %s 
(%ld)",
-                                                  (g && g->gr_name ? 
g->gr_name : "???"),
-                                                  (long) gid);
-                        if (sgs_errno == -1)
-                                fprintf (stderr, "%s: unknown error\n", 
reason);
-                        else {
-                                errno = sgs_errno;
-                                perror (reason);
-                        }
-                        g_free (reason);
-                        reason = NULL;
-                }
-
-                if (gid_errno) {
-                        reason = g_strdup_printf ("couldn't set gid to %s 
(%ld)",
-                                                  (g && g->gr_name ? 
g->gr_name : "???"),
-                                                  (long) gid);
-                        if (gid_errno == -1)
-                                fprintf (stderr, "%s: unknown error\n", 
reason);
-                        else {
-                                errno = gid_errno;
-                                perror (reason);
-                        }
-                        g_free (reason);
-                        reason = NULL;
-                }
-
-                if (uid_errno) {
-                        reason = g_strdup_printf ("couldn't set uid to %s 
(%ld)",
-                                                  (p && p->pw_name ? 
p->pw_name : "???"),
-                                                  (long) uid);
-                        if (uid_errno == -1)
-                                fprintf (stderr, "%s: unknown error\n", 
reason);
-                        else {
-                                errno = uid_errno;
-                                perror (reason);
-                        }
-                        g_free (reason);
-                        reason = NULL;
-                }
-                return FALSE;
-        }
-        return FALSE;
-}
-
-
-/* If we've been run as setuid or setgid to someone else (most likely root)
-   turn off the extra permissions so that random user-specified programs
-   don't get special privileges.  (On some systems it is necessary to install
-   this program as setuid root in order to read the passwd file to implement
-   lock-mode.)
-
-   *** WARNING: DO NOT DISABLE ANY OF THE FOLLOWING CODE!
-   If you do so, you will open a security hole.  See the sections
-   of the xscreensaver manual titled "LOCKING AND ROOT LOGINS", 
-   and "USING XDM".
-*/
-
-/* Returns TRUE if OK to lock, FALSE otherwise */
-gboolean
-hack_uid (char **nolock_reason,
-          char **orig_uid,
-          char **uid_message)
-{
-        char    *reason;
-        gboolean ret;
-
-        ret = TRUE;
-        reason = NULL;
-
-        if (nolock_reason != NULL) {
-                *nolock_reason = NULL;
-        }
-        if (orig_uid != NULL) {
-                *orig_uid = NULL;
-        }
-        if (uid_message != NULL) {
-                *uid_message = NULL;
-        }
-
-        /* Discard privileges, and set the effective user/group ids to the
-           real user/group ids.  That is, give up our "chmod +s" rights.
-        */
-        {
-                uid_t euid = geteuid ();
-                gid_t egid = getegid ();
-                uid_t uid  = getuid ();
-                gid_t gid  = getgid ();
-
-                if (orig_uid != NULL) {
-                        *orig_uid = uid_gid_string (euid, egid);
-                }
-
-#ifdef HAVE_BSDAUTH /* we need to setgid auth to run the bsd_auth(3) login_* 
helpers */
-                {
-                        struct group *authg = getgrnam("auth");
-                        if (!authg || !authg->gr_name || !*authg->gr_name) {
-                                        reason = g_strdup ("no such group as 
\"auth\" for bsdauth.");
-
-                                        ret = FALSE;
-                                        goto out;
-                        }
-                        if (! set_ids_by_number (uid, authg->gr_gid, 
uid_message)) {
-                                        reason = g_strdup ("cannot setgid 
\"auth\" for bsdauth.");
-
-                                        ret = FALSE;
-                                        goto out;
-                        }
-                }
-#else /* !HAVE_BSDAUTH */
-                if (uid != euid || gid != egid) {
-                        if (! set_ids_by_number (uid, gid, uid_message)) {
-                                reason = g_strdup ("unable to discard 
privileges.");
-
-                                ret = FALSE;
-                                goto out;
-                        }
-                }
-#endif
-        }
-
-
-        /* Locking can't work when running as root, because we have no way of
-           knowing what the user id of the logged in user is (so we don't know
-           whose password to prompt for.)
-
-           *** WARNING: DO NOT DISABLE THIS CODE!
-           If you do so, you will open a security hole.  See the sections
-           of the xscreensaver manual titled "LOCKING AND ROOT LOGINS",
-           and "USING XDM".
-        */
-        if (getuid () == (uid_t) 0) {
-                reason = g_strdup ("running as root");
-                ret = FALSE;
-                goto out;
-        }
-
- out:
-        if (nolock_reason != NULL) {
-                *nolock_reason = g_strdup (reason);
-        }
-        g_free (reason);
-
-        return ret;
-}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cinnamon-screensaver-3.2.3/libcscreensaver/setuid.h 
new/cinnamon-screensaver-3.2.6/libcscreensaver/setuid.h
--- old/cinnamon-screensaver-3.2.3/libcscreensaver/setuid.h     2016-11-17 
10:50:34.000000000 +0100
+++ new/cinnamon-screensaver-3.2.6/libcscreensaver/setuid.h     1970-01-01 
01:00:00.000000000 +0100
@@ -1,27 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
- *
- * xscreensaver, Copyright (c) 1993-2004 Jamie Zawinski <[email protected]>
- *
- * 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.
- */
-
-#ifndef __GS_SETUID_H
-#define __GS_SETUID_H
-
-#include <glib.h>
-
-G_BEGIN_DECLS
-
-gboolean hack_uid (char **nolock_reason,
-                   char **orig_uid,
-                   char **uid_message);
-
-G_END_DECLS
-
-#endif /* __GS_SETUID_H */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cinnamon-screensaver-3.2.3/src/binfiles/Makefile.am 
new/cinnamon-screensaver-3.2.6/src/binfiles/Makefile.am
--- old/cinnamon-screensaver-3.2.3/src/binfiles/Makefile.am     2016-11-17 
10:50:34.000000000 +0100
+++ new/cinnamon-screensaver-3.2.6/src/binfiles/Makefile.am     2016-11-24 
23:39:41.000000000 +0100
@@ -2,7 +2,6 @@
 AUTOMAKE_OPTIONS = 1.7
 
 SUBDIRS=
-
 NULL =
 
 %:%.in Makefile
@@ -10,13 +9,30 @@
         -e s!\@datadir\@!$(datadir)!        \
         < $< > $@
 
-all-local: cinnamon-screensaver cinnamon-screensaver-command
+all-local: cinnamon-screensaver-command
+
+bin_SCRIPTS = cinnamon-screensaver-command
+
+bin_PROGRAMS = cinnamon-screensaver
+
+cinnamon_screensaver_SOURCES =  \
+    cinnamon-screensaver.c \
+    setuid.h \
+    setuid.c \
+    $(NULL)
+
+cinnamon_screensaver_LDADD =    \
+    $(SCREENSAVER_MAIN_LIBS)    \
+    $(NULL)
 
-bin_SCRIPTS = cinnamon-screensaver cinnamon-screensaver-command
+cinnamon_screensaver_CPPFLAGS =            \
+    $(WARN_CFLAGS)          \
+    $(SCREENSAVER_MAIN_CFLAGS)           \
+    -I$(srcdir)         \
+    $(NULL)
 
 EXTRA_DIST =                \
     cinnamon-screensaver.in \
-    cinnamon-screensaver-command.in \
     $(NULL)
 
 MAINTAINERCLEANFILES =          \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/cinnamon-screensaver-3.2.3/src/binfiles/cinnamon-screensaver.c 
new/cinnamon-screensaver-3.2.6/src/binfiles/cinnamon-screensaver.c
--- old/cinnamon-screensaver-3.2.3/src/binfiles/cinnamon-screensaver.c  
1970-01-01 01:00:00.000000000 +0100
+++ new/cinnamon-screensaver-3.2.6/src/binfiles/cinnamon-screensaver.c  
2016-11-24 23:39:41.000000000 +0100
@@ -0,0 +1,158 @@
+#include <config.h>
+
+#include <glib.h>
+#include <glib/gstdio.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/types.h>
+#include <unistd.h>
+
+#include "setuid.h"
+
+/*
+ * Portions:
+ * Copyright (c) 1991-2004 Jamie Zawinski <[email protected]>
+ * Copyright (c) 2005 William Jon McCann <[email protected]>
+ */
+
+#define PAM_SERVICE_NAME "cinnamon-desktop"
+
+/* from gs-auth-pam.c */
+static void
+pam_check (void)
+{
+    const char   dir [] = "/etc/pam.d";
+    const char  file [] = "/etc/pam.d/" PAM_SERVICE_NAME;
+    const char file2 [] = "/etc/pam.conf";
+    struct stat st;
+
+    if (g_stat (dir, &st) == 0 && st.st_mode & S_IFDIR) {
+        if (g_stat (file, &st) != 0) {
+            g_warning ("%s does not exist.\n"
+                       "Authentication via PAM is unlikely to work.",
+                       file);
+        }
+    } else if (g_stat (file2, &st) == 0) {
+        FILE *f = g_fopen (file2, "r");
+        if (f) {
+            gboolean ok = FALSE;
+            char buf[255];
+            while (fgets (buf, sizeof(buf), f)) {
+                if (strstr (buf, PAM_SERVICE_NAME)) {
+                    ok = TRUE;
+                    break;
+                }
+            }
+
+            fclose (f);
+            if (!ok) {
+                g_warning ("%s does not list the `%s' service.\n"
+                           "Authentication via PAM is unlikely to work.",
+                           file2, PAM_SERVICE_NAME);
+            }
+        }
+    /* else warn about file2 existing but being unreadable? */
+    } else {
+        g_warning ("Neither %s nor %s exist.\n"
+                   "Authentication via PAM is unlikely to work.",
+                   file2, file);
+    }
+}
+
+int
+main (int    argc,
+      char **argv)
+{
+    gboolean can_lock, ret;
+    gchar    *nolock_reason;
+    gchar    *orig_uid;
+    gchar    *uid_message;
+    gchar   **out_argv;
+    gchar    *out_cmd;
+    GPtrArray *array = g_ptr_array_new ();
+    const gchar * const *dirs;
+
+    pam_check ();
+
+    can_lock = hack_uid (&nolock_reason,
+                    &orig_uid,
+                    &uid_message);
+
+    if (nolock_reason) {
+        g_print ("Locking disabled: %s\n", nolock_reason);
+    }
+
+    if (uid_message) {
+        g_print ("Modified UID: %s\n", uid_message);
+    }
+
+    g_free (nolock_reason);
+    g_free (orig_uid);
+    g_free (uid_message);
+
+    /* Locate the cinnamon-screensaver datadir */
+    out_cmd = NULL;
+    dirs = g_get_system_data_dirs ();
+
+    if (dirs != NULL)
+    {
+        guint j;
+
+        for (j = 0; j < g_strv_length ((gchar **) dirs); j++)
+        {
+            const gchar *dir = dirs[j];
+
+            gchar *tryname = g_build_filename (dir, "cinnamon-screensaver", 
"cinnamon-screensaver-main.py", NULL);
+
+            if (g_file_test (tryname, G_FILE_TEST_EXISTS | 
G_FILE_TEST_IS_EXECUTABLE))
+            {
+                out_cmd = g_strdup (tryname);
+            }
+
+            g_free (tryname);
+
+            if (out_cmd != NULL)
+            {
+                break;
+            }
+        }
+    }
+
+    if (out_cmd == NULL)
+    {
+        g_printerr ("Could not locate cinnamon-screensaver install location");
+        exit(1);
+    }
+
+    /* Construct the argv[] for cinnamon-screensaver-main.py */
+    g_ptr_array_add (array, g_strdup ("cinnamon-screensaver-main.py"));
+
+    if (argc > 1)
+    {
+        gint i;
+        /* Skip argv[0] - which would be 'cinnamon-screensaver' */
+        for (i = 1; i < argc; i++)
+        {
+            g_ptr_array_add (array, g_strdup (argv[i]));
+        }
+    }
+
+    if (!can_lock)
+    {
+        g_ptr_array_add (array, g_strdup ("--disable-lock"));
+    }
+
+    g_ptr_array_add (array, NULL);
+
+    out_argv = (gchar **) g_ptr_array_free (array, FALSE);
+
+    ret = execv (out_cmd, out_argv);
+
+    g_strfreev (out_argv);
+    g_free (out_cmd);
+
+    return ret;
+}
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/cinnamon-screensaver-3.2.3/src/binfiles/cinnamon-screensaver.in 
new/cinnamon-screensaver-3.2.6/src/binfiles/cinnamon-screensaver.in
--- old/cinnamon-screensaver-3.2.3/src/binfiles/cinnamon-screensaver.in 
2016-11-17 10:50:34.000000000 +0100
+++ new/cinnamon-screensaver-3.2.6/src/binfiles/cinnamon-screensaver.in 
1970-01-01 01:00:00.000000000 +0100
@@ -1,3 +0,0 @@
-#! /bin/sh
-
-exec @datadir@/cinnamon-screensaver/cinnamon-screensaver-main.py "$@"
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cinnamon-screensaver-3.2.3/src/binfiles/setuid.c 
new/cinnamon-screensaver-3.2.6/src/binfiles/setuid.c
--- old/cinnamon-screensaver-3.2.3/src/binfiles/setuid.c        1970-01-01 
01:00:00.000000000 +0100
+++ new/cinnamon-screensaver-3.2.6/src/binfiles/setuid.c        2016-11-24 
23:39:41.000000000 +0100
@@ -0,0 +1,245 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * setuid.c --- management of runtime privileges.
+ *
+ * xscreensaver, Copyright (c) 1993-1998 Jamie Zawinski <[email protected]>
+ *
+ * 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.
+ */
+
+#include "config.h"
+
+#include <errno.h>
+
+#include <stdio.h>
+#include <string.h>
+#include <sys/types.h>
+#include <unistd.h>
+#include <pwd.h>               /* for getpwnam() and struct passwd */
+#include <grp.h>               /* for getgrgid() and struct group */
+
+#include "setuid.h"
+
+static char *
+uid_gid_string (uid_t uid,
+                gid_t gid)
+{
+        static char   *buf;
+        struct passwd *p = NULL;
+        struct group  *g = NULL;
+
+        p = getpwuid (uid);
+        g = getgrgid (gid);
+
+        buf = g_strdup_printf ("%s/%s (%ld/%ld)",
+                               (p && p->pw_name ? p->pw_name : "???"),
+                               (g && g->gr_name ? g->gr_name : "???"),
+                               (long) uid, (long) gid);
+
+        return buf;
+}
+
+static gboolean
+set_ids_by_number (uid_t  uid,
+                   gid_t  gid,
+                   char **message_ret)
+{
+        int uid_errno = 0;
+        int gid_errno = 0;
+        int sgs_errno = 0;
+        struct passwd *p = getpwuid (uid);
+        struct group  *g = getgrgid (gid);
+
+        if (message_ret)
+                *message_ret = NULL;
+
+        /* Rumor has it that some implementations of of setuid() do nothing
+           when called with -1; therefore, if the "nobody" user has a uid of
+           -1, then that would be Really Bad.  Rumor further has it that such
+           systems really ought to be using -2 for "nobody", since that works.
+           So, if we get a uid (or gid, for good measure) of -1, switch to -2
+           instead.  Note that this must be done after we've looked up the
+           user/group names with getpwuid(-1) and/or getgrgid(-1).
+        */
+        if (gid == (gid_t) -1) gid = (gid_t) -2;
+        if (uid == (uid_t) -1) uid = (uid_t) -2;
+
+         errno = 0;
+         if (setgroups (1, &gid) < 0)
+                 sgs_errno = errno ? errno : -1;
+
+        errno = 0;
+        if (setgid (gid) != 0)
+                gid_errno = errno ? errno : -1;
+
+        errno = 0;
+        if (setuid (uid) != 0)
+                uid_errno = errno ? errno : -1;
+
+        if (uid_errno == 0 && gid_errno == 0 && sgs_errno == 0) {
+                static char *reason;
+                reason = g_strdup_printf ("changed uid/gid to %s/%s 
(%ld/%ld).",
+                                          (p && p->pw_name ? p->pw_name : 
"???"),
+                                          (g && g->gr_name ? g->gr_name : 
"???"),
+                                          (long) uid, (long) gid);
+                if (message_ret)
+                        *message_ret = g_strdup (reason);
+
+                g_free (reason);
+
+                return TRUE;
+        } else {
+                char *reason = NULL;
+
+                if (sgs_errno) {
+                        reason = g_strdup_printf ("couldn't setgroups to %s 
(%ld)",
+                                                  (g && g->gr_name ? 
g->gr_name : "???"),
+                                                  (long) gid);
+                        if (sgs_errno == -1)
+                                fprintf (stderr, "%s: unknown error\n", 
reason);
+                        else {
+                                errno = sgs_errno;
+                                perror (reason);
+                        }
+                        g_free (reason);
+                        reason = NULL;
+                }
+
+                if (gid_errno) {
+                        reason = g_strdup_printf ("couldn't set gid to %s 
(%ld)",
+                                                  (g && g->gr_name ? 
g->gr_name : "???"),
+                                                  (long) gid);
+                        if (gid_errno == -1)
+                                fprintf (stderr, "%s: unknown error\n", 
reason);
+                        else {
+                                errno = gid_errno;
+                                perror (reason);
+                        }
+                        g_free (reason);
+                        reason = NULL;
+                }
+
+                if (uid_errno) {
+                        reason = g_strdup_printf ("couldn't set uid to %s 
(%ld)",
+                                                  (p && p->pw_name ? 
p->pw_name : "???"),
+                                                  (long) uid);
+                        if (uid_errno == -1)
+                                fprintf (stderr, "%s: unknown error\n", 
reason);
+                        else {
+                                errno = uid_errno;
+                                perror (reason);
+                        }
+                        g_free (reason);
+                        reason = NULL;
+                }
+                return FALSE;
+        }
+        return FALSE;
+}
+
+
+/* If we've been run as setuid or setgid to someone else (most likely root)
+   turn off the extra permissions so that random user-specified programs
+   don't get special privileges.  (On some systems it is necessary to install
+   this program as setuid root in order to read the passwd file to implement
+   lock-mode.)
+
+   *** WARNING: DO NOT DISABLE ANY OF THE FOLLOWING CODE!
+   If you do so, you will open a security hole.  See the sections
+   of the xscreensaver manual titled "LOCKING AND ROOT LOGINS", 
+   and "USING XDM".
+*/
+
+/* Returns TRUE if OK to lock, FALSE otherwise */
+gboolean
+hack_uid (char **nolock_reason,
+          char **orig_uid,
+          char **uid_message)
+{
+        char    *reason;
+        gboolean ret;
+
+        ret = TRUE;
+        reason = NULL;
+
+        if (nolock_reason != NULL) {
+                *nolock_reason = NULL;
+        }
+        if (orig_uid != NULL) {
+                *orig_uid = NULL;
+        }
+        if (uid_message != NULL) {
+                *uid_message = NULL;
+        }
+
+        /* Discard privileges, and set the effective user/group ids to the
+           real user/group ids.  That is, give up our "chmod +s" rights.
+        */
+        {
+                uid_t euid = geteuid ();
+                gid_t egid = getegid ();
+                uid_t uid  = getuid ();
+                gid_t gid  = getgid ();
+
+                if (orig_uid != NULL) {
+                        *orig_uid = uid_gid_string (euid, egid);
+                }
+
+#ifdef HAVE_BSDAUTH /* we need to setgid auth to run the bsd_auth(3) login_* 
helpers */
+                {
+                        struct group *authg = getgrnam("auth");
+                        if (!authg || !authg->gr_name || !*authg->gr_name) {
+                                        reason = g_strdup ("no such group as 
\"auth\" for bsdauth.");
+
+                                        ret = FALSE;
+                                        goto out;
+                        }
+                        if (! set_ids_by_number (uid, authg->gr_gid, 
uid_message)) {
+                                        reason = g_strdup ("cannot setgid 
\"auth\" for bsdauth.");
+
+                                        ret = FALSE;
+                                        goto out;
+                        }
+                }
+#else /* !HAVE_BSDAUTH */
+                if (uid != euid || gid != egid) {
+                        if (! set_ids_by_number (uid, gid, uid_message)) {
+                                reason = g_strdup ("unable to discard 
privileges.");
+
+                                ret = FALSE;
+                                goto out;
+                        }
+                }
+#endif
+        }
+
+
+        /* Locking can't work when running as root, because we have no way of
+           knowing what the user id of the logged in user is (so we don't know
+           whose password to prompt for.)
+
+           *** WARNING: DO NOT DISABLE THIS CODE!
+           If you do so, you will open a security hole.  See the sections
+           of the xscreensaver manual titled "LOCKING AND ROOT LOGINS",
+           and "USING XDM".
+        */
+        if (getuid () == (uid_t) 0) {
+                reason = g_strdup ("running as root");
+                ret = FALSE;
+                goto out;
+        }
+
+ out:
+        if (nolock_reason != NULL) {
+                *nolock_reason = g_strdup (reason);
+        }
+        g_free (reason);
+
+        return ret;
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cinnamon-screensaver-3.2.3/src/binfiles/setuid.h 
new/cinnamon-screensaver-3.2.6/src/binfiles/setuid.h
--- old/cinnamon-screensaver-3.2.3/src/binfiles/setuid.h        1970-01-01 
01:00:00.000000000 +0100
+++ new/cinnamon-screensaver-3.2.6/src/binfiles/setuid.h        2016-11-24 
23:39:41.000000000 +0100
@@ -0,0 +1,27 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
+ *
+ * xscreensaver, Copyright (c) 1993-2004 Jamie Zawinski <[email protected]>
+ *
+ * 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.
+ */
+
+#ifndef __GS_SETUID_H
+#define __GS_SETUID_H
+
+#include <glib.h>
+
+G_BEGIN_DECLS
+
+gboolean hack_uid (char **nolock_reason,
+                   char **orig_uid,
+                   char **uid_message);
+
+G_END_DECLS
+
+#endif /* __GS_SETUID_H */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/cinnamon-screensaver-3.2.3/src/cinnamon-screensaver-gtk3.14.css 
new/cinnamon-screensaver-3.2.6/src/cinnamon-screensaver-gtk3.14.css
--- old/cinnamon-screensaver-3.2.3/src/cinnamon-screensaver-gtk3.14.css 
2016-11-17 10:50:34.000000000 +0100
+++ new/cinnamon-screensaver-3.2.6/src/cinnamon-screensaver-gtk3.14.css 
2016-11-24 23:39:41.000000000 +0100
@@ -194,14 +194,6 @@
     background-color: alpha(white, .5);
 }
 
-.csstage .positionlabel {
-    font-family: monospace;
-    font-size: 10px;
-    text-shadow: 1px 1px alpha(black, 0.8);
-    background-image: none;
-    background-color: transparent;
-}
-
 .csstage .trackname {
     font-family: monospace;
     font-size: 12px;
@@ -218,13 +210,6 @@
     background-color: transparent;
 }
 
-.csstage .positionbar {
-    -GtkProgressBar-min-horizontal-bar-height: 14;
-    -GtkProgressBar-min-horizontal-bar-width: 180;
-    background-color: rgba(255, 255, 255, .1);
-    color: @theme_selected_bg_color;
-}
-
 .csstage GtkViewport {
     background-color: transparent;
     background-image: none;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/cinnamon-screensaver-3.2.3/src/cinnamon-screensaver-gtk3.18.css 
new/cinnamon-screensaver-3.2.6/src/cinnamon-screensaver-gtk3.18.css
--- old/cinnamon-screensaver-3.2.3/src/cinnamon-screensaver-gtk3.18.css 
2016-11-17 10:50:34.000000000 +0100
+++ new/cinnamon-screensaver-3.2.6/src/cinnamon-screensaver-gtk3.18.css 
2016-11-24 23:39:41.000000000 +0100
@@ -194,14 +194,6 @@
     background-color: alpha(white, .5);
 }
 
-.csstage .positionlabel {
-    font-family: monospace;
-    font-size: 10px;
-    text-shadow: 1px 1px alpha(black, 0.8);
-    background-image: none;
-    background-color: transparent;
-}
-
 .csstage .trackname {
     font-family: monospace;
     font-size: 12px;
@@ -218,13 +210,6 @@
     background-color: transparent;
 }
 
-.csstage .positionbar {
-    -GtkProgressBar-min-horizontal-bar-height: 14;
-    -GtkProgressBar-min-horizontal-bar-width: 180;
-    background-color: rgba(255, 255, 255, .1);
-    color: @theme_selected_bg_color;
-}
-
 .csstage GtkViewport {
     background-color: transparent;
     background-image: none;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/cinnamon-screensaver-3.2.3/src/cinnamon-screensaver-gtk3.20.css 
new/cinnamon-screensaver-3.2.6/src/cinnamon-screensaver-gtk3.20.css
--- old/cinnamon-screensaver-3.2.3/src/cinnamon-screensaver-gtk3.20.css 
2016-11-17 10:50:34.000000000 +0100
+++ new/cinnamon-screensaver-3.2.6/src/cinnamon-screensaver-gtk3.20.css 
2016-11-24 23:39:41.000000000 +0100
@@ -166,14 +166,6 @@
     background-color: alpha(white, .5);
 }
 
-.csstage .positionlabel {
-    font-family: monospace;
-    font-size: 10px;
-    text-shadow: 1px 1px alpha(black, 0.8);
-    background-image: none;
-    background-color: transparent;
-}
-
 .csstage .trackname {
     font-family: monospace;
     font-size: 12px;
@@ -190,13 +182,6 @@
     background-color: transparent;
 }
 
-.csstage .positionbar {
-    min-height: 14px;
-    min-width: 180px;
-    background-color: rgba(255, 255, 255, .1);
-    color: @theme_selected_bg_color;
-}
-
 .csstage GtkViewport {
     background-color: transparent;
     background-image: none;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/cinnamon-screensaver-3.2.3/src/cinnamon-screensaver-main.py 
new/cinnamon-screensaver-3.2.6/src/cinnamon-screensaver-main.py
--- old/cinnamon-screensaver-3.2.3/src/cinnamon-screensaver-main.py     
2016-11-17 10:50:34.000000000 +0100
+++ new/cinnamon-screensaver-3.2.6/src/cinnamon-screensaver-main.py     
2016-11-24 23:39:41.000000000 +0100
@@ -42,7 +42,7 @@
             print("cinnamon-screensaver %s" % (config.VERSION))
             quit()
 
-        status.LockEnabled = 
CScreensaver.init_utils_initialize_locking(args.debug) and not 
args.lock_disabled
+        status.LockEnabled = not args.lock_disabled
 
         if args.lock_disabled:
             print("Locking disabled")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/cinnamon-screensaver-3.2.3/src/dbusdepot/mediaPlayerWatcher.py 
new/cinnamon-screensaver-3.2.6/src/dbusdepot/mediaPlayerWatcher.py
--- old/cinnamon-screensaver-3.2.3/src/dbusdepot/mediaPlayerWatcher.py  
2016-11-17 10:50:34.000000000 +0100
+++ new/cinnamon-screensaver-3.2.6/src/dbusdepot/mediaPlayerWatcher.py  
2016-11-24 23:39:41.000000000 +0100
@@ -22,7 +22,6 @@
     These are instantiated by our MediaPlayerWatcher.
     """
     __gsignals__ = {
-        "position-changed": (GObject.SignalFlags.RUN_LAST, None, (int,)),
         "status-changed": (GObject.SignalFlags.RUN_LAST, None, (int,)),
         "metadata-changed": (GObject.SignalFlags.RUN_LAST, None, ())
     }
@@ -33,8 +32,6 @@
                                           path)
 
         self.metadata = None
-        self.rate = 0
-        self.max_position = 0
         self.album_name = ""
         self.track_name = ""
         self.artist_name = ""
@@ -49,16 +46,6 @@
                                            "notify::metadata",
                                            self.on_metadata_changed)
 
-        trackers.con_tracker_get().connect(self.proxy,
-                                           "notify::rate",
-                                           self.on_rate_changed)
-
-        trackers.con_tracker_get().connect(self.proxy,
-                                           "notify::position",
-                                           self.on_position_changed)
-
-        self.rate = self.proxy.get_property("rate")
-
         self.ensure_metadata()
 
     def get_playback_status(self):
@@ -116,41 +103,6 @@
 
         return ""
 
-    def get_position(self):
-        """
-        Position is a standard interface property, but according to the mpris 
spec,
-        it is *not* updated - it is recommended to retrieve the value at the 
rate
-        specified in the Rate property.  Retrieving the value requires a 
round-trip
-        to the player interface.
-        """
-        if self.ensure_proxy_alive():
-            # To get the position *reliably*, we must make a round-trip, 
because
-            # the proxy's cached property may not get updated
-
-            bus = self.proxy.get_connection()
-
-            pos = bus.call_sync(self.proxy.get_name(),
-                                self.proxy.get_object_path(),
-                                "org.freedesktop.DBus.Properties",
-                                "Get",
-                                GLib.Variant("(ss)", 
(self.proxy.get_interface_name(), "Position")),
-                                None,
-                                Gio.DBusCallFlags.NONE,
-                                -1,
-                                None)
-
-            return pos[0]
-
-        return 0.0
-
-    def get_max_position(self):
-        self.ensure_metadata()
-
-        return self.max_position
-
-    def get_rate(self):
-        return self.rate
-
     def get_track_name(self):
         self.ensure_metadata()
 
@@ -179,10 +131,6 @@
             self.metadata = self.proxy.get_property("metadata")
             if self.metadata:
                 try:
-                    self.max_position = self.metadata["mpris:length"]
-                except KeyError:
-                    self.max_position = 0
-                try:
                     self.track_name = self.metadata["xesam:title"]
                 except KeyError:
                     self.track_name = ""
@@ -213,14 +161,6 @@
     def on_playback_status_changed(self, proxy, pspec, data=None):
         self.emit("status-changed", self.get_playback_status())
 
-    def on_position_changed(self, proxy, pspec, data=None):
-        position = proxy.get_property("position")
-
-        self.emit("position-changed", position)
-
-    def on_rate_changed(self, proxy, pspec, data=None):
-        self.rate = proxy.get_property("rate")
-
     def on_metadata_changed(self, proxy, pspec, data=None):
         self.metadata = None
         self.ensure_metadata()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cinnamon-screensaver-3.2.3/src/playerControl.py 
new/cinnamon-screensaver-3.2.6/src/playerControl.py
--- old/cinnamon-screensaver-3.2.3/src/playerControl.py 2016-11-17 
10:50:34.000000000 +0100
+++ new/cinnamon-screensaver-3.2.6/src/playerControl.py 2016-11-24 
23:39:41.000000000 +0100
@@ -8,10 +8,8 @@
 
 from util import trackers, utils
 from dbusdepot.mediaPlayerWatcher import PlaybackStatus
-from widgets.blinkingLabel import BlinkingLabel
 from widgets.marqueeLabel import MarqueeLabel
 from widgets.transparentButton import TransparentButton
-from widgets.positionBar import PositionBar
 import singletons
 import status
 
@@ -72,27 +70,6 @@
                                                      self.play_pause_button,
                                                      self.next_button]
 
-        # Position labels and bar
-
-        vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
-        self.pack_start(vbox, True, True, 4)
-
-        vbox.set_valign(Gtk.Align.CENTER)
-
-        position_length_box = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL)
-        vbox.pack_start(position_length_box, True, True, 2)
-
-        self.current_pos_label = BlinkingLabel("", 400)
-        self.current_pos_label.get_style_context().add_class("positionlabel")
-        position_length_box.pack_start(self.current_pos_label, False, False, 2)
-
-        self.max_pos_label = BlinkingLabel("", 400)
-        self.max_pos_label.get_style_context().add_class("positionlabel")
-        position_length_box.pack_end(self.max_pos_label, False, False, 2)
-
-        self.position_bar = PositionBar()
-        vbox.pack_end(self.position_bar, True, True, 2)
-
         # Track info
 
         vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
@@ -111,10 +88,6 @@
         self.show_all()
 
         trackers.con_tracker_get().connect(self.player,
-                                           "position-changed",
-                                           self.on_position_changed)
-
-        trackers.con_tracker_get().connect(self.player,
                                            "status-changed",
                                            self.on_playback_status_changed)
 
@@ -129,8 +102,6 @@
                                            "destroy",
                                            self.on_widget_destroy)
 
-        self.update_position_timer(player_status)
-
     def on_previous_clicked(self, button, data=None):
         self.player.go_previous()
 
@@ -148,47 +119,13 @@
 
         return icon_name
 
-    def position_to_time_string(self, position):
-        """
-        We receive track position and track length values in microseconds.
-        This function formats this into readable HH:MM:SS format, and handles
-        any invalid values.
-        """
-        delta = datetime.timedelta(microseconds=position)
-
-        duration = datetime.datetime.utcfromtimestamp(delta.total_seconds())
-
-        if duration.hour < 0:
-            return _("--:--")
-
-        if duration.hour < 1:
-            return duration.strftime(_("%M:%S"))
-        else:
-            return duration.strftime(_("%H:%M:%S"))
-
     def on_playback_status_changed(self, player, status, data=None):
         self.update_buttons(status)
-        self.update_position_timer(status)
-        self.update_position_display()
-
-        self.update_position_values_appearance(status)
-
-    def update_position_values_appearance(self, status):
-        """
-        When the player is paused, we blink the position/length values.
-        """
-        if status == PlaybackStatus.Paused:
-            self.max_pos_label.set_blinking(True)
-            self.current_pos_label.set_blinking(True)
-        else:
-            self.max_pos_label.set_blinking(False)
-            self.current_pos_label.set_blinking(False)
 
     def on_metadata_changed(self, player):
         """
-        Update max position and labels when the player metadata changes
+        Update labels when the player metadata changes
         """
-        
self.max_pos_label.set_text(self.position_to_time_string(self.player.get_max_position()))
         self.update_labels()
 
     def update_labels(self):
@@ -224,44 +161,8 @@
         image = Gtk.Image.new_from_icon_name(icon_name, size)
         self.play_pause_button.set_image(image)
 
-    def update_position_display(self):
-        """
-        Updates the position values and bar to reflect the current state.
-        """
-        if self.player.get_position() < self.player.get_max_position():
-            value = self.player.get_position() / self.player.get_max_position()
-        else:
-            value = 1.0
-        value = utils.CLAMP(value, 0.0, 1.0)
-        self.position_bar.set_fraction(value)
-
-        
self.current_pos_label.set_text(self.position_to_time_string(self.player.get_position()))
-
-        return True
-
-    def update_position_timer(self, status):
-        """
-        Starts or stops the position update timer - this is based upon the 
provided rate
-        property of the player, which is defined as the recommended update 
frequency for position
-        data.
-        """
-        if status == PlaybackStatus.Playing:
-            trackers.timer_tracker_get().start("position-timer", 
self.player.get_rate() * 1000, self.update_position_display)
-        else:
-            trackers.timer_tracker_get().cancel("position-timer")
-
-    def on_position_changed(self, player, position, data=None):
-        """
-        Callback for an explicit position change from the player.
-        """
-        self.update_position_display()
-
     def on_widget_destroy(self, widget, data=None):
         trackers.con_tracker_get().disconnect(self.player,
-                                              "position-changed",
-                                              self.on_position_changed)
-
-        trackers.con_tracker_get().disconnect(self.player,
                                               "status-changed",
                                               self.on_playback_status_changed)
 
@@ -269,8 +170,6 @@
                                               "destroy",
                                               self.on_widget_destroy)
 
-        trackers.timer_tracker_get().cancel("position-timer")
-
     def should_show(self):
         """
         Checked by the AudioPanel, whether or not this widget should be 
displayed.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cinnamon-screensaver-3.2.3/src/util/utils.py 
new/cinnamon-screensaver-3.2.6/src/util/utils.py
--- old/cinnamon-screensaver-3.2.3/src/util/utils.py    2016-11-17 
10:50:34.000000000 +0100
+++ new/cinnamon-screensaver-3.2.6/src/util/utils.py    2016-11-24 
23:39:41.000000000 +0100
@@ -68,13 +68,6 @@
     except KeyError:
         pass
 
-    try:
-        group = grp.getgrnam("liveuser")
-        if name in group.gr_mem:
-            return False
-    except KeyError:
-        pass
-
     return True
 
 def process_is_running(name):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/cinnamon-screensaver-3.2.3/src/widgets/Makefile.am 
new/cinnamon-screensaver-3.2.6/src/widgets/Makefile.am
--- old/cinnamon-screensaver-3.2.3/src/widgets/Makefile.am      2016-11-17 
10:50:34.000000000 +0100
+++ new/cinnamon-screensaver-3.2.6/src/widgets/Makefile.am      2016-11-24 
23:39:41.000000000 +0100
@@ -9,11 +9,9 @@
 
 app_PYTHON = \
         __init__.py \
-        blinkingLabel.py \
         framedImage.py \
         marqueeLabel.py \
         notificationWidget.py \
-        positionBar.py \
         powerWidget.py \
         transparentButton.py \
         volumeSlider.py \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/cinnamon-screensaver-3.2.3/src/widgets/blinkingLabel.py 
new/cinnamon-screensaver-3.2.6/src/widgets/blinkingLabel.py
--- old/cinnamon-screensaver-3.2.3/src/widgets/blinkingLabel.py 2016-11-17 
10:50:34.000000000 +0100
+++ new/cinnamon-screensaver-3.2.6/src/widgets/blinkingLabel.py 1970-01-01 
01:00:00.000000000 +0100
@@ -1,116 +0,0 @@
-#! /usr/bin/python3
-
-from gi.repository import Gtk, GObject, GLib
-from util import trackers
-
-class BlinkingLabel(Gtk.Label):
-    """
-    Used by the PlayerControl position and max_position elements.
-
-    When the player is in a paused state, we have these labels blink.
-    """
-    def __init__(self, text, rate):
-        super(BlinkingLabel, self).__init__()
-
-        self.rate = rate
-
-        self.current_opacity = 1.0
-        self.target_opacity = 0.0
-
-        self.blinking = False
-
-        self.tick_id = 0
-        self.stop_blinking = False
-
-        self.start_time = 0
-        self.end_time = 0
-
-        trackers.con_tracker_get().connect(self,
-                                           "realize",
-                                           self.on_realized)
-
-    def on_realized(self, widget, data=None):
-        if self.blinking and self.tick_id == 0:
-            GObject.idle_add(self._blink_idle)
-
-        trackers.con_tracker_get().disconnect(self,
-                                              "realize",
-                                              self.on_realized)
-
-    def set_blinking(self, blinking):
-        self.blinking = blinking
-
-        if blinking and self.tick_id == 0:
-            GObject.idle_add(self._blink_idle)
-        elif self.tick_id > 0:
-            self.stop_blinking = True
-
-    def get_blinking(self, blinking):
-        return self.tick_id > 0
-
-    def cancel(self):
-        if self.tick_id > 0:
-            self.remove_tick_callback(self.tick_id)
-            self.tick_id = 0
-
-        self.stop_blinking = False
-
-    def _blink_idle(self):
-        self.current_opacity = self.get_opacity()
-
-        if self.current_opacity == 1.0:
-            self.target_opacity = 0.0
-        else:
-            self.target_opacity = 1.0
-
-        if not self.get_visible():
-            self.set_visible(True)
-
-        if self.get_mapped():
-            self.start_time = self.get_frame_clock().get_frame_time()
-            self.end_time = self.start_time + (self.rate * 1000) # ms to 
microsec
-
-            if self.tick_id == 0:
-                self.tick_id = self.add_tick_callback(self._on_blink_tick)
-
-            self._blink_step(self.start_time)
-
-        return GLib.SOURCE_REMOVE
-
-    def _on_blink_tick(self, widget, clock, data=None):
-        now = clock.get_frame_time()
-
-        self._blink_step(now)
-
-        if self.stop_blinking:
-            self.target_opacity = 1.0
-
-        if self.current_opacity == self.target_opacity:
-            if self.stop_blinking and self.current_opacity == 1.0:
-                self.cancel()
-                return GLib.SOURCE_REMOVE
-
-            self.start_time = self.end_time
-            self.end_time += (self.rate * 1000)
-            self.reverse_direction()
-
-        return GLib.SOURCE_CONTINUE
-
-    def _blink_step(self, now):
-        if now < self.end_time:
-            if self.current_opacity < self.target_opacity:
-                t = (now - self.start_time) / (self.end_time - self.start_time)
-            else:
-                t = 1.0 - ((now - self.start_time) / (self.end_time - 
self.start_time))
-        else:
-            t = self.target_opacity
-
-        self.current_opacity = t
-        self.set_opacity(self.current_opacity)
-        self.queue_draw()
-
-    def reverse_direction(self):
-        if self.target_opacity == 0.0:
-            self.target_opacity = 1.0
-        else:
-            self.target_opacity = 0.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/cinnamon-screensaver-3.2.3/src/widgets/positionBar.py 
new/cinnamon-screensaver-3.2.6/src/widgets/positionBar.py
--- old/cinnamon-screensaver-3.2.3/src/widgets/positionBar.py   2016-11-17 
10:50:34.000000000 +0100
+++ new/cinnamon-screensaver-3.2.6/src/widgets/positionBar.py   1970-01-01 
01:00:00.000000000 +0100
@@ -1,61 +0,0 @@
-#! /usr/bin/python3
-
-from gi.repository import Gtk, Gdk
-
-from util import trackers
-
-class PositionBar(Gtk.ProgressBar):
-    """
-    A custom GtkProgressBar for displaying the current track position.
-    """
-    def __init__(self):
-        super(PositionBar, 
self).__init__(orientation=Gtk.Orientation.HORIZONTAL)
-        self.get_style_context().add_class("positionbar")
-
-        self.set_can_focus(False)
-
-        self.set_halign(Gtk.Align.CENTER)
-        self.set_valign(Gtk.Align.CENTER)
-
-        trackers.con_tracker_get().connect(self,
-                                           "draw",
-                                           self.on_draw)
-
-    def on_draw(self, widget, cr):
-        ctx = widget.get_style_context()
-        alloc = self.get_allocation()
-
-        padding = ctx.get_padding(Gtk.StateFlags.NORMAL)
-        border = ctx.get_border(Gtk.StateFlags.NORMAL)
-
-        x = padding.left + border.left
-        y = padding.top + border.top
-        width = alloc.width - padding.left - padding.right - border.left - 
border.right
-        height = alloc.height - padding.top - padding.bottom - border.top - 
border.bottom
-        floor = y + height
-        end = x + width
-        value = self.get_fraction()
-        value_width = value * width
-
-        fill_color = ctx.get_color(Gtk.StateFlags.NORMAL)
-        bg_color = ctx.get_background_color(Gtk.StateFlags.NORMAL)
-
-        cr.save()
-
-        cr.new_sub_path()
-        cr.rectangle(x, y, end, floor)
-        Gdk.cairo_set_source_rgba(cr, bg_color)
-        cr.fill()
-
-        cr.restore()
-        cr.save()
-
-        cr.new_sub_path()
-        cr.rectangle(x, y, value_width, floor)
-        Gdk.cairo_set_source_rgba(cr, fill_color)
-        cr.fill()
-
-        cr.restore()
-
-        return True
-


Reply via email to