From 8f6922302486fa1cc1112ff8b3daddb48c3260f2 Mon Sep 17 00:00:00 2001 From: root Date: Sun, 10 Apr 2011 04:43:11 +0000 Subject: Sun Apr 10 04:43:11 UTC 2011 --- extra/xine-ui/PKGBUILD | 32 ++++--- extra/xine-ui/xine-ui-xdg.diff | 206 +++++++++++++++++++++++++++++++++++++++++ extra/xine-ui/xine-ui.install | 1 + 3 files changed, 224 insertions(+), 15 deletions(-) create mode 100644 extra/xine-ui/xine-ui-xdg.diff (limited to 'extra/xine-ui') diff --git a/extra/xine-ui/PKGBUILD b/extra/xine-ui/PKGBUILD index 4c5471ffa..9cc134600 100644 --- a/extra/xine-ui/PKGBUILD +++ b/extra/xine-ui/PKGBUILD @@ -1,41 +1,43 @@ -# $Id: PKGBUILD 77076 2010-04-10 16:09:26Z andrea $ -# Maintainer: Eric Belanger +# $Id: PKGBUILD 118860 2011-04-09 04:40:36Z eric $ +# Maintainer: Eric BĂ©langer 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" } diff --git a/extra/xine-ui/xine-ui-xdg.diff b/extra/xine-ui/xine-ui-xdg.diff new file mode 100644 index 000000000..959d674b2 --- /dev/null +++ b/extra/xine-ui/xine-ui-xdg.diff @@ -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"), + + + + + diff --git a/extra/xine-ui/xine-ui.install b/extra/xine-ui/xine-ui.install index 8afc56658..3b3aff7d9 100644 --- a/extra/xine-ui/xine-ui.install +++ b/extra/xine-ui/xine-ui.install @@ -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() { -- cgit v1.2.3-54-g00ecf