mirror of
https://github.com/mpv-player/mpv
synced 2025-01-09 01:36:25 +01:00
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:
parent
9bb0419770
commit
061bda6e2d
@ -130,7 +130,6 @@ void mplMainDraw( wsParamDisplay )
|
||||
wItem * item;
|
||||
txSample * image = NULL;
|
||||
int i;
|
||||
char * tmp;
|
||||
|
||||
if ( appMPlayer.mainWindow.Visible == wsWindowNotVisible ||
|
||||
!mainVisible ) return;
|
||||
|
@ -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 )
|
||||
|
@ -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 @@ 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 ); }
|
||||
|
Loading…
Reference in New Issue
Block a user