Mercurial > mplayer.hg
changeset 1812:d2d6a26ddb02
majd fix play&stop&pause&redraw
author | pontscho |
---|---|
date | Fri, 31 Aug 2001 21:19:52 +0000 |
parents | 0483b88482f5 |
children | c68e82514f56 |
files | Gui/mplayer/mw.h Gui/mplayer/play.c Gui/mplayer/sw.h |
diffstat | 3 files changed, 65 insertions(+), 32 deletions(-) [+] |
line wrap: on
line diff
--- a/Gui/mplayer/mw.h Fri Aug 31 21:18:22 2001 +0000 +++ b/Gui/mplayer/mw.h Fri Aug 31 21:19:52 2001 +0000 @@ -130,7 +130,6 @@ wItem * item; txSample * image = NULL; int i; - char * tmp; if ( appMPlayer.mainWindow.Visible == wsWindowNotVisible || !mainVisible ) return;
--- a/Gui/mplayer/play.c Fri Aug 31 21:18:22 2001 +0000 +++ b/Gui/mplayer/play.c Fri Aug 31 21:19:52 2001 +0000 @@ -34,12 +34,6 @@ extern float rel_seek_secs; extern int abs_seek_pos; - -void mplPlayerThread( void ) -{ -// mplayer( 0,NULL,NULL ); -} - void mplFullScreen( void ) { // if ( appMPlayer.subWindow.isFullScreen ) @@ -55,9 +49,10 @@ { if ( !mplShMem->Playing ) return; // --- -//printf("%%%%%% STOP \n"); +printf("%%%%%% STOP \n"); // --- mplShMem->Playing=0; + mplShMem->TimeSec=0; if ( !appMPlayer.subWindow.isFullScreen ) { wsMoveWindow( &appMPlayer.subWindow,appMPlayer.sub.x,appMPlayer.sub.y ); @@ -69,13 +64,14 @@ void mplPlay( void ) { - if ( ( mplShMem->Filename[0] == 0 )&& + if ( ( mplShMem->Filename[0] == 0 )|| ( mplShMem->Playing == 1 ) ) return; if ( mplShMem->Playing == 2 ) { mplPause(); return; } // --- //printf("%%%%%% PLAY \n"); // --- mplShMem->Playing=1; +// wsPostRedisplay( &appMPlayer.subWindow ); mplSubRender=0; } @@ -103,6 +99,7 @@ void mplResize( unsigned int X,unsigned int Y,unsigned int width,unsigned int height ) { + printf( "----resize---> %dx%d --- \n",width,height ); vo_setwindowsize( width,height ); vo_resize=1; } @@ -115,20 +112,9 @@ mplShMem=calloc( 1,ShMemSize ); #endif signal( SIGTYPE,mplMainSigHandler ); -// signal( SIGCHLD,SIG_IGN ); - mplShMem->Playing=0; - mplShMem->Volume=0.0f; - mplShMem->Position=0.0f; + memset( mplShMem,0,ShMemSize ); mplShMem->Balance=50.0f; - mplShMem->Track=0; - mplShMem->AudioType=0; - mplShMem->StreamType=0; - mplShMem->TimeSec=0; - mplShMem->LengthInSec=0; - -// --- -// --- } float mplGetPosition( void )
--- a/Gui/mplayer/sw.h Fri Aug 31 21:18:22 2001 +0000 +++ b/Gui/mplayer/sw.h Fri Aug 31 21:19:52 2001 +0000 @@ -2,24 +2,64 @@ // sub window int mplSubRender = 1; -int mplSubMoved = 0; + +int VisibleMainWindow( void ) +{ + Window root,parent,me,subw,mainw; + Window * childs; + int nchilds; + int i; + int visible = 0; + + me=appMPlayer.mainWindow.WindowID; + for (;;) + { + XQueryTree( wsDisplay,me,&root,&parent,&childs,&nchilds); + XFree((char *) childs); + if (root == parent) break; + me=parent; + } + XQueryTree( wsDisplay,root,&root,&parent,&childs,&nchilds ); + mainw=me; + + me=appMPlayer.subWindow.WindowID; + for (;;) + { + XQueryTree( wsDisplay,me,&root,&parent,&childs,&nchilds); + XFree((char *) childs); + if (root == parent) break; + me=parent; + } + XQueryTree( wsDisplay,root,&root,&parent,&childs,&nchilds ); + subw=me; + + for (i=0; i < nchilds; i++) if ( childs[i]==me ) break; + for ( ;i<nchilds;i++ ) if ( childs[i] == mainw ) visible=1; +// printf( "-----------> visible main vindov: %d ---\n",visible ); + return visible; +} + +int mainisvisible1; +int mainisvisible2; +int count = 0; void mplSubDraw( wsParamDisplay ) { - if ( ( appMPlayer.subWindow.Visible == wsWindowNotVisible )|| - ( appMPlayer.subWindow.State != wsWindowExpose ) ) return; +// if ( ( appMPlayer.subWindow.Visible == wsWindowNotVisible )|| +// ( appMPlayer.subWindow.State != wsWindowExpose ) ) return; - if ( ( mplShMem->Playing )&&( appMPlayer.subWindow.State == wsWindowExpose ) ) + if ( ( mplShMem->Playing ) )//&&( appMPlayer.subWindow.State == wsWindowExpose ) ) { +printf( "------> redraw volib.\n" ); wsSetBackgroundRGB( &appMPlayer.subWindow,0,0,0 ); wsClearWindow( appMPlayer.subWindow ); - appMPlayer.subWindow.State=0; vo_expose=1; - return; + mplSubRender=0; } if ( mplSubRender ) { +printf( "------> redraw video.\n" ); wsSetBackgroundRGB( &appMPlayer.subWindow,appMPlayer.subR,appMPlayer.subG,appMPlayer.subB ); wsClearWindow( appMPlayer.subWindow ); if ( appMPlayer.sub.Bitmap.Image ) @@ -29,10 +69,14 @@ } XFlush( wsDisplay ); } + appMPlayer.subWindow.State=0; } void mplSubMouseHandle( int Button,int X,int Y,int RX,int RY ) { + static int mplSubMoved = 0; + static int oldmainisvisible = 0; + mplMouseTimer=mplMouseTimerConst; wsVisibleMouse( &appMPlayer.subWindow,wsShowMouseCursor ); @@ -46,7 +90,11 @@ mplHideMenu( RX,RY ); msButton=0; break; +// --- case wsPLMouseButton: + oldmainisvisible=VisibleMainWindow(); + printf( "----> %d %d\n",mainisvisible1,mainisvisible2 ); + //=mainisvisible; sx=X; sy=Y; msButton=wsPLMouseButton; mplSubMoved=0; @@ -65,15 +113,15 @@ } break; case wsRLMouseButton: - if ( !mplSubMoved ) + if ( ( !mplSubMoved )&& + ( appMPlayer.subWindow.isFullScreen )&& + ( !VisibleMainWindow() ) ) { - wsMoveTopWindow( &appMPlayer.mainWindow ); +wsMoveTopWindow( &appMPlayer.mainWindow ); +// else wsMoveTopWindow( &appMPlayer.mainWindow ); } msButton=0; mplSubMoved=0; break; } } - -//void mplSubResizeHandle( unsigned int X,unsigned int Y,unsigned int width,unsigned int height ) -//{ mplResize( X,Y,width,height ); }