# HG changeset patch # User pontscho # Date 1042501129 0 # Node ID d07ab8e088a986ae3d86bee0b0b50c06d8cf338d # Parent 37bd5319cc21b0a69b95cf1be461f3bc87c3f984 correct skin changing (fix one critical bug) diff -r 37bd5319cc21 -r d07ab8e088a9 Gui/app.c --- a/Gui/app.c Mon Jan 13 19:39:57 2003 +0000 +++ b/Gui/app.c Mon Jan 13 23:38:49 2003 +0000 @@ -138,6 +138,8 @@ item->subR=0; item->subG=0; item->subB=0; + item->barIsPresent=0; + item->menuIsPresent=0; } int appFindKey( unsigned char * name ) diff -r 37bd5319cc21 -r d07ab8e088a9 Gui/app.h --- a/Gui/app.h Mon Jan 13 19:39:57 2003 +0000 +++ b/Gui/app.h Mon Jan 13 23:38:49 2003 +0000 @@ -145,7 +145,11 @@ wItem sub; wsTWindow subWindow; int subR,subG,subB; - int subPixel; + + wItem bar; + wsTWindow barWindow; + int barR,barG,barB; + int barIsPresent; wItem eq; wsTWindow eqWindow; @@ -153,6 +157,7 @@ wItem menuBase; wItem menuSelected; wsTWindow menuWindow; + int menuIsPresent; // --- int NumberOfItems; diff -r 37bd5319cc21 -r d07ab8e088a9 Gui/interface.c --- a/Gui/interface.c Mon Jan 13 19:39:57 2003 +0000 +++ b/Gui/interface.c Mon Jan 13 23:38:49 2003 +0000 @@ -210,7 +210,7 @@ i=wsShowFrame|wsMaxSize|wsHideWindow; wsCreateWindow( &appMPlayer.mainWindow, 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 ); wsXDNDMakeAwareness(&appMPlayer.mainWindow); diff -r 37bd5319cc21 -r d07ab8e088a9 Gui/mplayer/menu.c --- a/Gui/mplayer/menu.c Mon Jan 13 19:39:57 2003 +0000 +++ b/Gui/mplayer/menu.c Mon Jan 13 23:38:49 2003 +0000 @@ -15,6 +15,7 @@ int mplMenuItem = -1; int mplOldMenuItem = -1; int mplMenuX,mplMenuY; +static int mplMenuIsInitialized = 0; void mplHideMenu( int mx,int my,int w ); @@ -24,7 +25,7 @@ uint32_t * drw = NULL; 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 || mplMenuItem != mplOldMenuItem ) @@ -78,7 +79,7 @@ { int x,y; - if ( !appMPlayer.menuBase.Bitmap.Image ) return; + if ( !appMPlayer.menuIsPresent || !appMPlayer.menuBase.Bitmap.Image ) return; x=mx; if ( x + appMPlayer.menuWindow.Width > wsMaxX ) x=wsMaxX - appMPlayer.menuWindow.Width - 1; @@ -101,7 +102,7 @@ { int x,y,i=mplMenuItem; - if ( !appMPlayer.menuBase.Bitmap.Image ) return; + if ( !appMPlayer.menuIsPresent || !appMPlayer.menuBase.Bitmap.Image ) return; x=mx-mplMenuX; y=my-mplMenuY; @@ -126,7 +127,7 @@ void mplMenuInit( void ) { - if ( !appMPlayer.menuBase.Bitmap.Image ) return; + if ( mplMenuIsInitialized || !appMPlayer.menuIsPresent || !appMPlayer.menuBase.Bitmap.Image ) return; appMPlayer.menuBase.x=0; appMPlayer.menuBase.y=0; @@ -150,6 +151,7 @@ mp_msg( MSGT_GPLAYER,MSGL_DBG2,"[menu.h] menu: 0x%x\n",(int)appMPlayer.menuWindow.WindowID ); #endif + mplMenuIsInitialized=1; appMPlayer.menuWindow.ReDraw=mplMenuDraw; // appMPlayer.menuWindow.MouseHandler=mplMenuMouseHandle; // appMPlayer.menuWindow.KeyHandler=mplMainKeyHandle; diff -r 37bd5319cc21 -r d07ab8e088a9 Gui/mplayer/play.c --- a/Gui/mplayer/play.c Mon Jan 13 19:39:57 2003 +0000 +++ b/Gui/mplayer/play.c Mon Jan 13 23:38:49 2003 +0000 @@ -191,6 +191,7 @@ void ChangeSkin( char * name ) { int ret; + int prev = appMPlayer.menuIsPresent; mainVisible=0; @@ -208,7 +209,8 @@ mainVisible=1; return; } - if ( appMPlayer.menuBase.Bitmap.Image ) + + if ( prev && appMPlayer.menuIsPresent ) { if ( mplMenuDrawBuffer ) free( mplMenuDrawBuffer ); if ( ( mplMenuDrawBuffer = (unsigned char *)calloc( 1,appMPlayer.menuBase.Bitmap.ImageSize ) ) == NULL ) @@ -217,7 +219,7 @@ wsResizeImage( &appMPlayer.menuWindow,appMPlayer.menuBase.width,appMPlayer.menuBase.height ); wsSetShape( &appMPlayer.menuWindow,appMPlayer.menuBase.Mask.Image ); wsVisibleWindow( &appMPlayer.menuWindow,wsHideWindow ); - } + } else { mplMenuInit(); } if ( appMPlayer.sub.Bitmap.Image ) wsResizeImage( &appMPlayer.subWindow,appMPlayer.sub.Bitmap.Width,appMPlayer.sub.Bitmap.Height ); if ( ( !appMPlayer.subWindow.isFullScreen )&&( !guiIntfStruct.Playing ) ) @@ -238,7 +240,9 @@ if ( ( mplDrawBuffer = (unsigned char *)calloc( 1,appMPlayer.main.Bitmap.ImageSize ) ) == NULL ) { 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 ); wsMoveWindow( &appMPlayer.mainWindow,True,appMPlayer.main.x,appMPlayer.main.y ); wsResizeImage( &appMPlayer.mainWindow,appMPlayer.main.width,appMPlayer.main.height ); @@ -246,7 +250,26 @@ wsWindowDecoration( &appMPlayer.mainWindow,appMPlayer.mainDecoration ); mainVisible=1; mplMainRender=1; wsPostRedisplay( &appMPlayer.mainWindow ); 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( evSetBalance,guiIntfStruct.Balance ); btnModify( evSetMoviePosition,guiIntfStruct.Position ); diff -r 37bd5319cc21 -r d07ab8e088a9 Gui/wm/ws.c --- a/Gui/wm/ws.c Mon Jan 13 19:39:57 2003 +0000 +++ b/Gui/wm/ws.c Mon Jan 13 23:38:49 2003 +0000 @@ -68,8 +68,8 @@ int wsTrue = True; -wsTWindow * wsWindowList[5] = { NULL,NULL,NULL,NULL,NULL }; -int wsWLCount = 0; +#define wsWLCount 5 +wsTWindow * wsWindowList[wsWLCount] = { NULL,NULL,NULL,NULL,NULL }; unsigned long wsKeyTable[512]; @@ -446,7 +446,14 @@ wsCreateImage( win,win->Width,win->Height ); // --- 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 ); XSync( wsDisplay,False ); @@ -469,9 +476,11 @@ XFreeCursor( wsDisplay,win->wsCursor ); win->wsCursor=None; } + XFreeGC( wsDisplay,win->wGC ); XUnmapWindow( wsDisplay,win->WindowID ); wsDestroyImage( win ); XDestroyWindow( wsDisplay,win->WindowID ); +#if 0 win->ReDraw=NULL; win->ReSize=NULL; win->Idle=NULL; @@ -481,6 +490,7 @@ win->Focused=0; win->Mapped=0; win->Rolled=0; +#endif } // ---------------------------------------------------------------------------------------------- @@ -490,7 +500,7 @@ inline int wsSearch( Window win ) { int i; - for ( i=0;iWindowID == win ) return i; + for ( i=0;iWindowID == win ) return i; return -1; }