1
mirror of https://github.com/mpv-player/mpv synced 2024-11-14 22:48:35 +01:00

small changes

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@4796 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
pontscho 2002-02-21 21:11:01 +00:00
parent d424101631
commit 57e3534b04
4 changed files with 85 additions and 143 deletions

View File

@ -68,8 +68,6 @@ static vo_info_t vo_info =
};
//static Display * mDisplay;
static Window mWindow;
static GC mGC;
static XGCValues wGCV;
static XImage * myximage;
@ -102,11 +100,10 @@ static XSetWindowAttributes xWAttribs;
static void mDrawColorKey( void )
{
XSetBackground( mDisplay,mGC,0 );
// XFillRectangle( mDisplay,mWindow,mGC,0,0,drwWidth,drwHeight );
XClearWindow( mDisplay,mWindow );
XSetForeground( mDisplay,mGC,fgColor );
XFillRectangle( mDisplay,mWindow,mGC,drwX,drwY,drwWidth,(mFullscreen?drwHeight - 1:drwHeight) );
XSetBackground( mDisplay,vo_gc,0 );
XClearWindow( mDisplay,vo_window );
XSetForeground( mDisplay,vo_gc,fgColor );
XFillRectangle( mDisplay,vo_window,vo_gc,drwX,drwY,drwWidth,(mFullscreen?drwHeight - 1:drwHeight) );
XFlush( mDisplay );
}
@ -126,9 +123,9 @@ static void set_window(){
}
#endif
XGetGeometry( mDisplay,mWindow,&mRoot,&drwX,&drwY,&drwWidth,&drwHeight,&drwBorderWidth,&drwDepth );
XGetGeometry( mDisplay,vo_window,&mRoot,&drwX,&drwY,&drwWidth,&drwHeight,&drwBorderWidth,&drwDepth );
drwX=0; drwY=0; // drwWidth=wndWidth; drwHeight=wndHeight;
XTranslateCoordinates( mDisplay,mWindow,mRoot,0,0,&drwcX,&drwcY,&mRoot );
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 );
aspect(&dwidth,&dheight,A_NOZOOM);
@ -265,10 +262,6 @@ static uint32_t config( uint32_t width, uint32_t height, uint32_t d_width, uint3
wndX=0; wndY=0;
wndWidth=d_width; wndHeight=d_height;
#ifdef HAVE_NEW_GUI
// mdwidth=d_width; mdheight=d_height;
mdwidth=width; mdheight=height;
#endif
mFullscreen=fullscreen&1;
switch ( vo_depthonscreen )
@ -282,6 +275,7 @@ 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
@ -306,49 +300,37 @@ static uint32_t config( uint32_t width, uint32_t height, uint32_t d_width, uint3
xswamask=CWBackPixel | CWBorderPixel | CWColormap | CWEventMask;
if ( WinID>=0 ){
mWindow = WinID ? ((Window)WinID) : RootWindow(mDisplay,mScreen);
XUnmapWindow( mDisplay,mWindow );
XChangeWindowAttributes( mDisplay,mWindow,xswamask,&xWAttribs);
vo_window = WinID ? ((Window)WinID) : RootWindow(mDisplay,mScreen);
XUnmapWindow( mDisplay,vo_window );
XChangeWindowAttributes( mDisplay,vo_window,xswamask,&xWAttribs);
} else
mWindow=XCreateWindow( mDisplay,RootWindow( mDisplay,mScreen ),
vo_window=XCreateWindow( mDisplay,RootWindow( mDisplay,mScreen ),
wndX,wndY,
wndWidth,wndHeight,
xWAttribs.border_pixel,
mDepth,
InputOutput,
vinfo.visual,xswamask,&xWAttribs );
vo_x11_classhint( mDisplay,mWindow,"xmga" );
vo_hidecursor(mDisplay,mWindow);
vo_x11_classhint( mDisplay,vo_window,"xmga" );
vo_hidecursor(mDisplay,vo_window);
if ( mFullscreen ) vo_x11_decoration( mDisplay,mWindow,0 );
if ( mFullscreen ) vo_x11_decoration( mDisplay,vo_window,0 );
XGetNormalHints( mDisplay,mWindow,&hint );
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,mWindow,&hint );
XStoreName( mDisplay,mWindow,mTitle );
XMapWindow( mDisplay,mWindow );
XSetNormalHints( mDisplay,vo_window,&hint );
XStoreName( mDisplay,vo_window,mTitle );
XMapWindow( mDisplay,vo_window );
#ifdef HAVE_XINERAMA
vo_x11_xinerama_move(mDisplay,mWindow);
vo_x11_xinerama_move(mDisplay,vo_window);
#endif
mGC=XCreateGC( mDisplay,mWindow,GCForeground,&wGCV );
vo_gc=XCreateGC( mDisplay,vo_window,GCForeground,&wGCV );
#ifdef HAVE_NEW_GUI
}
else
{
mWindow=vo_window;
// fprintf( stderr,"[xmga] width: %d height: %d d_width: %d d_height: %d\n",width,height,d_width,d_height );
// if ( vo_screenwidth != d_width )
// {
// XMoveWindow( mDisplay,mWindow,( vo_screenwidth - d_width ) / 2,( vo_screenheight - d_height ) / 2 );
// XResizeWindow( mDisplay,mWindow,d_width,d_height );
// }
// else mFullscreen=1;
mGC=vo_gc; //XCreateGC( mDisplay,mWindow,GCForeground,&wGCV );
}
#endif
set_window();
@ -365,13 +347,8 @@ static uint32_t config( uint32_t width, uint32_t height, uint32_t d_width, uint3
set_window();
#ifdef HAVE_NEW_GUI
if ( vo_window == None )
#endif
{
XFlush( mDisplay );
XSync( mDisplay,False );
}
XFlush( mDisplay );
XSync( mDisplay,False );
saver_off(mDisplay);
@ -390,7 +367,7 @@ uninit(void)
if ( vo_window == None )
#endif
{
XDestroyWindow( mDisplay,mWindow );
XDestroyWindow( mDisplay,vo_window );
}
mga_uninit();
printf("vo: uninit!\n");

View File

@ -57,9 +57,6 @@ int XShmGetEventBase(Display*);
static unsigned char *ImageData;
/* X11 related variables */
//static Display *mydisplay;
static Window mywindow;
static GC mygc;
static XImage *myximage;
static int depth, bpp, mode;
static XWindowAttributes attribs;
@ -405,50 +402,44 @@ static uint32_t config(uint32_t width, uint32_t height, uint32_t d_width, uint32
xswamask = CWBackPixel | CWBorderPixel;
if ( WinID>=0 ){
mywindow = WinID ? ((Window)WinID) : RootWindow(mDisplay,mScreen);
XUnmapWindow( mDisplay,mywindow );
XChangeWindowAttributes( mDisplay,mywindow,xswamask,&xswa );
vo_window = WinID ? ((Window)WinID) : RootWindow(mDisplay,mScreen);
XUnmapWindow( mDisplay,vo_window );
XChangeWindowAttributes( mDisplay,vo_window,xswamask,&xswa );
} else
mywindow = XCreateWindow(mDisplay, RootWindow(mDisplay,mScreen),
vo_window = XCreateWindow(mDisplay, RootWindow(mDisplay,mScreen),
hint.x, hint.y, hint.width, hint.height,
0, depth,CopyFromParent,vinfo.visual,xswamask,&xswa);
vo_x11_classhint( mDisplay,mywindow,"xv" );
vo_hidecursor(mDisplay,mywindow);
vo_x11_classhint( mDisplay,vo_window,"xv" );
vo_hidecursor(mDisplay,vo_window);
XSelectInput(mDisplay, mywindow, StructureNotifyMask | KeyPressMask
XSelectInput(mDisplay, vo_window, StructureNotifyMask | KeyPressMask
#ifdef HAVE_NEW_INPUT
| ButtonPressMask | ButtonReleaseMask
#endif
);
XSetStandardProperties(mDisplay, mywindow, hello, hello, None, NULL, 0, &hint);
if ( mFullscreen ) vo_x11_decoration( mDisplay,mywindow,0 );
XMapWindow(mDisplay, mywindow);
XSetStandardProperties(mDisplay, vo_window, hello, hello, None, NULL, 0, &hint);
if ( mFullscreen ) vo_x11_decoration( mDisplay,vo_window,0 );
XMapWindow(mDisplay, vo_window);
#ifdef HAVE_XINERAMA
vo_x11_xinerama_move(mDisplay,mywindow);
vo_x11_xinerama_move(mDisplay,vo_window);
#endif
mygc = XCreateGC(mDisplay, mywindow, 0L, &xgcv);
vo_gc = XCreateGC(mDisplay, vo_window, 0L, &xgcv);
XFlush(mDisplay);
XSync(mDisplay, False);
#ifdef HAVE_XF86VM
if ( vm )
{
/* Grab the mouse pointer in our window */
XGrabPointer(mDisplay, mywindow, True, 0,
XGrabPointer(mDisplay, vo_window, True, 0,
GrabModeAsync, GrabModeAsync,
mywindow, None, CurrentTime);
XSetInputFocus(mDisplay, mywindow, RevertToNone, CurrentTime);
vo_window, None, CurrentTime);
XSetInputFocus(mDisplay, vo_window, RevertToNone, CurrentTime);
}
#endif
#ifdef HAVE_NEW_GUI
}
else
{
mywindow=vo_window;
mygc=vo_gc;
}
#endif
xv_port = 0;
@ -519,9 +510,9 @@ static uint32_t config(uint32_t width, uint32_t height, uint32_t d_width, uint32
#endif
set_gamma_correction();
XGetGeometry( mDisplay,mywindow,&mRoot,&drwX,&drwY,&drwWidth,&drwHeight,&drwBorderWidth,&drwDepth );
XGetGeometry( mDisplay,vo_window,&mRoot,&drwX,&drwY,&drwWidth,&drwHeight,&drwBorderWidth,&drwDepth );
drwX=0; drwY=0;
XTranslateCoordinates( mDisplay,mywindow,mRoot,0,0,&drwcX,&drwcY,&mRoot );
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 );
aspect(&dwidth,&dheight,A_NOZOOM);
@ -583,9 +574,9 @@ static void check_events(void)
int e=vo_x11_check_events(mDisplay);
if(e&VO_EVENT_RESIZE)
{
XGetGeometry( mDisplay,mywindow,&mRoot,&drwX,&drwY,&drwWidth,&drwHeight,&drwBorderWidth,&drwDepth );
XGetGeometry( mDisplay,vo_window,&mRoot,&drwX,&drwY,&drwWidth,&drwHeight,&drwBorderWidth,&drwDepth );
drwX=0; drwY=0;
XTranslateCoordinates( mDisplay,mywindow,mRoot,0,0,&drwcX,&drwcY,&mRoot );
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
@ -617,8 +608,8 @@ static void check_events(void)
}
if ( e & VO_EVENT_EXPOSE )
{
XvShmPutImage(mDisplay, xv_port, mywindow, mygc, xvimage[current_buf], 0, 0, image_width, image_height, drwX, drwY, 1, 1, False);
XvShmPutImage(mDisplay, xv_port, mywindow, mygc, xvimage[current_buf], 0, 0, image_width, image_height, drwX,drwY,drwWidth,(mFullscreen?drwHeight - 1:drwHeight), False);
XvShmPutImage(mDisplay, xv_port, vo_window, vo_gc, xvimage[current_buf], 0, 0, image_width, image_height, drwX, drwY, 1, 1, False);
XvShmPutImage(mDisplay, xv_port, vo_window, vo_gc, xvimage[current_buf], 0, 0, image_width, image_height, drwX,drwY,drwWidth,(mFullscreen?drwHeight - 1:drwHeight), False);
}
}
@ -627,7 +618,7 @@ static void draw_osd(void)
static void flip_page(void)
{
XvShmPutImage(mDisplay, xv_port, mywindow, mygc, xvimage[current_buf],
XvShmPutImage(mDisplay, xv_port, vo_window, vo_gc, xvimage[current_buf],
0, 0, image_width, image_height,
drwX,drwY,drwWidth,(mFullscreen?drwHeight - 1:drwHeight),
False);
@ -778,7 +769,7 @@ static void uninit(void)
if ( vo_window == None )
#endif
{
XDestroyWindow( mDisplay,mywindow );
XDestroyWindow( mDisplay,vo_window );
}
for( i=0;i<num_buffers;i++ ) deallocate_xvimage( i );
#ifdef HAVE_XF86VM

View File

@ -392,19 +392,12 @@ void vo_x11_classhint( Display * display,Window window,char *name ){
XSetClassHint(display,window,&wmClass);
}
#ifdef HAVE_NEW_GUI
Window vo_window = None;
GC vo_gc;
int vo_xeventhandling = 1;
int vo_resize = 0;
int vo_expose = 0;
Window vo_window = None;
GC vo_gc;
#ifdef HAVE_NEW_GUI
void vo_setwindow( Window w,GC g ) {
vo_window=w; vo_gc=g;
vo_xeventhandling=0;
}
void vo_setwindowsize( int w,int h ) {
vo_dwidth=w; vo_dheight=h;
}
#endif
@ -433,57 +426,41 @@ int vo_x11_check_events(Display *mydisplay){
static XComposeStatus stat;
// unsigned long vo_KeyTable[512];
#ifdef HAVE_NEW_GUI
if ( vo_xeventhandling )
{
#endif
while ( XPending( mydisplay ) )
{
XNextEvent( mydisplay,&Event );
switch( Event.type )
{
case Expose:
ret|=VO_EVENT_EXPOSE;
break;
case ConfigureNotify:
vo_dwidth=Event.xconfigure.width;
vo_dheight=Event.xconfigure.height;
ret|=VO_EVENT_RESIZE;
break;
case KeyPress:
XLookupString( &Event.xkey,buf,sizeof(buf),&keySym,&stat );
vo_x11_putkey( ( (keySym&0xff00) != 0?( (keySym&0x00ff) + 256 ):( keySym ) ) );
ret|=VO_EVENT_KEYPRESS;
break;
#ifdef HAVE_NEW_INPUT
case ButtonPress:
// Ignore mouse whell press event
if(Event.xbutton.button == 4 || Event.xbutton.button == 5)
break;
mplayer_put_key((MOUSE_BTN0+Event.xbutton.button-1)|MP_KEY_DOWN);
break;
case ButtonRelease:
mplayer_put_key(MOUSE_BTN0+Event.xbutton.button-1);
break;
#endif
}
}
#ifdef HAVE_NEW_GUI
}
else
while ( XPending( mydisplay ) )
{
XNextEvent( mydisplay,&Event );
// #ifdef HAVE_NEW_GUI
// if ( use_gui ) gEvent( 0,(char*)&Event );
// #endif
if ( vo_window == Event.xany.window )
switch( Event.type )
{
if ( vo_resize )
{
vo_resize=0;
ret|=VO_EVENT_RESIZE;
}
if ( vo_expose )
{
vo_expose=0;
ret|=VO_EVENT_EXPOSE;
}
}
case Expose:
ret|=VO_EVENT_EXPOSE;
break;
case ConfigureNotify:
vo_dwidth=Event.xconfigure.width;
vo_dheight=Event.xconfigure.height;
ret|=VO_EVENT_RESIZE;
break;
case KeyPress:
XLookupString( &Event.xkey,buf,sizeof(buf),&keySym,&stat );
vo_x11_putkey( ( (keySym&0xff00) != 0?( (keySym&0x00ff) + 256 ):( keySym ) ) );
ret|=VO_EVENT_KEYPRESS;
break;
#ifdef HAVE_NEW_INPUT
case ButtonPress:
// Ignore mouse whell press event
if(Event.xbutton.button == 4 || Event.xbutton.button == 5)
break;
mplayer_put_key((MOUSE_BTN0+Event.xbutton.button-1)|MP_KEY_DOWN);
break;
case ButtonRelease:
mplayer_put_key(MOUSE_BTN0+Event.xbutton.button-1);
break;
#endif
}
}
return ret;
}

View File

@ -21,14 +21,11 @@ void vo_x11_classhint( Display * display,Window window,char *name );
int vo_x11_check_events(Display *mydisplay);
#endif
extern Window vo_window;
extern GC vo_gc;
#ifdef HAVE_NEW_GUI
extern Window vo_window;
extern GC vo_gc;
extern void vo_setwindow( Window w,GC g );
extern void vo_setwindowsize( int w,int h );
extern int vo_xeventhandling;
extern int vo_expose;
extern int vo_resize;
extern void vo_x11_putkey(int key);
#endif
#ifdef HAVE_GUI