majd fix play&stop&pause&redraw

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@1813 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
pontscho 2001-08-31 21:19:52 +00:00
parent 9bb0419770
commit 061bda6e2d
3 changed files with 65 additions and 32 deletions

View File

@ -130,7 +130,6 @@ void mplMainDraw( wsParamDisplay )
wItem * item; wItem * item;
txSample * image = NULL; txSample * image = NULL;
int i; int i;
char * tmp;
if ( appMPlayer.mainWindow.Visible == wsWindowNotVisible || if ( appMPlayer.mainWindow.Visible == wsWindowNotVisible ||
!mainVisible ) return; !mainVisible ) return;

View File

@ -34,12 +34,6 @@ char * Filename = NULL;
extern float rel_seek_secs; extern float rel_seek_secs;
extern int abs_seek_pos; extern int abs_seek_pos;
void mplPlayerThread( void )
{
// mplayer( 0,NULL,NULL );
}
void mplFullScreen( void ) void mplFullScreen( void )
{ {
// if ( appMPlayer.subWindow.isFullScreen ) // if ( appMPlayer.subWindow.isFullScreen )
@ -55,9 +49,10 @@ void mplStop()
{ {
if ( !mplShMem->Playing ) return; if ( !mplShMem->Playing ) return;
// --- // ---
//printf("%%%%%% STOP \n"); printf("%%%%%% STOP \n");
// --- // ---
mplShMem->Playing=0; mplShMem->Playing=0;
mplShMem->TimeSec=0;
if ( !appMPlayer.subWindow.isFullScreen ) if ( !appMPlayer.subWindow.isFullScreen )
{ {
wsMoveWindow( &appMPlayer.subWindow,appMPlayer.sub.x,appMPlayer.sub.y ); wsMoveWindow( &appMPlayer.subWindow,appMPlayer.sub.x,appMPlayer.sub.y );
@ -69,13 +64,14 @@ void mplStop()
void mplPlay( void ) void mplPlay( void )
{ {
if ( ( mplShMem->Filename[0] == 0 )&& if ( ( mplShMem->Filename[0] == 0 )||
( mplShMem->Playing == 1 ) ) return; ( mplShMem->Playing == 1 ) ) return;
if ( mplShMem->Playing == 2 ) { mplPause(); return; } if ( mplShMem->Playing == 2 ) { mplPause(); return; }
// --- // ---
//printf("%%%%%% PLAY \n"); //printf("%%%%%% PLAY \n");
// --- // ---
mplShMem->Playing=1; mplShMem->Playing=1;
// wsPostRedisplay( &appMPlayer.subWindow );
mplSubRender=0; mplSubRender=0;
} }
@ -103,6 +99,7 @@ void mplPause( void )
void mplResize( unsigned int X,unsigned int Y,unsigned int width,unsigned int height ) 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_setwindowsize( width,height );
vo_resize=1; vo_resize=1;
} }
@ -115,20 +112,9 @@ void mplMPlayerInit( int argc,char* argv[], char *envp[] )
mplShMem=calloc( 1,ShMemSize ); mplShMem=calloc( 1,ShMemSize );
#endif #endif
signal( SIGTYPE,mplMainSigHandler ); signal( SIGTYPE,mplMainSigHandler );
// signal( SIGCHLD,SIG_IGN );
mplShMem->Playing=0; memset( mplShMem,0,ShMemSize );
mplShMem->Volume=0.0f;
mplShMem->Position=0.0f;
mplShMem->Balance=50.0f; mplShMem->Balance=50.0f;
mplShMem->Track=0;
mplShMem->AudioType=0;
mplShMem->StreamType=0;
mplShMem->TimeSec=0;
mplShMem->LengthInSec=0;
// ---
// ---
} }
float mplGetPosition( void ) float mplGetPosition( void )

View File

@ -2,24 +2,64 @@
// sub window // sub window
int mplSubRender = 1; 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 ) void mplSubDraw( wsParamDisplay )
{ {
if ( ( appMPlayer.subWindow.Visible == wsWindowNotVisible )|| // if ( ( appMPlayer.subWindow.Visible == wsWindowNotVisible )||
( appMPlayer.subWindow.State != wsWindowExpose ) ) return; // ( 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 ); wsSetBackgroundRGB( &appMPlayer.subWindow,0,0,0 );
wsClearWindow( appMPlayer.subWindow ); wsClearWindow( appMPlayer.subWindow );
appMPlayer.subWindow.State=0;
vo_expose=1; vo_expose=1;
return; mplSubRender=0;
} }
if ( mplSubRender ) if ( mplSubRender )
{ {
printf( "------> redraw video.\n" );
wsSetBackgroundRGB( &appMPlayer.subWindow,appMPlayer.subR,appMPlayer.subG,appMPlayer.subB ); wsSetBackgroundRGB( &appMPlayer.subWindow,appMPlayer.subR,appMPlayer.subG,appMPlayer.subB );
wsClearWindow( appMPlayer.subWindow ); wsClearWindow( appMPlayer.subWindow );
if ( appMPlayer.sub.Bitmap.Image ) if ( appMPlayer.sub.Bitmap.Image )
@ -29,10 +69,14 @@ void mplSubDraw( wsParamDisplay )
} }
XFlush( wsDisplay ); XFlush( wsDisplay );
} }
appMPlayer.subWindow.State=0;
} }
void mplSubMouseHandle( int Button,int X,int Y,int RX,int RY ) void mplSubMouseHandle( int Button,int X,int Y,int RX,int RY )
{ {
static int mplSubMoved = 0;
static int oldmainisvisible = 0;
mplMouseTimer=mplMouseTimerConst; mplMouseTimer=mplMouseTimerConst;
wsVisibleMouse( &appMPlayer.subWindow,wsShowMouseCursor ); wsVisibleMouse( &appMPlayer.subWindow,wsShowMouseCursor );
@ -46,7 +90,11 @@ void mplSubMouseHandle( int Button,int X,int Y,int RX,int RY )
mplHideMenu( RX,RY ); mplHideMenu( RX,RY );
msButton=0; msButton=0;
break; break;
// ---
case wsPLMouseButton: case wsPLMouseButton:
oldmainisvisible=VisibleMainWindow();
printf( "----> %d %d\n",mainisvisible1,mainisvisible2 );
//=mainisvisible;
sx=X; sy=Y; sx=X; sy=Y;
msButton=wsPLMouseButton; msButton=wsPLMouseButton;
mplSubMoved=0; mplSubMoved=0;
@ -65,15 +113,15 @@ void mplSubMouseHandle( int Button,int X,int Y,int RX,int RY )
} }
break; break;
case wsRLMouseButton: case wsRLMouseButton:
if ( !mplSubMoved ) if ( ( !mplSubMoved )&&
( appMPlayer.subWindow.isFullScreen )&&
( !VisibleMainWindow() ) )
{ {
wsMoveTopWindow( &appMPlayer.mainWindow ); wsMoveTopWindow( &appMPlayer.mainWindow );
// else wsMoveTopWindow( &appMPlayer.mainWindow );
} }
msButton=0; msButton=0;
mplSubMoved=0; mplSubMoved=0;
break; break;
} }
} }
//void mplSubResizeHandle( unsigned int X,unsigned int Y,unsigned int width,unsigned int height )
//{ mplResize( X,Y,width,height ); }