From b6004b1b7c8710c477a62a06ec7c3535c5e5e2cd Mon Sep 17 00:00:00 2001 From: pontscho Date: Fri, 3 May 2002 20:57:13 +0000 Subject: fix xmga fs, resize to movie size and mouse auto hide + dga git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@5956 b3059339-0415-0410-9bf9-f77b7e298cf2 --- Gui/interface.c | 6 ++---- libvo/vo_x11.c | 2 +- libvo/vo_xmga.c | 19 +++++++------------ libvo/vo_xv.c | 8 +++++++- libvo/x11_common.c | 20 ++++++++++++++------ libvo/x11_common.h | 1 + mplayer.c | 1 - 7 files changed, 32 insertions(+), 25 deletions(-) diff --git a/Gui/interface.c b/Gui/interface.c index da5703d516..308cc88af9 100644 --- a/Gui/interface.c +++ b/Gui/interface.c @@ -96,12 +96,10 @@ void guiGetEvent( int type,char * arg ) wsPostRedisplay( &appMPlayer.subWindow ); break; case guiSetShVideo: - if ( arg ) { - tmp_sh_video_t * sh_video = (tmp_sh_video_t *)arg; mplResizeToMovieSize( vo_dwidth,vo_dheight ); - guiIntfStruct.MovieWidth=sh_video->disp_w; - guiIntfStruct.MovieHeight=sh_video->disp_h; + guiIntfStruct.MovieWidth=vo_dwidth; + guiIntfStruct.MovieHeight=vo_dwidth; } break; #ifdef USE_DVDREAD diff --git a/libvo/vo_x11.c b/libvo/vo_x11.c index 078578258f..0ddcbe8604 100644 --- a/libvo/vo_x11.c +++ b/libvo/vo_x11.c @@ -242,7 +242,7 @@ static uint32_t config( uint32_t width,uint32_t height,uint32_t d_width,uint32_t #endif - + vo_mouse_autohide=1; if (!title) title = strdup("MPlayer X11 (XImage/Shm) render"); diff --git a/libvo/vo_xmga.c b/libvo/vo_xmga.c index d22f16a053..f5ca3f1bfb 100644 --- a/libvo/vo_xmga.c +++ b/libvo/vo_xmga.c @@ -59,6 +59,10 @@ static unsigned int timer=0; static unsigned int timerd=0; #endif +#ifdef HAVE_NEW_GUI +#include "../Gui/interface.h" +#endif + static vo_info_t vo_info = { "X11 (Matrox G200/G4x0/G550 overlay in window using /dev/mga_vid)", @@ -67,7 +71,6 @@ static vo_info_t vo_info = "" }; -//static Display * mDisplay; static XGCValues wGCV; static XImage * myximage; @@ -187,17 +190,9 @@ static int inited=0; static uint32_t config( uint32_t width, uint32_t height, uint32_t d_width, uint32_t d_height, uint32_t fullscreen, char *title, uint32_t format,const vo_tune_info_t* info) { - char * frame_mem; -// uint32_t frame_size; -// int mScreen; - unsigned int fg, bg; char * mTitle=(title == NULL) ? "XMGA render" : title; - char * name=":0.0"; - XSizeHints hint; XVisualInfo vinfo; - XEvent xev; - XGCValues xgcv; unsigned long xswamask; width+=width&1; @@ -241,6 +236,7 @@ static uint32_t config( uint32_t width, uint32_t height, uint32_t d_width, uint3 vo_dwidth=d_width; vo_dheight=d_height; if ( vo_fs ) { vo_old_width=d_width; vo_old_height=d_height; } + vo_mouse_autohide=1; switch ( vo_depthonscreen ) { @@ -263,10 +259,9 @@ static uint32_t config( uint32_t width, uint32_t height, uint32_t d_width, uint3 vo_dwidth=vo_screenwidth; vo_dheight=vo_screenheight; #ifdef X11_FULLSCREEN - aspect(&vo_dwidth,&vo_dheight,A_ZOOM); + aspect(&dwidth,&dheight,A_ZOOM); #endif } - dwidth=vo_dwidth; dheight=vo_dheight; XGetWindowAttributes( mDisplay,DefaultRootWindow( mDisplay ),&attribs ); mDepth=attribs.depth; @@ -304,7 +299,7 @@ static uint32_t config( uint32_t width, uint32_t height, uint32_t d_width, uint3 #endif vo_gc=XCreateGC( mDisplay,vo_window,GCForeground,&wGCV ); #ifdef HAVE_NEW_GUI - } + } else guiGetEvent( guiSetShVideo,0 ); #endif set_window(); diff --git a/libvo/vo_xv.c b/libvo/vo_xv.c index de15f6331c..a73ea940f3 100644 --- a/libvo/vo_xv.c +++ b/libvo/vo_xv.c @@ -41,6 +41,10 @@ LIBVO_EXTERN(xv) #include "../postproc/rgb2rgb.h" +#ifdef HAVE_NEW_GUI +#include "../Gui/interface.h" +#endif + static vo_info_t vo_info = { "X11/Xv", @@ -330,6 +334,8 @@ static uint32_t config(uint32_t width, uint32_t height, uint32_t d_width, uint32 image_height = height; image_width = width; image_format=format; + + vo_mouse_autohide=1; vo_dwidth=d_width; vo_dheight=d_height; vo_fs=flags&1; @@ -446,7 +452,7 @@ static uint32_t config(uint32_t width, uint32_t height, uint32_t d_width, uint32 } #endif #ifdef HAVE_NEW_GUI - } + } else guiGetEvent( guiSetShVideo,0 ); #endif mp_msg(MSGT_VO,MSGL_V, "using Xvideo port %d for hw scaling\n",xv_port ); diff --git a/libvo/x11_common.c b/libvo/x11_common.c index fbf59a6f05..e89aa75077 100644 --- a/libvo/x11_common.c +++ b/libvo/x11_common.c @@ -60,6 +60,7 @@ int mLocalDisplay; /* output window id */ int WinID=-1; +int vo_mouse_autohide = 0; #ifdef HAVE_XINERAMA int xinerama_screen = 0; @@ -90,7 +91,10 @@ void vo_hidecursor ( Display *disp , Window win ) } void vo_showcursor( Display *disp, Window win ) -{ XDefineCursor( disp,win,0 ); } +{ + if ( WinID==0 ) return; + XDefineCursor( disp,win,0 ); +} #ifdef SCAN_VISUALS /* @@ -384,6 +388,9 @@ static Atom vo_MotifHints = None; void vo_x11_decoration( Display * vo_Display,Window w,int d ) { + if ( !WinID ) return; + +#if 0 if(vo_fsmode&1){ XSetWindowAttributes attr; attr.override_redirect = True; @@ -394,6 +401,7 @@ void vo_x11_decoration( Display * vo_Display,Window w,int d ) if(vo_fsmode&8){ XSetTransientForHint (vo_Display, w, RootWindow(vo_Display,mScreen)); } +#endif vo_MotifHints=XInternAtom( vo_Display,"_MOTIF_WM_HINTS",0 ); if ( vo_MotifHints != None ) @@ -464,7 +472,7 @@ int vo_x11_check_events(Display *mydisplay){ // unsigned long vo_KeyTable[512]; - if ( --vo_mouse_counter == 0 ) vo_hidecursor( mydisplay,vo_window ); + if ( ( vo_mouse_autohide )&&( --vo_mouse_counter == 0 ) ) vo_hidecursor( mydisplay,vo_window ); while ( XPending( mydisplay ) ) { @@ -513,11 +521,11 @@ int vo_x11_check_events(Display *mydisplay){ } break; case MotionNotify: - vo_showcursor( mydisplay,vo_window ); vo_mouse_counter=vo_mouse_timer_const; + if ( vo_mouse_autohide ) { vo_showcursor( mydisplay,vo_window ); vo_mouse_counter=vo_mouse_timer_const; } break; #ifdef HAVE_NEW_INPUT case ButtonPress: - vo_showcursor( mydisplay,vo_window ); vo_mouse_counter=vo_mouse_timer_const; + if ( vo_mouse_autohide ) { vo_showcursor( mydisplay,vo_window ); vo_mouse_counter=vo_mouse_timer_const; } // Ignore mouse whell press event if(Event.xbutton.button > 3) { mplayer_put_key(MOUSE_BTN0+Event.xbutton.button-1); @@ -530,7 +538,7 @@ int vo_x11_check_events(Display *mydisplay){ mplayer_put_key((MOUSE_BTN0+Event.xbutton.button-1)|MP_KEY_DOWN); break; case ButtonRelease: - vo_showcursor( mydisplay,vo_window ); vo_mouse_counter=vo_mouse_timer_const; + if ( vo_mouse_autohide ) { vo_showcursor( mydisplay,vo_window ); vo_mouse_counter=vo_mouse_timer_const; } #ifdef HAVE_NEW_GUI // Ignor mouse button 1 - 3 under gui if ( use_gui && ( Event.xbutton.button >= 1 )&&( Event.xbutton.button <= 3 ) ) break; @@ -591,7 +599,7 @@ void vo_x11_fullscreen( void ) vo_x11_sizehint( vo_dx,vo_dy,vo_dwidth,vo_dheight,0 ); XMoveResizeWindow( mDisplay,vo_window,vo_dx,vo_dy,vo_dwidth,vo_dheight ); XMapRaised( mDisplay,vo_window ); - + XRaiseWindow( mDisplay,vo_window ); XFlush( mDisplay ); } diff --git a/libvo/x11_common.h b/libvo/x11_common.h index dac907dec8..dbb231faf7 100644 --- a/libvo/x11_common.h +++ b/libvo/x11_common.h @@ -22,6 +22,7 @@ extern int mLocalDisplay; extern int WinID; extern int vo_mouse_timer_const; +extern int vo_mouse_autohide; int vo_init( void ); int vo_hidecursor ( Display* , Window ); diff --git a/mplayer.c b/mplayer.c index 84dfbc0636..bce4009598 100644 --- a/mplayer.c +++ b/mplayer.c @@ -1319,7 +1319,6 @@ fflush(stdout); #ifdef HAVE_NEW_GUI if ( use_gui ) { - guiGetEvent( guiSetShVideo,(char *)sh_video ); guiGetEvent( guiSetFileName,filename ); guiIntfStruct.StreamType=stream->type; if ( sh_audio ) guiIntfStruct.AudioType=sh_audio->channels; else guiIntfStruct.AudioType=0; -- cgit v1.2.3