changeset 18287:292337d09af2

Remove updating of vo_mouse_timer_const from the main loop and also remove the variable itself. Convert code in x11_common.c and OSD timing that depended on the variable to use real time instead.
author uau
date Tue, 25 Apr 2006 21:36:02 +0000
parents e0470e00b3bd
children 008309f674bd
files Gui/mplayer/mw.c libvo/video_out.h libvo/x11_common.c libvo/x11_common.h mplayer.c mplayer.h
diffstat 6 files changed, 22 insertions(+), 21 deletions(-) [+]
line wrap: on
line diff
--- a/Gui/mplayer/mw.c	Tue Apr 25 20:32:46 2006 +0000
+++ b/Gui/mplayer/mw.c	Tue Apr 25 21:36:02 2006 +0000
@@ -78,7 +78,6 @@
 
 extern void exit_player(char* how);
 extern int vcd_track;
-extern int osd_visible;
 static unsigned last_redraw_time = 0;
 
 void mplEventHandling( int msg,float param )
@@ -271,7 +270,7 @@
 #ifdef USE_OSD
 	if ( osd_level )
 	 {
-	  osd_visible=vo_mouse_timer_const;
+	  osd_visible=(GetTimerMS() + 1000) | 1;
 	  vo_osd_progbar_type=OSD_VOLUME;
 	  vo_osd_progbar_value=( ( guiIntfStruct.Volume ) * 256.0 ) / 100.0;
 	  vo_osd_changed( OSDTYPE_PROGBAR );
--- a/libvo/video_out.h	Tue Apr 25 20:32:46 2006 +0000
+++ b/libvo/video_out.h	Tue Apr 25 21:36:02 2006 +0000
@@ -217,7 +217,6 @@
 extern int vo_gamma_green_intensity;
 extern int vo_gamma_blue_intensity;
 
-extern int vo_mouse_timer_const;
 extern int vo_nomouse_input;
 
 extern int vo_pts;
--- a/libvo/x11_common.c	Tue Apr 25 20:32:46 2006 +0000
+++ b/libvo/x11_common.c	Tue Apr 25 21:36:02 2006 +0000
@@ -1001,8 +1001,8 @@
     }
 }
 
-int vo_mouse_timer_const = 30;
-static int vo_mouse_counter = 30;
+static unsigned int mouse_timer;
+static int mouse_waiting_hide;
 
 int vo_x11_check_events(Display * mydisplay)
 {
@@ -1014,8 +1014,11 @@
 
 // unsigned long  vo_KeyTable[512];
 
-    if ((vo_mouse_autohide) && (--vo_mouse_counter == 0))
+    if ((vo_mouse_autohide) && mouse_waiting_hide &&
+                                 (GetTimerMS() - mouse_timer >= 1000)) {
         vo_hidecursor(mydisplay, vo_window);
+        mouse_waiting_hide = 0;
+    }
 
     while (XPending(mydisplay))
     {
@@ -1084,14 +1087,16 @@
                 if (vo_mouse_autohide)
                 {
                     vo_showcursor(mydisplay, vo_window);
-                    vo_mouse_counter = vo_mouse_timer_const;
+                    mouse_waiting_hide = 1;
+                    mouse_timer = GetTimerMS();
                 }
                 break;
             case ButtonPress:
                 if (vo_mouse_autohide)
                 {
                     vo_showcursor(mydisplay, vo_window);
-                    vo_mouse_counter = vo_mouse_timer_const;
+                    mouse_waiting_hide = 1;
+                    mouse_timer = GetTimerMS();
                 }
                 // Ignore mouse whell press event
                 if (Event.xbutton.button > 3)
@@ -1112,7 +1117,8 @@
                 if (vo_mouse_autohide)
                 {
                     vo_showcursor(mydisplay, vo_window);
-                    vo_mouse_counter = vo_mouse_timer_const;
+                    mouse_waiting_hide = 1;
+                    mouse_timer = GetTimerMS();
                 }
 #ifdef HAVE_NEW_GUI
                 // Ignor mouse button 1 - 3 under gui 
--- a/libvo/x11_common.h	Tue Apr 25 20:32:46 2006 +0000
+++ b/libvo/x11_common.h	Tue Apr 25 21:36:02 2006 +0000
@@ -33,7 +33,6 @@
 extern int mScreen;
 extern int mLocalDisplay;
 
-extern int vo_mouse_timer_const;
 extern int vo_mouse_autohide;
 
 extern int vo_init( void );
--- a/mplayer.c	Tue Apr 25 20:32:46 2006 +0000
+++ b/mplayer.c	Tue Apr 25 21:36:02 2006 +0000
@@ -239,7 +239,8 @@
 
 int osd_level=1;
 int osd_level_saved=-1;
-int osd_visible=100;
+// if nonzero, hide current OSD contents when GetTimerMS() reaches this
+unsigned int osd_visible;
 static int osd_function=OSD_PLAY;
 static int osd_show_percentage = 0;
 static int osd_duration = 1000;
@@ -1229,7 +1230,7 @@
     
 #ifdef USE_OSD
     if(sh_video) {
-        osd_visible = sh_video->fps;
+        osd_visible = (GetTimerMS() + 1000) | 1;
         vo_osd_progbar_type = type;
         vo_osd_progbar_value = 256*(val-min)/(max-min);
         vo_osd_changed(OSDTYPE_PROGBAR);
@@ -3195,9 +3196,6 @@
       sh_video->frametime=1.0f/sh_video->fps;
     }
     vo_fps = sh_video->fps;
-#ifdef HAVE_X11
-    vo_mouse_timer_const=(int)sh_video->fps;
-#endif
 
     if(!sh_video->fps && !force_fps){
       mp_msg(MSGT_CPLAYER,MSGL_ERR,MSGTR_FPSnotspecified);
@@ -3725,9 +3723,6 @@
 	time_frame+=frame_time;  // for nosound
 	// video_read_frame can change fps (e.g. for asf video)
 	vo_fps = sh_video->fps;
-#ifdef HAVE_X11
-	vo_mouse_timer_const = (int)sh_video->fps;
-#endif
 	// check for frame-drop:
 	current_module="check_framedrop";
 	if(sh_audio && !d_audio->eof){
@@ -4056,7 +4051,10 @@
 
 #ifdef USE_OSD
   if(osd_visible){
-    if (!--osd_visible){
+      // 36000000 means max timed visibility is 1 hour into the future, if
+      // the difference is greater assume it's wrapped around from below 0
+    if (osd_visible - GetTimerMS() > 36000000) {
+       osd_visible = 0;
        vo_osd_progbar_type=-1; // disable
        vo_osd_changed(OSDTYPE_PROGBAR);
        if (osd_function != OSD_PAUSE)
@@ -4929,7 +4927,7 @@
       if(sh_video) {
 	c_total=0;
 	max_pts_correction=0.1;
-	osd_visible=sh_video->fps; // to rewert to PLAY pointer after 1 sec
+	osd_visible=(GetTimerMS() + 1000) | 1; // to revert to PLAY pointer after 1 sec
 	audio_time_usage=0; video_time_usage=0; vout_time_usage=0;
 	drop_frame_cnt=0;
 	too_slow_frame_cnt=0;
--- a/mplayer.h	Tue Apr 25 20:32:46 2006 +0000
+++ b/mplayer.h	Tue Apr 25 21:36:02 2006 +0000
@@ -20,7 +20,7 @@
 extern float  audio_delay;
 
 extern int osd_level;
-extern int osd_visible;
+extern unsigned int osd_visible;
 
 extern char * font_name;
 extern float  font_factor;