Date: Saturday, April 9, 2011 @ 00:40:36
  Author: eric
Revision: 118860

upgpkg: xine-ui 0.99.6-2
Fixed disabling of screensaver (closed FS#17400)

Added:
  xine-ui/trunk/xine-ui-xdg.diff
Modified:
  xine-ui/trunk/PKGBUILD
  xine-ui/trunk/xine-ui.install
Deleted:
  xine-ui/trunk/ChangeLog

------------------+
 ChangeLog        |   27 ------
 PKGBUILD         |   30 ++++---
 xine-ui-xdg.diff |  206 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 xine-ui.install  |    1 
 4 files changed, 223 insertions(+), 41 deletions(-)

Deleted: ChangeLog
===================================================================
--- ChangeLog   2011-04-08 23:39:50 UTC (rev 118859)
+++ ChangeLog   2011-04-09 04:40:36 UTC (rev 118860)
@@ -1,27 +0,0 @@
-2010-03-23  Eric Belanger  <[email protected]>
-
-       * xine-ui 0.99.6-1
-       * Upstream update
-       * Cleaned up depends
-       * Removed optdepends
-       * Replaced lirc makedepends by lirc-utils
-       * Added shared-mime-info depends
-
-2010-01-19  Eric Belanger  <[email protected]>
-
-       * xine-ui 0.99.5-6
-       * Rebuilt for libpng 1.4 and libjpeg 8
-       * Added install scriptlet to update icon cache
-
-2009-06-18  Eric Belanger  <[email protected]>
-
-       * xine-ui 0.99.5-5
-       * Rebuilt against readline 6.0.00
-
-2008-08-19  Eric Belanger  <[email protected]>
-
-       * xine-ui 0.99.5-4
-       * Added xine and xine-remote binaries (missing in 0.99.5-3)
-       * Added missing libxt makedepends
-       * Replaced .install file by an optdepends
-       * Added ChangeLog

Modified: PKGBUILD
===================================================================
--- PKGBUILD    2011-04-08 23:39:50 UTC (rev 118859)
+++ PKGBUILD    2011-04-09 04:40:36 UTC (rev 118860)
@@ -1,41 +1,43 @@
 # $Id$
-# Maintainer: Eric Belanger <[email protected]>
+# Maintainer: Eric Bélanger <[email protected]>
 
 pkgname=xine-ui
 pkgver=0.99.6
-pkgrel=1
+pkgrel=2
 pkgdesc="A free video player for Unix"
 arch=('i686' 'x86_64')
 license=('GPL')
 url="http://www.xine-project.org";
 depends=('xine-lib' 'curl' 'libxtst' 'libxinerama' 'libxv' 'libpng' 'libxft'
        'libxxf86vm' 'readline' 'xdg-utils' 'shared-mime-info' 
'hicolor-icon-theme'
-       'lirc-utils')
+       'desktop-file-utils' 'lirc-utils')
 makedepends=('libxt')
 options=('!emptydirs' '!strip')
-install=${pkgname}.install
+install=xine-ui.install
 source=(http://downloads.sourceforge.net/xine/${pkgname}-${pkgver}.tar.xz
-       lirc-check-a89347673097.patch lirc-makefile-a68dd15ff7ae.patch 
fix_lirc.diff)
+       lirc-check-a89347673097.patch lirc-makefile-a68dd15ff7ae.patch 
+        fix_lirc.diff xine-ui-xdg.diff)
 md5sums=('d468b4e7fe39ff19888261e1da9be914'
          '4f06f63f5fd55b08a648e5d63f881898'
          '9f5acaf14f3945aa2ce428631d09cd47'
-         '0174bd096756b9c6f47e9b8b5ff6e145')
+         '0174bd096756b9c6f47e9b8b5ff6e145'
+         '5972b4061acf3b553760de9ae2178d38')
 
 build() {
   cd "${srcdir}/${pkgname}-${pkgver}"
-  patch -p1 < "${srcdir}/lirc-check-a89347673097.patch" || return 1
-  patch -p1 < "${srcdir}/lirc-makefile-a68dd15ff7ae.patch" || return 1
-  patch -p1 < "${srcdir}/fix_lirc.diff" || return 1
-  autoconf || return 1
-
+  patch -p1 < "${srcdir}/lirc-check-a89347673097.patch"
+  patch -p1 < "${srcdir}/lirc-makefile-a68dd15ff7ae.patch"
+  patch -p1 < "${srcdir}/fix_lirc.diff"
+  patch -p1 < "${srcdir}/xine-ui-xdg.diff"
+  autoconf
   ./configure --prefix=/usr --mandir=/usr/share/man \
-    --with-x --enable-lirc --without-aalib --enable-debug || return 1
-  make || return 1
+    --with-x --enable-lirc --without-aalib --enable-debug
+  make
 }
 
 package() {
   cd "${srcdir}/${pkgname}-${pkgver}"
-  make DESTDIR="${pkgdir}" install || return 1
+  make DESTDIR="${pkgdir}" install
   install -d "${pkgdir}/usr/share/applications"
   mv "${pkgdir}/usr/share/xine/desktop/xine.desktop" 
"${pkgdir}/usr/share/applications"
 }

