diff options
Diffstat (limited to 'testing/xine-ui')
-rw-r--r-- | testing/xine-ui/PKGBUILD | 42 | ||||
-rw-r--r-- | testing/xine-ui/fix_lirc.diff | 13 | ||||
-rw-r--r-- | testing/xine-ui/lirc-check-a89347673097.patch | 64 | ||||
-rw-r--r-- | testing/xine-ui/lirc-makefile-a68dd15ff7ae.patch | 19 | ||||
-rw-r--r-- | testing/xine-ui/xine-ui-xdg.diff | 206 | ||||
-rw-r--r-- | testing/xine-ui/xine-ui.install | 13 |
6 files changed, 357 insertions, 0 deletions
diff --git a/testing/xine-ui/PKGBUILD b/testing/xine-ui/PKGBUILD new file mode 100644 index 000000000..aae7761e5 --- /dev/null +++ b/testing/xine-ui/PKGBUILD @@ -0,0 +1,42 @@ +# $Id: PKGBUILD 146259 2012-01-07 05:13:42Z eric $ +# Maintainer: Eric BĂ©langer <eric@archlinux.org> + +pkgname=xine-ui +pkgver=0.99.6 +pkgrel=4 +pkgdesc="A free video player for Unix" +arch=('i686' 'x86_64') +license=('GPL') +url="http://www.xine-project.org" +depends=('xine-lib' 'curl' 'libpng' 'libxft' 'libxxf86vm' + 'xdg-utils' 'shared-mime-info' 'hicolor-icon-theme' + 'desktop-file-utils' 'lirc-utils') +makedepends=('libxt') +options=('!strip') +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 xine-ui-xdg.diff) +sha1sums=('abbdb331898c14025ee6b132f63ab7d3c1b5b31e' + 'b2df43ede3a9d1a34b80139704a4cbbc7295c584' + '8bbd39f61de7b6991385457a4944b8ea104da88b' + '2361df9ddad59c426b0f863414c6d527b463a38a' + '9c70c6543dae6815710b239b4638ffe3843bac86') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + 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" + sed -i '/\#include <curl\/types.h>/d' src/xitk/download.c + autoconf + ./configure --prefix=/usr --mandir=/usr/share/man \ + --with-x --enable-lirc --without-aalib --enable-debug + make +} + +package() { + cd "${srcdir}/${pkgname}-${pkgver}" + make DESTDIR="${pkgdir}" desktopdir=/usr/share/applications install +} diff --git a/testing/xine-ui/fix_lirc.diff b/testing/xine-ui/fix_lirc.diff new file mode 100644 index 000000000..93890cb5c --- /dev/null +++ b/testing/xine-ui/fix_lirc.diff @@ -0,0 +1,13 @@ +diff --git a/m4/_xine.m4 b/m4/_xine.m4 +--- a/m4/_xine.m4 ++++ b/m4/_xine.m4 +@@ -46,7 +46,8 @@ AC_DEFUN([AC_CHECK_LIRC], + fi + for llirc in $lirc_libprefix /lib /usr/lib /usr/local/lib; do + AC_CHECK_FILE(["$llirc/liblirc_client.so"], +- [LIRC_LIBS="$llirc/liblirc_client.so"] ++ [LIRC_LIBS="$llirc/liblirc_client.so" ++ found_lirc=yes] + AC_DEFINE([HAVE_LIRC],,[Define this if you have LIRC (liblirc_client) installed]), + AC_CHECK_FILE(["$llirc/liblirc_client.a"], + [LIRC_LIBS="$llirc/liblirc_client.a" diff --git a/testing/xine-ui/lirc-check-a89347673097.patch b/testing/xine-ui/lirc-check-a89347673097.patch new file mode 100644 index 000000000..c1c8d2614 --- /dev/null +++ b/testing/xine-ui/lirc-check-a89347673097.patch @@ -0,0 +1,64 @@ + +# HG changeset patch +# User Darren Salt <linux@youmustbejoking.demon.co.uk> +# Date 1268754560 0 +# Node ID a89347673097053d89675e991ab403cda04d94cd +# Parent ed3079d668ed5291d1daf7096d6b42c90ee06e11 +Resync LIRC check with gxine; no longer fails if liblircclient0.pc is missing. + +--- a/m4/_xine.m4 Sun Mar 14 18:04:46 2010 +0000 ++++ b/m4/_xine.m4 Tue Mar 16 15:49:20 2010 +0000 +@@ -25,14 +25,14 @@ + dnl + AC_DEFUN([AC_CHECK_LIRC], + [AC_ARG_ENABLE(lirc, +- [ --disable-lirc Turn off LIRC support.], +- [], enable_lirc=yes) ++ [AS_HELP_STRING([--disable-lirc], [turn off LIRC support])], ++ [given=Y], [given=N; enable_lirc=yes]) + + found_lirc=no + if test x"$enable_lirc" = xyes; then + have_lirc=yes +- PKG_CHECK_MODULES(LIRC, liblircclient0, [found_lirc=yes], []) +- if test "$LIRC_CFLAGS" != ''; then ++ PKG_CHECK_MODULES(LIRC, liblircclient0, [found_lirc=yes], [:]) ++ if test "$found_lirc" = yes; then + LIRC_INCLUDE="$LIRC_CFLAGS" + else + AC_REQUIRE_CPP +@@ -42,15 +42,20 @@ + + if test x"$LIRC_PREFIX" != "x"; then + lirc_libprefix="$LIRC_PREFIX/lib" +- LIRC_INCLUDE="-I$LIRC_PREFIX/include" ++ LIRC_INCLUDE="-I$LIRC_PREFIX/include" + fi + for llirc in $lirc_libprefix /lib /usr/lib /usr/local/lib; do +- AC_CHECK_FILE(["$llirc/liblirc_client.a"], +- [LIRC_LIBS="$llirc/liblirc_client.a" +- found_lirc=yes],,) ++ AC_CHECK_FILE(["$llirc/liblirc_client.so"], ++ [LIRC_LIBS="$llirc/liblirc_client.so"] ++ AC_DEFINE([HAVE_LIRC],,[Define this if you have LIRC (liblirc_client) installed]), ++ AC_CHECK_FILE(["$llirc/liblirc_client.a"], ++ [LIRC_LIBS="$llirc/liblirc_client.a" ++ found_lirc=yes],,) ++ ) + done + else +- AC_MSG_RESULT([*** LIRC client support not available, LIRC support will be disabled ***]); ++ test $given = Y && AC_MSG_ERROR([LIRC client support requested but not available]) ++ AC_MSG_RESULT([*** LIRC client support not available, LIRC support will be disabled ***]) + fi + fi + fi +@@ -59,7 +64,6 @@ + fi + AC_SUBST(LIRC_LIBS) + AC_SUBST(LIRC_INCLUDE) +- AM_CONDITIONAL([HAVE_LIRC], [test "x$have_lirc" = "xyes"]) + ]) + + dnl AC_C_ATTRIBUTE_ALIGNED + diff --git a/testing/xine-ui/lirc-makefile-a68dd15ff7ae.patch b/testing/xine-ui/lirc-makefile-a68dd15ff7ae.patch new file mode 100644 index 000000000..daad4f03a --- /dev/null +++ b/testing/xine-ui/lirc-makefile-a68dd15ff7ae.patch @@ -0,0 +1,19 @@ + +# HG changeset patch +# User Darren Salt <linux@youmustbejoking.demon.co.uk> +# Date 1268758696 0 +# Node ID a68dd15ff7ae4be65c2ace25ef66966d7c272514 +# Parent 882c464d4a650d09da37ade366face74452c1897 +Restore definition of HAVE_LIRC for use in makefiles. + +--- a/m4/_xine.m4 Mon Mar 15 12:03:01 2010 -0700 ++++ b/m4/_xine.m4 Tue Mar 16 16:58:16 2010 +0000 +@@ -62,6 +62,7 @@ + if test "$found_lirc" = yes; then + AC_DEFINE([HAVE_LIRC],,[Define this if you have LIRC (liblirc_client) installed]) + fi ++ AM_CONDITIONAL([HAVE_LIRC], [test "$found_lirc" = yes]) + AC_SUBST(LIRC_LIBS) + AC_SUBST(LIRC_INCLUDE) + ]) + diff --git a/testing/xine-ui/xine-ui-xdg.diff b/testing/xine-ui/xine-ui-xdg.diff new file mode 100644 index 000000000..959d674b2 --- /dev/null +++ b/testing/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/testing/xine-ui/xine-ui.install b/testing/xine-ui/xine-ui.install new file mode 100644 index 000000000..3b3aff7d9 --- /dev/null +++ b/testing/xine-ui/xine-ui.install @@ -0,0 +1,13 @@ +post_install() { + xdg-icon-resource forceupdate --theme hicolor &> /dev/null + update-mime-database usr/share/mime &> /dev/null + update-desktop-database -q +} + +post_upgrade() { + post_install +} + +post_remove() { + post_install +} |