From 061bda6e2dda0ba221cfe5bc3c436a0f63262672 Mon Sep 17 00:00:00 2001 From: pontscho Date: Fri, 31 Aug 2001 21:19:52 +0000 Subject: majd fix play&stop&pause&redraw git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@1813 b3059339-0415-0410-9bf9-f77b7e298cf2 --- Gui/mplayer/mw.h | 1 - Gui/mplayer/play.c | 26 +++++--------------- Gui/mplayer/sw.h | 70 +++++++++++++++++++++++++++++++++++++++++++++--------- 3 files changed, 65 insertions(+), 32 deletions(-) (limited to 'Gui') diff --git a/Gui/mplayer/mw.h b/Gui/mplayer/mw.h index 2814e23365..0af876e20a 100644 --- a/Gui/mplayer/mw.h +++ b/Gui/mplayer/mw.h @@ -130,7 +130,6 @@ void mplMainDraw( wsParamDisplay ) wItem * item; txSample * image = NULL; int i; - char * tmp; if ( appMPlayer.mainWindow.Visible == wsWindowNotVisible || !mainVisible ) return; diff --git a/Gui/mplayer/play.c b/Gui/mplayer/play.c index fdfefd3fa4..0730ef825d 100644 --- a/Gui/mplayer/play.c +++ b/Gui/mplayer/play.c @@ -34,12 +34,6 @@ char * Filename = NULL; 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 @@ void mplStop() { 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 mplStop() 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 mplPause( void ) 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 @@ void mplMPlayerInit( int argc,char* argv[], char *envp[] ) 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 ) diff --git a/Gui/mplayer/sw.h b/Gui/mplayer/sw.h index a07035a634..ed39c0e1de 100644 --- a/Gui/mplayer/sw.h +++ b/Gui/mplayer/sw.h @@ -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 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 @@ void mplSubDraw( wsParamDisplay ) } 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 @@ void mplSubMouseHandle( int Button,int X,int Y,int RX,int RY ) 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 @@ void mplSubMouseHandle( int Button,int X,int Y,int RX,int RY ) } 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 ); } -- cgit v1.2.3