mirror of https://github.com/mpv-player/mpv
small changes in libvo's X11 support
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@4994 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
parent
73719375cd
commit
62f6b6fada
|
@ -584,6 +584,8 @@ static uint32_t control(uint32_t request, void *data, ...)
|
|||
case VOCTRL_GUISUPPORT:
|
||||
return VO_TRUE;
|
||||
case VOCTRL_FULLSCREEN:
|
||||
vo_x11_fullscreen();
|
||||
/*
|
||||
if ((vo_fs_oldwidth == -1) && (vo_fs_oldheight == -1))
|
||||
{
|
||||
int foo;
|
||||
|
@ -605,7 +607,7 @@ static uint32_t control(uint32_t request, void *data, ...)
|
|||
mp_msg(MSGT_VO,MSGL_V,"X11 Fullscreen: saved old place: %dx%d-%dx%d\n",
|
||||
vo_fs_oldx, vo_fs_oldy, vo_fs_oldwidth, vo_fs_oldheight);
|
||||
|
||||
/* resize */
|
||||
// resize
|
||||
vo_dwidth = vo_screenwidth;
|
||||
vo_dheight = vo_screenheight;
|
||||
vo_x11_decoration( mDisplay,vo_window,0 );
|
||||
|
@ -621,16 +623,17 @@ static uint32_t control(uint32_t request, void *data, ...)
|
|||
|
||||
|
||||
#ifdef LOCAL_LOOKUP
|
||||
/* restore */
|
||||
// restore
|
||||
vo_dwidth = vo_fs_oldwidth;
|
||||
vo_dheight = vo_fs_oldheight;
|
||||
#endif
|
||||
|
||||
/* clean */
|
||||
// clean
|
||||
vo_fs_oldwidth = -1;
|
||||
vo_fs_oldheight = -1;
|
||||
XSync(mDisplay, False);
|
||||
}
|
||||
*/
|
||||
return VO_TRUE;
|
||||
}
|
||||
return VO_NOTIMPL;
|
||||
|
|
|
@ -61,7 +61,7 @@ static unsigned int timerd=0;
|
|||
|
||||
static vo_info_t vo_info =
|
||||
{
|
||||
"X11 (Matrox G200/G400 overlay in window using /dev/mga_vid)",
|
||||
"X11 (Matrox G200/G4x0/G550 overlay in window using /dev/mga_vid)",
|
||||
"xmga",
|
||||
"Zoltan Ponekker <pontscho@makacs.poliod.hu>",
|
||||
""
|
||||
|
@ -90,10 +90,6 @@ static Window mRoot;
|
|||
static uint32_t drwX,drwY,drwWidth,drwHeight,drwBorderWidth,drwDepth;
|
||||
static uint32_t drwcX,drwcY,dwidth,dheight;
|
||||
|
||||
//#ifdef HAVE_NEW_GUI
|
||||
static uint32_t mdwidth,mdheight;
|
||||
//#endif
|
||||
|
||||
static XSetWindowAttributes xWAttribs;
|
||||
|
||||
#define VO_XMGA
|
||||
|
@ -111,14 +107,8 @@ static void mDrawColorKey( void )
|
|||
|
||||
static void set_window(){
|
||||
|
||||
dwidth=mdwidth; dheight=mdheight;
|
||||
if ( vo_fs )
|
||||
{
|
||||
dwidth=vo_screenwidth;
|
||||
dheight=vo_screenwidth * mdheight / mdwidth;
|
||||
}
|
||||
|
||||
XGetGeometry( mDisplay,vo_window,&mRoot,&drwX,&drwY,&drwWidth,&drwHeight,&drwBorderWidth,&drwDepth );
|
||||
fprintf( stderr,"[xmga] x: %d y: %d w: %d h: %d\n",drwX,drwY,drwWidth,drwHeight );
|
||||
drwX=0; drwY=0; // drwWidth=wndWidth; drwHeight=wndHeight;
|
||||
XTranslateCoordinates( mDisplay,vo_window,mRoot,0,0,&drwcX,&drwcY,&mRoot );
|
||||
fprintf( stderr,"[xmga] dcx: %d dcy: %d dx: %d dy: %d dw: %d dh: %d\n",drwcX,drwcY,drwX,drwY,drwWidth,drwHeight );
|
||||
|
@ -273,7 +263,6 @@ static uint32_t config( uint32_t width, uint32_t height, uint32_t d_width, uint3
|
|||
|
||||
aspect(&d_width,&d_height,A_NOZOOM);
|
||||
#ifdef HAVE_NEW_GUI
|
||||
mdwidth=width; mdheight=height;
|
||||
if ( vo_window == None )
|
||||
{
|
||||
#endif
|
||||
|
@ -311,15 +300,10 @@ static uint32_t config( uint32_t width, uint32_t height, uint32_t d_width, uint3
|
|||
vinfo.visual,xswamask,&xWAttribs );
|
||||
vo_x11_classhint( mDisplay,vo_window,"xmga" );
|
||||
vo_hidecursor(mDisplay,vo_window);
|
||||
vo_x11_sizehint( wndX,wndY,wndWidth,wndHeight );
|
||||
|
||||
if ( vo_fs ) vo_x11_decoration( mDisplay,vo_window,0 );
|
||||
|
||||
XGetNormalHints( mDisplay,vo_window,&hint );
|
||||
hint.x=wndX; hint.y=wndY;
|
||||
hint.width=wndWidth; hint.height=wndHeight;
|
||||
hint.base_width=wndWidth; hint.base_height=wndHeight;
|
||||
hint.flags=USPosition | USSize;
|
||||
XSetNormalHints( mDisplay,vo_window,&hint );
|
||||
XStoreName( mDisplay,vo_window,mTitle );
|
||||
XMapWindow( mDisplay,vo_window );
|
||||
|
||||
|
|
|
@ -94,10 +94,6 @@ static Window mRoot;
|
|||
static uint32_t drwX,drwY,drwWidth,drwHeight,drwBorderWidth,drwDepth;
|
||||
static uint32_t drwcX,drwcY,dwidth,dheight;
|
||||
|
||||
#ifdef HAVE_NEW_GUI
|
||||
static uint32_t mdwidth,mdheight;
|
||||
#endif
|
||||
|
||||
static void (*draw_alpha_fnc)(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride);
|
||||
|
||||
static void draw_alpha_yv12(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride){
|
||||
|
@ -337,11 +333,6 @@ static uint32_t config(uint32_t width, uint32_t height, uint32_t d_width, uint32
|
|||
image_width = width;
|
||||
image_format=format;
|
||||
|
||||
#ifdef HAVE_NEW_GUI
|
||||
mdwidth=width;
|
||||
mdheight=height;
|
||||
#endif
|
||||
|
||||
vo_fs=flags&1;
|
||||
if ( vo_fs )
|
||||
{ vo_old_width=d_width; vo_old_height=d_height; }
|
||||
|
@ -501,17 +492,6 @@ static uint32_t config(uint32_t width, uint32_t height, uint32_t d_width, uint32
|
|||
|
||||
current_buf=0;
|
||||
|
||||
#ifdef HAVE_NEW_GUI
|
||||
if ( vo_window != None )
|
||||
{
|
||||
dwidth=mdwidth; dheight=mdheight;
|
||||
if ( vo_fs )
|
||||
{
|
||||
dwidth=vo_screenwidth;
|
||||
dheight=vo_screenwidth * mdheight / mdwidth;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
set_gamma_correction();
|
||||
|
||||
XGetGeometry( mDisplay,vo_window,&mRoot,&drwX,&drwY,&drwWidth,&drwHeight,&drwBorderWidth,&drwDepth );
|
||||
|
@ -583,15 +563,6 @@ static void check_events(void)
|
|||
XTranslateCoordinates( mDisplay,vo_window,mRoot,0,0,&drwcX,&drwcY,&mRoot );
|
||||
printf( "[xv] dcx: %d dcy: %d dx: %d dy: %d dw: %d dh: %d\n",drwcX,drwcY,drwX,drwY,drwWidth,drwHeight );
|
||||
|
||||
#ifdef HAVE_NEW_GUI
|
||||
dwidth=mdwidth; dheight=mdheight;
|
||||
if ( vo_fs )
|
||||
{
|
||||
dwidth=vo_screenwidth;
|
||||
dheight=vo_screenwidth * mdheight / mdwidth;
|
||||
}
|
||||
#endif
|
||||
|
||||
aspect(&dwidth,&dheight,A_NOZOOM);
|
||||
if ( vo_fs )
|
||||
{
|
||||
|
|
|
@ -397,9 +397,16 @@ void vo_x11_decoration( Display * vo_Display,Window w,int d )
|
|||
{
|
||||
memset( &vo_MotifWmHints,0,sizeof( MotifWmHints ) );
|
||||
vo_MotifWmHints.flags=MWM_HINTS_FUNCTIONS | MWM_HINTS_DECORATIONS;
|
||||
vo_MotifWmHints.functions=MWM_FUNC_MOVE | MWM_FUNC_CLOSE | MWM_FUNC_MINIMIZE | MWM_FUNC_MAXIMIZE;
|
||||
if ( d ) d=MWM_DECOR_ALL;
|
||||
if ( d )
|
||||
{
|
||||
vo_MotifWmHints.functions=MWM_FUNC_MOVE | MWM_FUNC_CLOSE | MWM_FUNC_MINIMIZE | MWM_FUNC_MAXIMIZE;
|
||||
d=MWM_DECOR_ALL;
|
||||
}
|
||||
#if 0
|
||||
vo_MotifWmHints.decorations=d|((vo_fsmode&2)?0:MWM_DECOR_MENU);
|
||||
#else
|
||||
vo_MotifWmHints.decorations=d|((vo_fsmode&2)?MWM_DECOR_MENU:0);
|
||||
#endif
|
||||
XChangeProperty( vo_Display,w,vo_MotifHints,vo_MotifHints,32,
|
||||
PropModeReplace,(unsigned char *)&vo_MotifWmHints,(vo_fsmode&4)?4:5 );
|
||||
}
|
||||
|
@ -412,8 +419,9 @@ void vo_x11_classhint( Display * display,Window window,char *name ){
|
|||
XSetClassHint(display,window,&wmClass);
|
||||
}
|
||||
|
||||
Window vo_window = None;
|
||||
GC vo_gc;
|
||||
Window vo_window = None;
|
||||
GC vo_gc;
|
||||
XSizeHints vo_hint;
|
||||
|
||||
#ifdef HAVE_NEW_GUI
|
||||
void vo_setwindow( Window w,GC g ) {
|
||||
|
@ -509,6 +517,14 @@ int vo_x11_check_events(Display *mydisplay){
|
|||
return ret;
|
||||
}
|
||||
|
||||
void vo_x11_sizehint( int x, int y, int width, int height )
|
||||
{
|
||||
vo_hint.flags=PPosition | PSize | PWinGravity;
|
||||
vo_hint.x=x; vo_hint.y=y; vo_hint.width=width; vo_hint.height=height;
|
||||
vo_hint.win_gravity=StaticGravity;
|
||||
XSetWMNormalHints( mDisplay,vo_window,&vo_hint );
|
||||
}
|
||||
|
||||
void vo_x11_fullscreen( void )
|
||||
{
|
||||
XUnmapWindow( mDisplay,vo_window );
|
||||
|
@ -516,6 +532,11 @@ void vo_x11_fullscreen( void )
|
|||
{
|
||||
vo_fs=VO_TRUE;
|
||||
vo_old_x=vo_dx; vo_old_y=vo_dy; vo_old_width=vo_dwidth; vo_old_height=vo_dheight;
|
||||
{
|
||||
Window root; int foo, foo2;
|
||||
// XGetGeometry( mDisplay,vo_window,&root,&vo_old_x,&vo_old_y,&vo_old_width,vo_old_height,&foo,&foo2 );
|
||||
// XTranslateCoordinates( mDisplay,vo_window,root,0,0,&vo_old_x,&vo_old_y,(Window *)&foo);
|
||||
}
|
||||
vo_dx=0; vo_dy=0; vo_dwidth=vo_screenwidth; vo_dheight=vo_screenheight;
|
||||
vo_x11_decoration( mDisplay,vo_window,0 );
|
||||
}
|
||||
|
@ -525,9 +546,10 @@ void vo_x11_fullscreen( void )
|
|||
vo_dx=vo_old_x; vo_dy=vo_old_y; vo_dwidth=vo_old_width; vo_dheight=vo_old_height;
|
||||
vo_x11_decoration( mDisplay,vo_window,1 );
|
||||
}
|
||||
XMapWindow( mDisplay,vo_window );
|
||||
vo_x11_sizehint( vo_dx,vo_dy,vo_dwidth,vo_dheight );
|
||||
XMoveResizeWindow( mDisplay,vo_window,vo_dx,vo_dy,vo_dwidth,vo_dheight );
|
||||
return;
|
||||
XMapWindow( mDisplay,vo_window );
|
||||
XSync( mDisplay,False );
|
||||
}
|
||||
|
||||
void saver_on(Display *mDisplay) {
|
||||
|
|
|
@ -4,6 +4,9 @@
|
|||
|
||||
#ifdef X11_FULLSCREEN
|
||||
|
||||
#include <X11/Xlib.h>
|
||||
#include <X11/Xutil.h>
|
||||
|
||||
extern int vo_depthonscreen;
|
||||
extern int vo_screenwidth;
|
||||
extern int vo_screenheight;
|
||||
|
@ -22,12 +25,14 @@ int vo_init( void );
|
|||
int vo_hidecursor ( Display* , Window );
|
||||
void vo_x11_decoration( Display * vo_Display,Window w,int d );
|
||||
void vo_x11_classhint( Display * display,Window window,char *name );
|
||||
void vo_x11_sizehint( int x, int y, int width, int height );
|
||||
int vo_x11_check_events(Display *mydisplay);
|
||||
void vo_x11_fullscreen( void );
|
||||
#endif
|
||||
|
||||
extern Window vo_window;
|
||||
extern GC vo_gc;
|
||||
extern Window vo_window;
|
||||
extern GC vo_gc;
|
||||
extern XSizeHints vo_hint;
|
||||
|
||||
#ifdef HAVE_NEW_GUI
|
||||
extern void vo_setwindow( Window w,GC g );
|
||||
|
|
Loading…
Reference in New Issue