Add heartbeat-cmd option
authorreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>
Mon, 7 Jan 2008 12:30:15 +0000 (12:30 +0000)
committerreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>
Mon, 7 Jan 2008 12:30:15 +0000 (12:30 +0000)
git-svn-id: svn://git.mplayerhq.hu/mplayer/trunk@25639 b3059339-0415-0410-9bf9-f77b7e298cf2

DOCS/man/en/mplayer.1
cfg-mplayer.h
mplayer.c

index 580ce3a..2ae23ef 100644 (file)
@@ -836,6 +836,24 @@ More intense frame dropping (breaks decoding).
 Leads to image distortion!
 .
 .TP
+.B \-heartbeat-cmd
+Command that is executed every 30 seconds during playback via system() -
+i.e. using the shell.
+.sp 1
+.I NOTE:
+MPlayer uses this command without any checking, it is your responsibility
+to ensure it does not cause security problems (e.g. make sure to use full
+paths if "." is in your path like on Windows).
+.sp 1
+This can be "misused" to disable screensavers that do not support the proper
+X API for this.
+.sp 1
+.I EXAMPLE for gnome screensaver:
+mplayer \-heartbeat-cmd "gnome-screensaver-command -p" file
+.RE
+.PD 1
+.
+.TP
 .B \-identify
 Shorthand for \-msglevel identify=4.
 Show file parameters in an easily parseable format.
index 1728328..9cc2c95 100644 (file)
@@ -207,6 +207,7 @@ const m_option_t mplayer_opts[]={
        {"stop_xscreensaver", "Use -stop-xscreensaver instead, options with _ have been obsoleted.\n", CONF_TYPE_PRINT, 0, 0, 0, NULL},
        {"fstype", &vo_fstype_list, CONF_TYPE_STRING_LIST, 0, 0, 0, NULL},
 #endif
+       {"heartbeat-cmd", &heartbeat_cmd, CONF_TYPE_STRING, 0, 0, 0, NULL},
        {"mouseinput", &vo_nomouse_input, CONF_TYPE_FLAG, 0, 1, 0, NULL},
        {"nomouseinput", &vo_nomouse_input, CONF_TYPE_FLAG,0, 0, 1, NULL},
 
index f460733..6fb986a 100644 (file)
--- a/mplayer.c
+++ b/mplayer.c
@@ -89,6 +89,8 @@ int enable_mouse_movements=0;
 char * proc_priority=NULL;
 #endif
 
+char *heartbeat_cmd;
+
 #define ROUND(x) ((int)((x)<0 ? (x)-0.5 : (x)+0.5))
 
 #ifdef HAVE_RTC
@@ -3442,6 +3444,14 @@ if(!mpctx->sh_video) {
        xscreensaver_heartbeat();
     }
 #endif
+    if (heartbeat_cmd) {
+        static unsigned last_heartbeat;
+        unsigned now = GetTimerMS();
+        if (now - last_heartbeat > 30000) {
+            last_heartbeat = now;
+            system(heartbeat_cmd);
+        }
+    }
 
     frame_time_remaining = sleep_until_update(&time_frame, &aq_sleep_time);