Hello community,

here is the log from the commit of package xdg-utils for openSUSE:12.2 checked 
in at 2012-06-28 17:22:05
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:12.2/xdg-utils (Old)
 and      /work/SRC/openSUSE:12.2/.xdg-utils.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "xdg-utils", Maintainer is "[email protected]"

Changes:
--------
--- /work/SRC/openSUSE:12.2/xdg-utils/xdg-utils.changes 2012-06-25 
15:57:58.000000000 +0200
+++ /work/SRC/openSUSE:12.2/.xdg-utils.new/xdg-utils.changes    2012-06-28 
17:22:06.000000000 +0200
@@ -1,0 +2,5 @@
+Mon May 21 10:16:02 UTC 2012 - [email protected]
+
+- Fix xdg-screensaver issues with Gnome 3 (bnc#559110)
+
+-------------------------------------------------------------------

New:
----
  xdg-screensaver-gnome-dbus.diff
  xdg-screensaver-gnome-perl.diff
  xdg-screensaver-sleep.diff

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

Other differences:
------------------
++++++ xdg-utils.spec ++++++
--- /var/tmp/diff_new_pack.QJyPoI/_old  2012-06-28 17:22:06.000000000 +0200
+++ /var/tmp/diff_new_pack.QJyPoI/_new  2012-06-28 17:22:06.000000000 +0200
@@ -41,6 +41,10 @@
 # PATCH-FIX-UPSTREAM xdg-utils-1.0.2-bnc591714.patch fdo#27551 
[email protected]
 # this patch fix bnc#591714
 Patch5:         %name-1.0.2-bnc591714.patch
+Patch6:         xdg-screensaver-sleep.diff
+Patch7:         xdg-screensaver-gnome-dbus.diff
+Patch8:         xdg-screensaver-gnome-perl.diff
+Requires:       perl, perl-Net-DBus, perl-X11-Protocol
 
 %description
 The xdg-utils package is a set of simple scripts that provide basic
@@ -67,6 +71,9 @@
 %patch3 -p1
 %patch4 -p1
 %patch5 -p1
+%patch6
+%patch7
+%patch8
 
 %build
 %configure

++++++ xdg-screensaver-gnome-dbus.diff ++++++
Source of the patch: 
http://cgit.freedesktop.org/xdg/xdg-utils/commit/?id=666d65cae0f2e66d33ec0dc48c054afbf16c9e3f
--- scripts/xdg-screensaver     2012-05-21 12:55:11.846122671 +0200
+++ scripts/xdg-screensaver     2012-05-21 12:58:36.269876261 +0200
@@ -613,16 +613,18 @@
 
 screensaver_gnome()
 {
-# TODO
-# There seems to be a DBUS interface for gnome-screensaver
-# See 
http://lists.mplayerhq.hu/pipermail/mplayer-dev-eng/2006-April/042579.html and
-# 
http://cvs.gnome.org/viewcvs/gnome-screensaver/src/gs-listener-dbus.c?rev=1.36&view=log
-# A problem seems to be that Inhibit is tied to the lifetime of the DBUS 
appname and
-# this can not be used from a script
+# DBUS interface for gnome-screensaver
+# http://people.gnome.org/~mccann/gnome-screensaver/docs/gnome-screensaver.html
     case "$1" in
         suspend) 
-        screensaver_suspend_loop gnome-screensaver-command --poke
-        result=0
+        screensaver_suspend_loop \
+        dbus-send --session \
+                  --dest=org.gnome.ScreenSaver \
+                  --type=method_call \
+                  /org/gnome/ScreenSaver \
+                  org.gnome.ScreenSaver.SimulateUserActivity \
+                  2> /dev/null
+        result=$?
         ;;
 
         resume)
@@ -631,7 +633,13 @@
         ;;
         
         activate)
-        gnome-screensaver-command --activate > /dev/null 2> /dev/null
+        dbus-send --session \
+                  --dest=org.gnome.ScreenSaver \
+                  --type=method_call \
+                  /org/gnome/ScreenSaver \
+                  org.gnome.ScreenSaver.SetActive \
+                  boolean:true \
+                  2> /dev/null
         result=$?
         ;;
         
@@ -642,18 +650,31 @@
         
         reset)
         # Turns the screensaver off right now
-        gnome-screensaver-command --deactivate > /dev/null 2> /dev/null
+        dbus-send --session \
+                  --dest=org.gnome.ScreenSaver \
+                  --type=method_call \
+                  /org/gnome/ScreenSaver \
+                  org.gnome.ScreenSaver.SimulateUserActivity \
+                 2> /dev/null
         result=$?
         ;;
 
         status)
