summaryrefslogtreecommitdiffstats
path: root/abs/extra-testing/mplayer/MPlayer-1.0rc1-gnome-screensaver.patch
diff options
context:
space:
mode:
Diffstat (limited to 'abs/extra-testing/mplayer/MPlayer-1.0rc1-gnome-screensaver.patch')
-rw-r--r--abs/extra-testing/mplayer/MPlayer-1.0rc1-gnome-screensaver.patch286
1 files changed, 286 insertions, 0 deletions
diff --git a/abs/extra-testing/mplayer/MPlayer-1.0rc1-gnome-screensaver.patch b/abs/extra-testing/mplayer/MPlayer-1.0rc1-gnome-screensaver.patch
new file mode 100644
index 0000000..79deb93
--- /dev/null
+++ b/abs/extra-testing/mplayer/MPlayer-1.0rc1-gnome-screensaver.patch
@@ -0,0 +1,286 @@
+diff -Nur MPlayer-1.0rc1.orig/configure MPlayer-1.0rc1/configure
+--- MPlayer-1.0rc1.orig/configure 2006-10-23 00:32:31.000000000 +0200
++++ MPlayer-1.0rc1/configure 2006-11-11 14:02:38.000000000 +0100
+@@ -257,6 +257,7 @@
+ --disable-ftp Disable ftp support [enabled]
+ --disable-vstream Disable tivo vstream client support [autodetect]
+ --disable-pthreads Disable Posix threads support [autodetect]
++ --disable-dbus-glib Disable D-BUS GLib interface (required for GNOME screensaver support) [autodetect]
+ --disable-ass Disable internal SSA/ASS subtitles support [autodetect]
+ --enable-rpath Enable runtime linker path for extra libs [disabled]
+
+@@ -1721,6 +1722,7 @@
+ _musepack=auto
+ _vstream=auto
+ _pthreads=auto
++_dbus_glib=auto
+ _ass=auto
+ _rpath=no
+ _asmalign_pot=auto
+@@ -2033,6 +2035,8 @@
+ --disable-vstream) _vstream=no ;;
+ --enable-pthreads) _pthreads=yes ;;
+ --disable-pthreads) _pthreads=no ;;
++ --enable-dbus-glib) _dbus_glib=yes ;;
++ --disable-dbus-glib) _dbus_glib=no ;;
+ --enable-ass) _ass=yes ;;
+ --disable-ass) _ass=no ;;
+ --enable-rpath) _rpath=yes ;;
+@@ -7029,6 +7033,19 @@
+ fi
+ echores "$_gethostbyname2"
+
++echocheck "D-BUS GLib interface"
++if test "$_dbus_glib" = auto && pkg-config --exists dbus-glib-1; then
++ _dbus_glib=yes
++ _inc_dbus_glib=`pkg-config --cflags dbus-glib-1 2>/dev/null`
++ _ld_dbus_glib=`pkg-config --libs dbus-glib-1 2>/dev/null`
++fi
++
++if test "$_dbus_glib" = yes; then
++ _def_dbus_glib='#define HAVE_DBUS_GLIB 1'
++else
++ _def_dbus_glib='#undef HAVE_DBUS_GLIB'
++fi
++echores "$_dbus_glib"
+
+ # --------------- GUI specific tests begin -------------------
+ echocheck "GUI"
+@@ -7521,6 +7538,10 @@
+ VESA_LIB = $_ld_vesa
+ AA_LIB = $_ld_aa
+ CACA_LIB = $_ld_caca
++DBUS_GLIB_INC = $_inc_dbus_glib
++DBUS_GLIB_LIB = $_ld_dbus_glib
++DBUS_GLIB = $_dbus_glib
++
+
+ # audio output
+ OSS = $_ossaudio
+@@ -8378,6 +8399,7 @@
+ $_def_tga
+ $_def_toolame
+ $_def_twolame
++$_def_dbus_glib
+
+ /* used by GUI: */
+ $_def_xshape
+diff -Nur MPlayer-1.0rc1.orig/help/help_mp-en.h MPlayer-1.0rc1/help/help_mp-en.h
+--- MPlayer-1.0rc1.orig/help/help_mp-en.h 2006-10-23 00:32:29.000000000 +0200
++++ MPlayer-1.0rc1/help/help_mp-en.h 2006-11-11 14:02:38.000000000 +0100
+@@ -679,6 +679,13 @@
+ #define MSGTR_InsertingAfVolume "[Mixer] No hardware mixing, inserting volume filter.\n"
+ #define MSGTR_NoVolume "[Mixer] No volume control available.\n"
+
++// gnome_screensaver.c
++#define MSGTR_OpenBusConnectionError "%s: Failed to open connection to bus: %s\n"
++#define MSGTR_RemoteMethodException "%s: Caught remote method exception %s: %s\n"
++#define MSGTR_GError "%s: Error: %s\n"
++#define MSGTR_GNOMEScreensaverEnabled "GNOME screensaver enabled\n"
++#define MSGTR_GNOMEScreensaverDisabled "GNOME screensaver disabled\n"
++
+ // ====================== GUI messages/buttons ========================
+
+ #ifdef HAVE_NEW_GUI
+diff -Nur MPlayer-1.0rc1.orig/libvo/gnome_screensaver.c MPlayer-1.0rc1/libvo/gnome_screensaver.c
+--- MPlayer-1.0rc1.orig/libvo/gnome_screensaver.c 1970-01-01 01:00:00.000000000 +0100
++++ MPlayer-1.0rc1/libvo/gnome_screensaver.c 2006-11-11 14:02:38.000000000 +0100
+@@ -0,0 +1,120 @@
++/*
++ * gnome_screensaver.c v0.0.7
++ *
++ * Enable/Disable the GNOME screensaver
++ * Supports GNOME screensaver API 2.14 and 2.15
++ *
++ * Call gnome_screensaver_control(1) to enable and
++ * gnome_screensaver_control(0) to disable
++ *
++ */
++
++#include <stdlib.h>
++#include <unistd.h>
++#include <dbus/dbus-glib.h>
++
++#include "gnome_screensaver.h"
++#include "mp_msg.h"
++#include "help_mp.h"
++
++#define GS_SERVICE "org.gnome.ScreenSaver"
++#define GS_PATH "/org/gnome/ScreenSaver"
++#define GS_INTERFACE "org.gnome.ScreenSaver"
++
++#define GS_APPLICATION_NAME "MPlayer"
++#define GS_REASON_FOR_INHIBIT "Playing a movie"
++
++static guint32 cookie;
++
++void gnome_screensaver_control(int enable)
++{
++ DBusGConnection *connection;
++ GError *error;
++ DBusGProxy *proxy;
++ gboolean ret;
++ char *funcname = "gnome_screensaver_control()";
++
++ g_type_init();
++
++ /* Get a connection to the session bus */
++ error = NULL;
++ connection = dbus_g_bus_get(DBUS_BUS_SESSION, &error);
++ if (connection == NULL) {
++ mp_msg(MSGT_VO, MSGL_ERR,
++ funcname, MSGTR_OpenBusConnectionError, error->message);
++ g_error_free(error);
++ return;
++ }
++
++ /* Create a proxy object */
++ proxy = dbus_g_proxy_new_for_name(connection,
++ GS_SERVICE, GS_PATH, GS_INTERFACE);
++
++ /* Enable the screensaver */
++ if (enable) {
++ /* First call the GNOME screensaver 2.15 API method */
++ error = NULL;
++ ret =
++ dbus_g_proxy_call(proxy, "UnInhibit", &error, G_TYPE_UINT,
++ cookie, G_TYPE_INVALID);
++
++ /* If this fails, try the GNOME screensaver 2.14 API */
++ if (!ret && error->domain == DBUS_GERROR
++ && error->code == DBUS_GERROR_UNKNOWN_METHOD) {
++ mp_msg(MSGT_VO, MSGL_V,
++ "%s: GNOME screensaver 2.15 API failed, trying 2.14 API\n",
++ funcname);
++ g_error_free(error);
++ error = NULL;
++ ret =
++ dbus_g_proxy_call(proxy, "AllowActivation", &error,
++ G_TYPE_INVALID, G_TYPE_INVALID);
++ }
++ }
++ /* Disable the screensaver */
++ else {
++ /* First call the GNOME screensaver 2.15 API method */
++ error = NULL;
++ ret =
++ dbus_g_proxy_call(proxy, "Inhibit", &error, G_TYPE_STRING,
++ GS_APPLICATION_NAME, G_TYPE_STRING,
++ GS_REASON_FOR_INHIBIT, G_TYPE_INVALID,
++ G_TYPE_UINT, cookie, G_TYPE_INVALID);
++
++ /* If this fails, try the GNOME screensaver 2.14 API */
++ if (!ret && error->domain == DBUS_GERROR
++ && error->code == DBUS_GERROR_UNKNOWN_METHOD) {
++ mp_msg(MSGT_VO, MSGL_V,
++ "%s: GNOME screensaver 2.15 API failed, trying 2.14 API\n",
++ funcname);
++ g_error_free(error);
++ error = NULL;
++ ret =
++ dbus_g_proxy_call(proxy, "InhibitActivation", &error,
++ G_TYPE_STRING, GS_REASON_FOR_INHIBIT,
++ G_TYPE_INVALID, G_TYPE_INVALID);
++ }
++ }
++
++ if (!ret) {
++ /* Check if it's a remote exception or a regular GError */
++ if (error->domain == DBUS_GERROR
++ && error->code == DBUS_GERROR_REMOTE_EXCEPTION) {
++ mp_msg(MSGT_VO, MSGL_ERR,
++ funcname, MSGTR_RemoteMethodException,
++ dbus_g_error_get_name(error), error->message);
++ }
++ else {
++ mp_msg(MSGT_VO, MSGL_ERR,
++ funcname, MSGTR_GError, error->message);
++ }
++ g_error_free(error);
++ }
++ else {
++ mp_msg(MSGT_VO, MSGL_INFO,
++ enable ? MSGTR_GNOMEScreensaverEnabled :
++ MSGTR_GNOMEScreensaverDisabled);
++ }
++
++ g_object_unref(proxy);
++}
+diff -Nur MPlayer-1.0rc1.orig/libvo/gnome_screensaver.h MPlayer-1.0rc1/libvo/gnome_screensaver.h
+--- MPlayer-1.0rc1.orig/libvo/gnome_screensaver.h 1970-01-01 01:00:00.000000000 +0100
++++ MPlayer-1.0rc1/libvo/gnome_screensaver.h 2006-11-11 14:02:38.000000000 +0100
+@@ -0,0 +1,6 @@
++#ifndef _GNOME_SCREENSAVER_H
++#define _GNOME_SCREENSAVER_H
++
++extern void gnome_screensaver_control(int enable);
++
++#endif /* !_GNOME_SCREENSAVER_H */
+diff -Nur MPlayer-1.0rc1.orig/libvo/Makefile MPlayer-1.0rc1/libvo/Makefile
+--- MPlayer-1.0rc1.orig/libvo/Makefile 2006-10-23 00:32:26.000000000 +0200
++++ MPlayer-1.0rc1/libvo/Makefile 2006-11-11 14:02:38.000000000 +0100
+@@ -39,6 +39,11 @@
+ SRCS += vosub_vidix.c
+ endif
+
++ifeq ($(DBUS_GLIB),yes)
++SRCS += gnome_screensaver.c
++LIBAV_INC += $(DBUS_GLIB_INC)
++endif
++
+ INCLUDE = -I. -I.. -I../osdep $(LIBAV_INC)
+ CFLAGS = $(INCLUDE) $(OPTFLAGS) -DMPG12PLAY
+
+diff -Nur MPlayer-1.0rc1.orig/libvo/x11_common.c MPlayer-1.0rc1/libvo/x11_common.c
+--- MPlayer-1.0rc1.orig/libvo/x11_common.c 2006-10-23 00:32:26.000000000 +0200
++++ MPlayer-1.0rc1/libvo/x11_common.c 2006-11-11 14:02:38.000000000 +0100
+@@ -58,6 +58,10 @@
+ #include "mplayer.h"
+ #endif
+
++#ifdef HAVE_DBUS_GLIB
++#include "gnome_screensaver.h"
++#endif
++
+ #define WIN_LAYER_ONBOTTOM 2
+ #define WIN_LAYER_NORMAL 4
+ #define WIN_LAYER_ONTOP 6
+@@ -1701,8 +1705,12 @@
+ timeout_save = 0;
+ }
+
+- if (stop_xscreensaver)
++ if (stop_xscreensaver) {
+ xscreensaver_enable();
++#ifdef HAVE_DBUS_GLIB
++ gnome_screensaver_control(1);
++#endif
++ }
+ if (kdescreensaver_was_running && stop_xscreensaver)
+ {
+ system
+@@ -1747,8 +1755,12 @@
+ allow_exp);
+ }
+ // turning off screensaver
+- if (stop_xscreensaver)
++ if (stop_xscreensaver) {
+ xscreensaver_disable(mDisplay);
++#ifdef HAVE_DBUS_GLIB
++ gnome_screensaver_control(0);
++#endif
++ }
+ if (stop_xscreensaver && !kdescreensaver_was_running)
+ {
+ kdescreensaver_was_running =
+diff -Nur MPlayer-1.0rc1.orig/Makefile MPlayer-1.0rc1/Makefile
+--- MPlayer-1.0rc1.orig/Makefile 2006-10-23 00:32:31.000000000 +0200
++++ MPlayer-1.0rc1/Makefile 2006-11-11 14:02:38.000000000 +0100
+@@ -75,6 +75,7 @@
+ $(DIRECTFB_LIB) \
+ $(CACA_LIB) \
+ $(VESA_LIB) \
++ $(DBUS_GLIB_LIB) \
+
+ ifeq ($(VIDIX),yes)
+ VO_LIBS += vidix/libvidix.a