Added: xine-ui-xdg.diff
===================================================================
--- xine-ui-xdg.diff                            (rev 0)
+++ xine-ui-xdg.diff    2011-04-09 04:40:36 UTC (rev 118860)
@@ -0,0 +1,206 @@
+--- xine-ui-0.99.6.orig/src/xitk/common.h
++++ xine-ui-0.99.6/src/xitk/common.h
+@@ -331,6 +331,5 @@ typedef struct {
+   int                       use_root_window;
+ 
+   int                       ssaver_enabled;
+-  int                       ssaver_timeout;
+ 
+   int                       skip_by_chapter;
+--- xine-ui-0.99.6.orig/src/xitk/main.c
++++ xine-ui-0.99.6/src/xitk/main.c
+@@ -1383,6 +1383,8 @@ int main(int argc, char *argv[]) {
+   if (sigprocmask (SIG_BLOCK,  &vo_mask, NULL))
+     fprintf (stderr, "sigprocmask() failed.\n");
+ 
++  signal(SIGCHLD, SIG_IGN);
++
+   gGui = (gGui_t *) calloc(1, sizeof(gGui_t));
+   
+   gGui->stream                 = NULL;
+--- xine-ui-0.99.6.orig/src/xitk/panel.c
++++ xine-ui-0.99.6/src/xitk/panel.c
+@@ -356,7 +356,6 @@ void panel_update_runtime_display(void)
+  * Update slider thread.
+  */
+ static void *slider_loop(void *dummy) {
+-  int screensaver_timer = 0;
+   int status, speed;
+   int pos, secs;
+   int i = 0;
+@@ -441,20 +440,7 @@ static void *slider_loop(void *dummy) {
+       else
+         video_window_set_mrl((char *)gGui->mmk.mrl);
+       
+-      if(!xitk_is_window_iconified(gGui->video_display, gGui->video_window)) {
+-        
+-        if(gGui->ssaver_timeout) {
+-          
+-          if(!(i % 2))
+-            screensaver_timer++;
+-          
+-          if(screensaver_timer >= gGui->ssaver_timeout) {
+-            screensaver_timer = 0;
+-            video_window_reset_ssaver();
+-            
+-          }
+-        }  
+-      }
++       
video_window_suspend_ssaver(!xitk_is_window_iconified(gGui->video_display, 
gGui->video_window));
+ 
+       if(gGui->logo_mode == 0) {
+         
+@@ -494,6 +480,8 @@ static void *slider_loop(void *dummy) {
+           stream_infos_update_infos();
+ 
+       }
++      } else {
++       video_window_suspend_ssaver(0);
+       }
+     }
+     
+--- xine-ui-0.99.6.orig/src/xitk/videowin.c
++++ xine-ui-0.99.6/src/xitk/videowin.c
+@@ -1087,6 +1087,9 @@ static void video_window_adapt_size (voi
+ 
+   /* The old window should be destroyed now */
+   if(old_video_window != None) {
++    /* Screensaver control is tied to our window id */
++    video_window_suspend_ssaver(0);
++
+     XDestroyWindow(gGui->video_display, old_video_window);
+      
+     if(gGui->cursor_grabbed)
+@@ -2261,69 +2264,34 @@ static void video_window_handle_event (X
+ 
+ }
+ 
+-void video_window_reset_ssaver(void) {
++void video_window_suspend_ssaver(int do_suspend) {
++  static int was_suspended;
+ 
+-  if(gGui->ssaver_enabled && (xitk_get_last_keypressed_time() >= (long int) 
gGui->ssaver_timeout)) {
++  do_suspend = do_suspend && gGui->ssaver_enabled;
+ 
+-#ifdef HAVE_XTESTEXTENSION
+-    if(gVw.have_xtest == True) {
+-      
+-      gVw.fake_key_cur++;
+-      
+-      if(gVw.fake_key_cur >= 2)
+-      gVw.fake_key_cur = 0;
+-
+-      XLockDisplay(gGui->video_display);
+-      XTestFakeKeyEvent(gGui->video_display, gVw.fake_keys[gVw.fake_key_cur], 
True, CurrentTime);
+-      XTestFakeKeyEvent(gGui->video_display, gVw.fake_keys[gVw.fake_key_cur], 
False, CurrentTime);
+-      XSync(gGui->video_display, False);
+-      XUnlockDisplay(gGui->video_display);
++  if(was_suspended != do_suspend) {
++    if(fork() == 0) {
++      char window_id[30];
++      char *args[] = { "xdg-screensaver", NULL, window_id, NULL };
++      int fd;
++
++      for(fd = 3; fd < 256; fd++)
++      close(fd);
++
++      args[1] = do_suspend ? "suspend" : "resume";
++      sprintf(window_id, "%lu", (unsigned long)gGui->video_window);
++      execvp(args[0], args);
++      _exit(0);
+     }
+-    else 
+-#endif
+-    {
+-      /* Reset the gnome screensaver. Look up the command in PATH only once 
to save time, */
+-      /* assuming its location and permission will not change during run time 
of xine-ui. */
+-      {
+-      static char *const gssaver_args[] = { "gnome-screensaver-command", 
"--poke", NULL };
+-      static char *gssaver_path   = NULL;
+-
+-      if(!gssaver_path) {
+-        char *path = getenv("PATH");
+-
+-        if(!path)
+-          path = "/usr/local/bin:/usr/bin";
+-        do {
+-          char *p, *pbuf;
+-          int   plen;
+-
+-          for(p = path; *path && *path != ':'; path++)
+-            ;
+-          if(p == path)
+-            plen = 1, p = ".";
+-          else
+-            plen = path - p;
+-          asprintf(&pbuf, "%.*s/%s", plen, p, gssaver_args[0]);
+-          if ( access(pbuf, X_OK) ) {
+-            free(pbuf);
+-            gssaver_path = "";
+-          } else
+-            gssaver_path = pbuf;
+-        } while(!gssaver_path[0] && *path++);
+-      }
+-      if(gssaver_path[0] && (fork() == 0)) {
+-        execv(gssaver_path, gssaver_args);
+-        exit(0);
+-      }
+-      }
+ 
+-      XLockDisplay(gGui->video_display);
+-      XResetScreenSaver(gGui->video_display);
+-      XUnlockDisplay(gGui->video_display);
+-    }
++    was_suspended = do_suspend;
+   }
+ }
+ 
++void video_window_reset_ssaver(void) {
++  video_window_suspend_ssaver(1);
++}
++
+ void video_window_get_frame_size(int *w, int *h) {
+   if(w)
+     *w = gVw.frame_width;
+--- xine-ui-0.99.6.orig/src/xitk/videowin.h
++++ xine-ui-0.99.6/src/xitk/videowin.h
+@@ -81,6 +81,7 @@ void video_window_get_mag (float *xmag,
+ void video_window_update_logo(void);
+ void video_window_change_skins(int);
+ 
++void video_window_suspend_ssaver(int do_suspend);
+ void video_window_reset_ssaver(void);
+ 
+ void video_window_get_frame_size(int *w, int *h);
+--- xine-ui-0.99.6.orig/src/xitk/event.c
++++ xine-ui-0.99.6/src/xitk/event.c
+@@ -135,9 +135,6 @@ static void skip_by_chapter_cb(void *dat
+   gGui->skip_by_chapter = cfg->num_value;
+   panel_update_nextprev_tips();
+ }
+-static void ssaver_timeout_cb(void *data, xine_cfg_entry_t *cfg) {
+-  gGui->ssaver_timeout = cfg->num_value;
+-}
+ 
+ static void visual_anim_cb(void *data, xine_cfg_entry_t *cfg) {
+   
+@@ -1614,14 +1611,6 @@ void gui_init (int nfiles, char *filenam
+                                        snapshot_loc_cb,
+                                        CONFIG_NO_DATA);
+   
+-  gGui->ssaver_timeout =
+-    xine_config_register_num (__xineui_global_xine_instance, 
"gui.screensaver_timeout", 10,
+-                            _("Screensaver reset interval (s)"),
+-                            _("Time, in seconds, between two faked events to 
keep a screensaver quiet, 0 to disable."),
+-                            CONFIG_LEVEL_ADV,
+-                            ssaver_timeout_cb,
+-                            CONFIG_NO_DATA);
+-  
+   gGui->skip_by_chapter = 
+     xine_config_register_bool (__xineui_global_xine_instance, 
"gui.skip_by_chapter", 1,
+                              _("Chapter hopping"),
+
+
+
+
+ 

Modified: xine-ui.install
===================================================================
--- xine-ui.install     2011-04-08 23:39:50 UTC (rev 118859)
+++ xine-ui.install     2011-04-09 04:40:36 UTC (rev 118860)
@@ -1,6 +1,7 @@
 post_install() {
   xdg-icon-resource forceupdate --theme hicolor &> /dev/null
   update-mime-database usr/share/mime &> /dev/null
+  update-desktop-database -q
 }
 
 post_upgrade() {

Reply via email to