-        result=0
-        if [ -f "$screensaver_file" ] ; then
-            echo "disabled"
-        elif gnome-screensaver-command --query > /dev/null 2> /dev/null; then
+        status=`dbus-send --session \
+                          --dest=org.gnome.ScreenSaver \
+                          --type=method_call \
+                          --print-reply \
+                          --reply-timeout=2000 \
+                          /org/gnome/ScreenSaver \
+                          org.gnome.ScreenSaver.GetActive \
+                          | grep boolean | cut -d ' ' -f 5`
+        result=$?
+        if [ x"$status" = "xtrue" -o x"$status" = "xfalse" ]; then
             echo "enabled"
+        elif [ x"$result" != "x0" ]; then
+            echo "ERROR: dbus org.gnome.ScreenSaver.GetActive returned 
'$status'" >&2
+            return 1
         else
-            # Something is wrong
             echo "disabled"
         fi
         ;;
++++++ xdg-screensaver-gnome-perl.diff ++++++
Source of the patch: 
http://patch-tracker.debian.org/patch/series/view/xdg-utils/1.1.0~rc1+git20111210-6/xdg-screensaver-new-gnome.diff
--- scripts/xdg-screensaver     2012-05-21 12:58:36.269876261 +0200
+++ scripts/xdg-screensaver     2012-05-21 13:01:12.328342683 +0200
@@ -617,14 +617,54 @@
 # http://people.gnome.org/~mccann/gnome-screensaver/docs/gnome-screensaver.html
     case "$1" in
         suspend) 
-        screensaver_suspend_loop \
-        dbus-send --session \
-                  --dest=org.gnome.ScreenSaver \
-                  --type=method_call \
-                  /org/gnome/ScreenSaver \
-                  org.gnome.ScreenSaver.SimulateUserActivity \
-                  2> /dev/null
-        result=$?
+        perl -e '
+use strict;
+use warnings;
+use IO::File;
+use Net::DBus;
+use X11::Protocol;
+
+my ($window_id, $screensaver_file) = @ARGV;
+
+# Find window name to pass to session manager.
+my $x = X11::Protocol->new();
+my $named_window_id = hex($window_id);
+my $window_name;
+while (1) {
+  ($window_name) = $x->GetProperty($named_window_id, $x->atom("WM_NAME"),
+                                  $x->atom("STRING"), 0, 1000, 0);
+  last if defined($window_name) && $window_name ne "";
+  (undef, $named_window_id) = $x->QueryTree($named_window_id);
+  if (!defined($named_window_id)) {
+    $window_name = "?";
+    last;
+  }
+}
+
+# Inhibit idle detection (flags = 8) with window name and ID.
+# We have no reason so just send the window name again.
+my $bus = Net::DBus->session();
+my $sm_svc = $bus->get_service("org.gnome.SessionManager");
+my $sm = $sm_svc->get_object("/org/gnome/SessionManager",
+                            "org.gnome.SessionManager");
+$sm->Inhibit($window_name, hex($window_id), $window_name, 8);
+
+# Wait until removed from the status file.
+while (1) {
+  sleep(10);
+  my $status = new IO::File($screensaver_file, "r")
+    or exit 0;
+  my $found;
+  while (<$status>) {
+    if (/^$window_id:/) {
+      $found = 1;
+      last;
+    }
+  }
+  exit 0 unless $found;
+}
+' $window_id $screensaver_file &
+        result=0
         ;;
 
         resume)
++++++ xdg-screensaver-sleep.diff ++++++
Source of the patch: 
http://cgit.freedesktop.org/xdg/xdg-utils/commit/?id=7465b22a95e9a28e3f4960e6ea40a4abeca1c2e9
--- scripts/xdg-screensaver     2007-06-24 21:58:06.000000000 +0200
+++ scripts/xdg-screensaver     2012-05-21 12:51:51.108252420 +0200
@@ -608,7 +608,7 @@
   fi
   $MV "$tmpfile" "$screensaver_file"
   unlockfile
-  (while [ -f "$screensaver_file" ]; do $*; sleep 59; done) > /dev/null 2> 
/dev/null &
+  (while [ -f "$screensaver_file" ]; do $*; sleep 50; done) > /dev/null 2> 
/dev/null &
 }
 
 screensaver_gnome()
-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to