1
mirror of https://github.com/mpv-player/mpv synced 2024-12-28 06:03:45 +01:00

some bugfix, x[11|mga|v] ( fullscreen with more files )

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@6014 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
pontscho 2002-05-08 16:41:44 +00:00
parent 8a99b7a507
commit 1bff6e8bc3
6 changed files with 69 additions and 45 deletions

View File

@ -961,30 +961,30 @@ void wsIconify( wsTWindow win )
// ---------------------------------------------------------------------------------------------- // ----------------------------------------------------------------------------------------------
void wsMoveTopWindow( wsTWindow * win ) void wsMoveTopWindow( wsTWindow * win )
{ {
if ( wsWMType == wsWMIceWM ) switch ( wsWMType )
{ {
XUnmapWindow( wsDisplay,win->WindowID ); case wsWMIceWM:
XMapWindow( wsDisplay,win->WindowID ); XUnmapWindow( wsDisplay,win->WindowID );
return; XMapWindow( wsDisplay,win->WindowID );
break;
case wsWMNetWM:
case wsWMKDE:
{
XEvent e;
e.xclient.type=ClientMessage;
e.xclient.message_type=XInternAtom( wsDisplay,"_NET_ACTIVE_WINDOW",False );
e.xclient.display=wsDisplay;
e.xclient.window=win->WindowID;
e.xclient.format=32;
e.xclient.data.l[0]=0;
XSendEvent( wsDisplay,wsRootWin,False,SubstructureRedirectMask,&e );
break;
}
default:
XMapRaised( wsDisplay,win->WindowID );
XRaiseWindow( wsDisplay,win->WindowID );
break;
} }
/*
if ( XInternAtom( wsDisplay,"_NET_ACTIVE_WINDOW",False ) != None )
{
XEvent e;
e.xclient.type=ClientMessage;
e.xclient.message_type=XInternAtom( wsDisplay,"_NET_ACTIVE_WINDOW",False );
e.xclient.display=wsDisplay;
e.xclient.window=win->WindowID;
e.xclient.format=32;
e.xclient.data.l[0]=0;
XSendEvent( wsDisplay,wsRootWin,False,SubstructureRedirectMask,&e );
}
else */
{
XMapRaised( wsDisplay,win->WindowID );
XRaiseWindow( wsDisplay,win->WindowID );
}
} }
// ---------------------------------------------------------------------------------------------- // ----------------------------------------------------------------------------------------------

6
configure vendored
View File

@ -113,6 +113,8 @@ Installation directories:
data files (fonts, skins) [PREFIX/share/mplayer] data files (fonts, skins) [PREFIX/share/mplayer]
--confdir=DIR use this prefix for installing configuration files --confdir=DIR use this prefix for installing configuration files
[same as datadir] [same as datadir]
--libdir=DIR use this prefix for object code libraries
[PREFIX/lib]
Optional features: Optional features:
--disable-mencoder disable mencoder [autodetect] --disable-mencoder disable mencoder [autodetect]
@ -1066,7 +1068,9 @@ for ac_option do
--confdir=*) --confdir=*)
_confdir=`echo $ac_option | cut -d '=' -f 2` _confdir=`echo $ac_option | cut -d '=' -f 2`
;; ;;
--libdir=*)
_libdir=`echo $ac_option | cut -d '=' -f 2`
;;
*) *)
echo "Unknown parameter: $ac_option" echo "Unknown parameter: $ac_option"

View File

