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 - sor.alexei@meowr.ru
+
+- 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 - sor.alexei@meowr.ru
+
+- 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 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 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 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
-
-#include "setuid.h"
-#include
-#include
-#include
-#include
-#include
-
-#include "cs-init-utils.h"
-
-/*
- * Portions:
- * Copyright (c) 1991-2004 Jamie Zawinski
- * Copyright (c) 2005 William Jon McCann
- */
-
-#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
-
-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
- *
- * 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
-
-#include
-#include
-#include
-#include
-#include /* for getpwnam() and struct passwd */
-#include /* 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
- *
- * 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
-
-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
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+#include "setuid.h"
+
+/*
+ * Portions:
+ * Copyright (c) 1991-2004 Jamie Zawinski
+ * Copyright (c) 2005 William Jon McCann
+ */
+
+#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
+ *
+ * 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
+
+#include
+#include
+#include
+#include
+#include /* for getpwnam() and struct passwd */
+#include /* 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
+ *
+ * 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
+
+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
-