Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 141766 Details for
Bug 207377
add gnome-screensaver support to mplayer
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
actual patch
mplayer-1.0_rc2_p24929-gnome-screensaver.patch (text/plain), 9.60 KB, created by
Olaf Leidinger
on 2008-01-25 12:46:04 UTC
(
hide
)
Description:
actual patch
Filename:
MIME Type:
Creator:
Olaf Leidinger
Created:
2008-01-25 12:46:04 UTC
Size:
9.60 KB
patch
obsolete
>diff -Nur mplayer-1.0_rc2_p24929/configure mplayer-1.0_rc2_p24929-patched/configure >--- mplayer-1.0_rc2_p24929/configure 2007-11-02 03:08:10.000000000 +0100 >+++ mplayer-1.0_rc2_p24929-patched/configure 2008-01-25 13:23:15.000000000 +0100 >@@ -281,6 +281,7 @@ > --disable-vstream disable TiVo vstream client support [autodetect] > --disable-pthreads disable Posix threads support [autodetect] > --disable-w32threads disable Win32 threads support [autodetect] >+ --disable-dbus-glib Disable D-BUS GLib interface (required for GNOME screensaver support) [autodetect] > --disable-ass disable internal SSA/ASS subtitle support [autodetect] > --enable-rpath enable runtime linker path for extra libs [disabled] > >@@ -672,6 +673,7 @@ > _musepack=auto > _vstream=auto > _pthreads=auto >+_dbus_glib=auto > _w32threads=auto > _ass=auto > _rpath=no >@@ -1112,6 +1114,8 @@ > --disable-pthreads) _pthreads=no ;; > --enable-w32threads) _w32threads=yes ;; > --disable-w32threads) _w32threads=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 ;; >@@ -5605,6 +5609,7 @@ > else > _def_fontconfig='#undef HAVE_FONTCONFIG' > fi >+_ld_fontconfig="-lfontconfig" > echores "$_fontconfig" > > >@@ -7172,6 +7177,25 @@ > 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' >+ _libs_mplayer="$_libs_mplayer `$_pkg_config --libs dbus-glib-1`" >+ # Enable GNOME screensaver support if both D-BUS GLib and X11 are present >+ if test "$_x11" = yes; then >+ _vosrc="$_vosrc gnome_screensaver.c" >+ fi >+else >+ _def_dbus_glib='#undef HAVE_DBUS_GLIB' >+fi >+echores "$_dbus_glib" >+ > # --------------- GUI specific tests begin ------------------- > echocheck "GUI" > echo "$_gui" >@@ -7618,6 +7642,9 @@ > HAVE_PTHREADS = $_pthreads > HAVE_W32THREADS = $_w32threads > >+DBUS_GLIB_INC = $_inc_dbus_glib >+DBUS_GLIB_LIB = $_ld_dbus_glib >+ > HAVE_XVMC_ACCEL = $_xvmc > > HAVE_SYS_MMAN_H = $_mman >@@ -8496,6 +8523,7 @@ > $_def_tga > $_def_toolame > $_def_twolame >+$_def_dbus_glib > > /* used by GUI: */ > $_def_xshape >diff -Nur mplayer-1.0_rc2_p24929/help/help_mp-en.h mplayer-1.0_rc2_p24929-patched/help/help_mp-en.h >--- mplayer-1.0_rc2_p24929/help/help_mp-en.h 2007-11-02 03:08:09.000000000 +0100 >+++ mplayer-1.0_rc2_p24929-patched/help/help_mp-en.h 2008-01-25 13:23:15.000000000 +0100 >@@ -711,6 +711,14 @@ > #define MSGTR_NoVolume "[Mixer] No volume control available.\n" > #define MSGTR_NoBalance "[Mixer] No balance 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.0_rc2_p24929/libvo/gnome_screensaver.c mplayer-1.0_rc2_p24929-patched/libvo/gnome_screensaver.c >--- mplayer-1.0_rc2_p24929/libvo/gnome_screensaver.c 1970-01-01 01:00:00.000000000 +0100 >+++ mplayer-1.0_rc2_p24929-patched/libvo/gnome_screensaver.c 2008-01-25 13:23:15.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.0_rc2_p24929/libvo/gnome_screensaver.h mplayer-1.0_rc2_p24929-patched/libvo/gnome_screensaver.h >--- mplayer-1.0_rc2_p24929/libvo/gnome_screensaver.h 1970-01-01 01:00:00.000000000 +0100 >+++ mplayer-1.0_rc2_p24929-patched/libvo/gnome_screensaver.h 2008-01-25 13:23:15.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.0_rc2_p24929/libvo/Makefile mplayer-1.0_rc2_p24929-patched/libvo/Makefile >--- mplayer-1.0_rc2_p24929/libvo/Makefile 2007-08-14 04:36:07.000000000 +0200 >+++ mplayer-1.0_rc2_p24929-patched/libvo/Makefile 2008-01-25 13:23:15.000000000 +0100 >@@ -27,3 +27,7 @@ > $(CC) $(CFLAGS) -c -o $@ $< > > vo_png.o: CFLAGS := $(filter-out -I../libavcodec,$(CFLAGS)) >+ >+gnome_screensaver.o: gnome_screensaver.c >+ $(CC) -c $(CFLAGS) $(DBUS_GLIB_INC) -o $@ $< >+ >diff -Nur mplayer-1.0_rc2_p24929/libvo/x11_common.c mplayer-1.0_rc2_p24929-patched/libvo/x11_common.c >--- mplayer-1.0_rc2_p24929/libvo/x11_common.c 2007-11-02 03:08:08.000000000 +0100 >+++ mplayer-1.0_rc2_p24929-patched/libvo/x11_common.c 2008-01-25 13:23:15.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 >@@ -1754,8 +1758,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 >@@ -1800,8 +1808,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 =
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 207377
:
141764
|
141765
| 141766