@ -45,6 +45,11 @@ LIBVO_EXTERN( x11 )
#include "../mp_msg.h" #include "../mp_msg.h"
#ifdef HAVE_NEW_GUI
#include "../Gui/interface.h"
#include "../mplayer.h"
#endif
static vo_info_t vo_info = static vo_info_t vo_info =
{ {
"X11 ( XImage/Shm )", "X11 ( XImage/Shm )",
@ -91,6 +96,9 @@ static int srcW=-1;
static int srcH=-1; static int srcH=-1;
static int aspect; // 1<<16 based fixed point aspect, so that the aspect stays correct during resizing static int aspect; // 1<<16 based fixed point aspect, so that the aspect stays correct during resizing
static int old_vo_dwidth=-1;
static int old_vo_dheight=-1;
static void check_events(){ static void check_events(){
int ret = vo_x11_check_events(mDisplay); int ret = vo_x11_check_events(mDisplay);
@ -243,6 +251,9 @@ static uint32_t config( uint32_t width,uint32_t height,uint32_t d_width,uint32_t
vo_mouse_autohide=1; vo_mouse_autohide=1;
old_vo_dwidth=-1;
old_vo_dheight=-1;
if (!title) if (!title)
title = strdup("MPlayer X11 (XImage/Shm) render"); title = strdup("MPlayer X11 (XImage/Shm) render");
@ -260,7 +271,7 @@ static uint32_t config( uint32_t width,uint32_t height,uint32_t d_width,uint32_t
//printf( "w: %d h: %d\n\n",vo_dwidth,vo_dheight ); //printf( "w: %d h: %d\n\n",vo_dwidth,vo_dheight );
XGetWindowAttributes( mDisplay,DefaultRootWindow( mDisplay ),&attribs ); XGetWindowAttributes( mDisplay,mRootWin,&attribs );
depth=attribs.depth; depth=attribs.depth;
if ( depth != 15 && depth != 16 && depth != 24 && depth != 32 ) depth=24; if ( depth != 15 && depth != 16 && depth != 24 && depth != 32 ) depth=24;
@ -275,18 +286,19 @@ static uint32_t config( uint32_t width,uint32_t height,uint32_t d_width,uint32_t
aspect= ((1<<16)*d_width + d_height/2)/d_height; aspect= ((1<<16)*d_width + d_height/2)/d_height;
#ifdef HAVE_NEW_GUI #ifdef HAVE_NEW_GUI
if ( vo_window == None ) if(use_gui) guiGetEvent( guiSetShVideo,0 ); // the GUI will set up / resize the window
else
#endif #endif
{ {
hint.x=0; hint.x=0;
hint.y=0; hint.y=0;
if(zoomFlag){ // if(zoomFlag){
hint.width=d_width; // hint.width=d_width;
hint.height=d_height; // hint.height=d_height;
}else{ // }else{
hint.width=width; // hint.width=width;
hint.height=height; // hint.height=height;
} // }
#ifdef HAVE_XF86VM #ifdef HAVE_XF86VM
if ( vm ) if ( vm )
@ -468,8 +480,6 @@ static uint32_t draw_slice( uint8_t *src[],int stride[],int w,int h,int x,int y
{ {
uint8_t *dst[3]; uint8_t *dst[3];
int dstStride[3]; int dstStride[3];
static int old_vo_dwidth=-1;
static int old_vo_dheight=-1;
if((old_vo_dwidth != vo_dwidth || old_vo_dheight != vo_dheight) /*&& y==0*/ && zoomFlag) if((old_vo_dwidth != vo_dwidth || old_vo_dheight != vo_dheight) /*&& y==0*/ && zoomFlag)
{ {
@ -602,6 +612,7 @@ uninit(void)
vo_vm_close(mDisplay); vo_vm_close(mDisplay);
#endif #endif
zoomFlag=0;
vo_x11_uninit(mDisplay, vo_window); vo_x11_uninit(mDisplay, vo_window);
freeSwsContext(swsContext); freeSwsContext(swsContext);
@ -616,7 +627,7 @@ static uint32_t preinit(const char *arg)
} }
#ifdef HAVE_NEW_GUI #ifdef HAVE_NEW_GUI
if ( vo_window == None ) if ( !use_gui )
#endif #endif
if( !vo_init() ) return -1; // Can't open X11 if( !vo_init() ) return -1; // Can't open X11

View File

@ -37,6 +37,7 @@
#ifdef HAVE_NEW_GUI #ifdef HAVE_NEW_GUI
#include "../Gui/interface.h" #include "../Gui/interface.h"
#include "../mplayer.h"
#endif #endif
/* /*
@ -355,6 +356,12 @@ int vo_init( void )
return 1; return 1;
} }
void vo_uninit( void )
{
printf("vo: uninit ...\n" );
if( !vo_depthonscreen ) return;
XCloseDisplay( mDisplay );
}
#include "../linux/keycodes.h" #include "../linux/keycodes.h"
#include "wskeys.h" #include "wskeys.h"
@ -507,14 +514,14 @@ int vo_x11_uninit(Display *display, Window window)
#ifdef HAVE_NEW_GUI #ifdef HAVE_NEW_GUI
/* destroy window only if it's not controlled by GUI */ /* destroy window only if it's not controlled by GUI */
if (vo_window == None) if ( !use_gui )
#endif #endif
{ {
/* and -wid is set */ /* and -wid is set */
if (!(WinID > 0)) if (!(WinID > 0))
XDestroyWindow(display, window); XDestroyWindow(display, window);
XCloseDisplay(display);
vo_depthonscreen = 0; vo_depthonscreen = 0;
vo_fs=0;
} }
return(1); return(1);
} }
@ -721,7 +728,7 @@ void vo_x11_fullscreen( void )
// vo_x11_decoration( mDisplay,vo_window,(vo_fs) ? 1 : 0 ); // vo_x11_decoration( mDisplay,vo_window,(vo_fs) ? 1 : 0 );
break; break;
case vo_wm_Unknown: case vo_wm_Unknown:
vo_x11_decoration( mDisplay,vo_window,(vo_fs) ? 1 : 0 ); // vo_x11_decoration( mDisplay,vo_window,(vo_fs) ? 1 : 0 );
XUnmapWindow( mDisplay,vo_window ); XUnmapWindow( mDisplay,vo_window );
break; break;
case vo_wm_IceWM: case vo_wm_IceWM:

View File

@ -25,14 +25,15 @@ extern int WinID;
extern int vo_mouse_timer_const; extern int vo_mouse_timer_const;
extern int vo_mouse_autohide; extern int vo_mouse_autohide;
int vo_init( void ); extern int vo_init( void );
int vo_hidecursor ( Display* , Window ); extern void vo_uninit( void );
extern int vo_hidecursor ( Display* , Window );
extern void vo_showcursor( Display *disp, Window win ); extern void vo_showcursor( Display *disp, Window win );
void vo_x11_decoration( Display * vo_Display,Window w,int d ); extern void vo_x11_decoration( Display * vo_Display,Window w,int d );
void vo_x11_classhint( Display * display,Window window,char *name ); extern void vo_x11_classhint( Display * display,Window window,char *name );
void vo_x11_sizehint( int x, int y, int width, int height, int max ); extern void vo_x11_sizehint( int x, int y, int width, int height, int max );
int vo_x11_check_events(Display *mydisplay); extern int vo_x11_check_events(Display *mydisplay);
void vo_x11_fullscreen( void ); extern void vo_x11_fullscreen( void );
#endif #endif
extern Window vo_window; extern Window vo_window;

View File

@ -354,6 +354,7 @@ void uninit_player(unsigned int mask){
void exit_player(char* how){ void exit_player(char* how){
uninit_player(INITED_ALL); uninit_player(INITED_ALL);
vo_uninit();
current_module="exit_player"; current_module="exit_player";