mirror of https://github.com/mpv-player/mpv
correct skin changing
(fix one critical bug) git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@8950 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
parent
d462b79a48
commit
5b16ccc998
|
@ -138,6 +138,8 @@ void appInitStruct( listItems * item )
|
||||||
item->subR=0;
|
item->subR=0;
|
||||||
item->subG=0;
|
item->subG=0;
|
||||||
item->subB=0;
|
item->subB=0;
|
||||||
|
item->barIsPresent=0;
|
||||||
|
item->menuIsPresent=0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int appFindKey( unsigned char * name )
|
int appFindKey( unsigned char * name )
|
||||||
|
|
|
@ -145,7 +145,11 @@ typedef struct
|
||||||
wItem sub;
|
wItem sub;
|
||||||
wsTWindow subWindow;
|
wsTWindow subWindow;
|
||||||
int subR,subG,subB;
|
int subR,subG,subB;
|
||||||
int subPixel;
|
|
||||||
|
wItem bar;
|
||||||
|
wsTWindow barWindow;
|
||||||
|
int barR,barG,barB;
|
||||||
|
int barIsPresent;
|
||||||
|
|
||||||
wItem eq;
|
wItem eq;
|
||||||
wsTWindow eqWindow;
|
wsTWindow eqWindow;
|
||||||
|
@ -153,6 +157,7 @@ typedef struct
|
||||||
wItem menuBase;
|
wItem menuBase;
|
||||||
wItem menuSelected;
|
wItem menuSelected;
|
||||||
wsTWindow menuWindow;
|
wsTWindow menuWindow;
|
||||||
|
int menuIsPresent;
|
||||||
|
|
||||||
// ---
|
// ---
|
||||||
int NumberOfItems;
|
int NumberOfItems;
|
||||||
|
|
|
@ -210,7 +210,7 @@ void guiInit( void )
|
||||||
i=wsShowFrame|wsMaxSize|wsHideWindow;
|
i=wsShowFrame|wsMaxSize|wsHideWindow;
|
||||||
wsCreateWindow( &appMPlayer.mainWindow,
|
wsCreateWindow( &appMPlayer.mainWindow,
|
||||||
appMPlayer.main.x,appMPlayer.main.y,appMPlayer.main.width,appMPlayer.main.height,
|
appMPlayer.main.x,appMPlayer.main.y,appMPlayer.main.width,appMPlayer.main.height,
|
||||||
wsNoBorder,wsShowMouseCursor|wsHandleMouseButton|wsHandleMouseMove,i,"MPlayer" ); //wsMinSize|
|
wsNoBorder,wsShowMouseCursor|wsHandleMouseButton|wsHandleMouseMove,i,"MPlayer" );
|
||||||
|
|
||||||
wsSetShape( &appMPlayer.mainWindow,appMPlayer.main.Mask.Image );
|
wsSetShape( &appMPlayer.mainWindow,appMPlayer.main.Mask.Image );
|
||||||
wsXDNDMakeAwareness(&appMPlayer.mainWindow);
|
wsXDNDMakeAwareness(&appMPlayer.mainWindow);
|
||||||
|
|
|
@ -15,6 +15,7 @@ int mplMenuRender = 1;
|
||||||
int mplMenuItem = -1;
|
int mplMenuItem = -1;
|
||||||
int mplOldMenuItem = -1;
|
int mplOldMenuItem = -1;
|
||||||
int mplMenuX,mplMenuY;
|
int mplMenuX,mplMenuY;
|
||||||
|
static int mplMenuIsInitialized = 0;
|
||||||
|
|
||||||
void mplHideMenu( int mx,int my,int w );
|
void mplHideMenu( int mx,int my,int w );
|
||||||
|
|
||||||
|
@ -24,7 +25,7 @@ void mplMenuDraw( void )
|
||||||
uint32_t * drw = NULL;
|
uint32_t * drw = NULL;
|
||||||
int x,y,tmp;
|
int x,y,tmp;
|
||||||
|
|
||||||
if ( !appMPlayer.menuBase.Bitmap.Image ) return;
|
if ( !appMPlayer.menuIsPresent || !appMPlayer.menuBase.Bitmap.Image ) return;
|
||||||
if ( !mplMenuRender && !appMPlayer.menuWindow.Visible ) return;
|
if ( !mplMenuRender && !appMPlayer.menuWindow.Visible ) return;
|
||||||
|
|
||||||
if ( mplMenuRender || mplMenuItem != mplOldMenuItem )
|
if ( mplMenuRender || mplMenuItem != mplOldMenuItem )
|
||||||
|
@ -78,7 +79,7 @@ void mplShowMenu( int mx,int my )
|
||||||
{
|
{
|
||||||
int x,y;
|
int x,y;
|
||||||
|
|
||||||
if ( !appMPlayer.menuBase.Bitmap.Image ) return;
|
if ( !appMPlayer.menuIsPresent || !appMPlayer.menuBase.Bitmap.Image ) return;
|
||||||
|
|
||||||
x=mx;
|
x=mx;
|
||||||
if ( x + appMPlayer.menuWindow.Width > wsMaxX ) x=wsMaxX - appMPlayer.menuWindow.Width - 1;
|
if ( x + appMPlayer.menuWindow.Width > wsMaxX ) x=wsMaxX - appMPlayer.menuWindow.Width - 1;
|
||||||
|
@ -101,7 +102,7 @@ void mplHideMenu( int mx,int my,int w )
|
||||||
{
|
{
|
||||||
int x,y,i=mplMenuItem;
|
int x,y,i=mplMenuItem;
|
||||||
|
|
||||||
if ( !appMPlayer.menuBase.Bitmap.Image ) return;
|
if ( !appMPlayer.menuIsPresent || !appMPlayer.menuBase.Bitmap.Image ) return;
|
||||||
|
|
||||||
x=mx-mplMenuX;
|
x=mx-mplMenuX;
|
||||||
y=my-mplMenuY;
|
y=my-mplMenuY;
|
||||||
|
@ -126,7 +127,7 @@ void mplHideMenu( int mx,int my,int w )
|
||||||
void mplMenuInit( void )
|
void mplMenuInit( void )
|
||||||
{
|
{
|
||||||
|
|
||||||
if ( !appMPlayer.menuBase.Bitmap.Image ) return;
|
if ( mplMenuIsInitialized || !appMPlayer.menuIsPresent || !appMPlayer.menuBase.Bitmap.Image ) return;
|
||||||
|
|
||||||
appMPlayer.menuBase.x=0;
|
appMPlayer.menuBase.x=0;
|
||||||
appMPlayer.menuBase.y=0;
|
appMPlayer.menuBase.y=0;
|
||||||
|
@ -150,6 +151,7 @@ void mplMenuInit( void )
|
||||||
mp_msg( MSGT_GPLAYER,MSGL_DBG2,"[menu.h] menu: 0x%x\n",(int)appMPlayer.menuWindow.WindowID );
|
mp_msg( MSGT_GPLAYER,MSGL_DBG2,"[menu.h] menu: 0x%x\n",(int)appMPlayer.menuWindow.WindowID );
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
mplMenuIsInitialized=1;
|
||||||
appMPlayer.menuWindow.ReDraw=mplMenuDraw;
|
appMPlayer.menuWindow.ReDraw=mplMenuDraw;
|
||||||
// appMPlayer.menuWindow.MouseHandler=mplMenuMouseHandle;
|
// appMPlayer.menuWindow.MouseHandler=mplMenuMouseHandle;
|
||||||
// appMPlayer.menuWindow.KeyHandler=mplMainKeyHandle;
|
// appMPlayer.menuWindow.KeyHandler=mplMainKeyHandle;
|
||||||
|
|
|
@ -191,6 +191,7 @@ listItems tmpList;
|
||||||
void ChangeSkin( char * name )
|
void ChangeSkin( char * name )
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
int prev = appMPlayer.menuIsPresent;
|
||||||
|
|
||||||
mainVisible=0;
|
mainVisible=0;
|
||||||
|
|
||||||
|
@ -208,7 +209,8 @@ void ChangeSkin( char * name )
|
||||||
mainVisible=1;
|
mainVisible=1;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if ( appMPlayer.menuBase.Bitmap.Image )
|
|
||||||
|
if ( prev && appMPlayer.menuIsPresent )
|
||||||
{
|
{
|
||||||
if ( mplMenuDrawBuffer ) free( mplMenuDrawBuffer );
|
if ( mplMenuDrawBuffer ) free( mplMenuDrawBuffer );
|
||||||
if ( ( mplMenuDrawBuffer = (unsigned char *)calloc( 1,appMPlayer.menuBase.Bitmap.ImageSize ) ) == NULL )
|
if ( ( mplMenuDrawBuffer = (unsigned char *)calloc( 1,appMPlayer.menuBase.Bitmap.ImageSize ) ) == NULL )
|
||||||
|
@ -217,7 +219,7 @@ void ChangeSkin( char * name )
|
||||||
wsResizeImage( &appMPlayer.menuWindow,appMPlayer.menuBase.width,appMPlayer.menuBase.height );
|
wsResizeImage( &appMPlayer.menuWindow,appMPlayer.menuBase.width,appMPlayer.menuBase.height );
|
||||||
wsSetShape( &appMPlayer.menuWindow,appMPlayer.menuBase.Mask.Image );
|
wsSetShape( &appMPlayer.menuWindow,appMPlayer.menuBase.Mask.Image );
|
||||||
wsVisibleWindow( &appMPlayer.menuWindow,wsHideWindow );
|
wsVisibleWindow( &appMPlayer.menuWindow,wsHideWindow );
|
||||||
}
|
} else { mplMenuInit(); }
|
||||||
|
|
||||||
if ( appMPlayer.sub.Bitmap.Image ) wsResizeImage( &appMPlayer.subWindow,appMPlayer.sub.Bitmap.Width,appMPlayer.sub.Bitmap.Height );
|
if ( appMPlayer.sub.Bitmap.Image ) wsResizeImage( &appMPlayer.subWindow,appMPlayer.sub.Bitmap.Width,appMPlayer.sub.Bitmap.Height );
|
||||||
if ( ( !appMPlayer.subWindow.isFullScreen )&&( !guiIntfStruct.Playing ) )
|
if ( ( !appMPlayer.subWindow.isFullScreen )&&( !guiIntfStruct.Playing ) )
|
||||||
|
@ -238,7 +240,9 @@ void ChangeSkin( char * name )
|
||||||
if ( ( mplDrawBuffer = (unsigned char *)calloc( 1,appMPlayer.main.Bitmap.ImageSize ) ) == NULL )
|
if ( ( mplDrawBuffer = (unsigned char *)calloc( 1,appMPlayer.main.Bitmap.ImageSize ) ) == NULL )
|
||||||
{ mp_msg( MSGT_GPLAYER,MSGL_STATUS,MSGTR_NEMDB ); return; }
|
{ mp_msg( MSGT_GPLAYER,MSGL_STATUS,MSGTR_NEMDB ); return; }
|
||||||
|
|
||||||
if ( vo_wm_type == vo_wm_Unknown ) wsVisibleWindow( &appMPlayer.mainWindow,wsHideWindow );
|
#if 0
|
||||||
|
// if ( vo_wm_type == vo_wm_Unknown )
|
||||||
|
wsVisibleWindow( &appMPlayer.mainWindow,wsHideWindow );
|
||||||
wsResizeWindow( &appMPlayer.mainWindow,appMPlayer.main.width,appMPlayer.main.height );
|
wsResizeWindow( &appMPlayer.mainWindow,appMPlayer.main.width,appMPlayer.main.height );
|
||||||
wsMoveWindow( &appMPlayer.mainWindow,True,appMPlayer.main.x,appMPlayer.main.y );
|
wsMoveWindow( &appMPlayer.mainWindow,True,appMPlayer.main.x,appMPlayer.main.y );
|
||||||
wsResizeImage( &appMPlayer.mainWindow,appMPlayer.main.width,appMPlayer.main.height );
|
wsResizeImage( &appMPlayer.mainWindow,appMPlayer.main.width,appMPlayer.main.height );
|
||||||
|
@ -246,7 +250,26 @@ void ChangeSkin( char * name )
|
||||||
wsWindowDecoration( &appMPlayer.mainWindow,appMPlayer.mainDecoration );
|
wsWindowDecoration( &appMPlayer.mainWindow,appMPlayer.mainDecoration );
|
||||||
mainVisible=1; mplMainRender=1; wsPostRedisplay( &appMPlayer.mainWindow );
|
mainVisible=1; mplMainRender=1; wsPostRedisplay( &appMPlayer.mainWindow );
|
||||||
wsVisibleWindow( &appMPlayer.mainWindow,wsShowWindow );
|
wsVisibleWindow( &appMPlayer.mainWindow,wsShowWindow );
|
||||||
|
#else
|
||||||
|
wsDestroyWindow( &appMPlayer.mainWindow );
|
||||||
|
|
||||||
|
wsCreateWindow( &appMPlayer.mainWindow,
|
||||||
|
appMPlayer.main.x,appMPlayer.main.y,appMPlayer.main.width,appMPlayer.main.height,
|
||||||
|
wsNoBorder,wsShowMouseCursor|wsHandleMouseButton|wsHandleMouseMove,wsShowFrame|wsMaxSize|wsHideWindow,"MPlayer" );
|
||||||
|
wsCreateImage( &appMPlayer.mainWindow,appMPlayer.main.Bitmap.Width,appMPlayer.main.Bitmap.Height );
|
||||||
|
wsSetShape( &appMPlayer.mainWindow,appMPlayer.main.Mask.Image );
|
||||||
|
wsSetIcon( wsDisplay,appMPlayer.mainWindow.WindowID,guiIcon,guiIconMask );
|
||||||
|
|
||||||
|
appMPlayer.mainWindow.ReDraw=(void *)mplMainDraw;
|
||||||
|
appMPlayer.mainWindow.MouseHandler=mplMainMouseHandle;
|
||||||
|
appMPlayer.mainWindow.KeyHandler=mplMainKeyHandle;
|
||||||
|
appMPlayer.mainWindow.DandDHandler=mplDandDHandler;
|
||||||
|
|
||||||
|
wsXDNDMakeAwareness( &appMPlayer.mainWindow );
|
||||||
|
if ( !appMPlayer.mainDecoration ) wsWindowDecoration( &appMPlayer.mainWindow,0 );
|
||||||
|
wsVisibleWindow( &appMPlayer.mainWindow,wsShowWindow );
|
||||||
|
mainVisible=1;
|
||||||
|
#endif
|
||||||
btnModify( evSetVolume,guiIntfStruct.Volume );
|
btnModify( evSetVolume,guiIntfStruct.Volume );
|
||||||
btnModify( evSetBalance,guiIntfStruct.Balance );
|
btnModify( evSetBalance,guiIntfStruct.Balance );
|
||||||
btnModify( evSetMoviePosition,guiIntfStruct.Position );
|
btnModify( evSetMoviePosition,guiIntfStruct.Position );
|
||||||
|
|
18
Gui/wm/ws.c
18
Gui/wm/ws.c
|
@ -68,8 +68,8 @@ int wsOutMask = 0;
|
||||||
|
|
||||||
int wsTrue = True;
|
int wsTrue = True;
|
||||||
|
|
||||||
wsTWindow * wsWindowList[5] = { NULL,NULL,NULL,NULL,NULL };
|
#define wsWLCount 5
|
||||||
int wsWLCount = 0;
|
wsTWindow * wsWindowList[wsWLCount] = { NULL,NULL,NULL,NULL,NULL };
|
||||||
|
|
||||||
unsigned long wsKeyTable[512];
|
unsigned long wsKeyTable[512];
|
||||||
|
|
||||||
|
@ -446,7 +446,14 @@ void wsCreateWindow( wsTWindow * win,int X,int Y,int wX,int hY,int bW,int cV,uns
|
||||||
wsCreateImage( win,win->Width,win->Height );
|
wsCreateImage( win,win->Width,win->Height );
|
||||||
// --- End of creating --------------------------------------------------------------------------
|
// --- End of creating --------------------------------------------------------------------------
|
||||||
|
|
||||||
wsWindowList[wsWLCount++]=win;
|
{
|
||||||
|
int i;
|
||||||
|
for ( i=0;i < wsWLCount;i++ )
|
||||||
|
if ( wsWindowList[i] == NULL ) break;
|
||||||
|
if ( i == wsWLCount )
|
||||||
|
{ printf( "!!! tul sok nyitott ablak van.\n" ); exit( 1 ); }
|
||||||
|
wsWindowList[i]=win;
|
||||||
|
}
|
||||||
|
|
||||||
XFlush( wsDisplay );
|
XFlush( wsDisplay );
|
||||||
XSync( wsDisplay,False );
|
XSync( wsDisplay,False );
|
||||||
|
@ -469,9 +476,11 @@ void wsDestroyWindow( wsTWindow * win )
|
||||||
XFreeCursor( wsDisplay,win->wsCursor );
|
XFreeCursor( wsDisplay,win->wsCursor );
|
||||||
win->wsCursor=None;
|
win->wsCursor=None;
|
||||||
}
|
}
|
||||||
|
XFreeGC( wsDisplay,win->wGC );
|
||||||
XUnmapWindow( wsDisplay,win->WindowID );
|
XUnmapWindow( wsDisplay,win->WindowID );
|
||||||
wsDestroyImage( win );
|
wsDestroyImage( win );
|
||||||
XDestroyWindow( wsDisplay,win->WindowID );
|
XDestroyWindow( wsDisplay,win->WindowID );
|
||||||
|
#if 0
|
||||||
win->ReDraw=NULL;
|
win->ReDraw=NULL;
|
||||||
win->ReSize=NULL;
|
win->ReSize=NULL;
|
||||||
win->Idle=NULL;
|
win->Idle=NULL;
|
||||||
|
@ -481,6 +490,7 @@ void wsDestroyWindow( wsTWindow * win )
|
||||||
win->Focused=0;
|
win->Focused=0;
|
||||||
win->Mapped=0;
|
win->Mapped=0;
|
||||||
win->Rolled=0;
|
win->Rolled=0;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------------------------
|
||||||
|
@ -490,7 +500,7 @@ void wsDestroyWindow( wsTWindow * win )
|
||||||
inline int wsSearch( Window win )
|
inline int wsSearch( Window win )
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
for ( i=0;i<wsWLCount;i++ ) if ( wsWindowList[i]->WindowID == win ) return i;
|
for ( i=0;i<wsWLCount;i++ ) if ( wsWindowList[i] && wsWindowList[i]->WindowID == win ) return i;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue