From d62c80d3bd462257c6ebdef6d0eefc9dc6d677b4 Mon Sep 17 00:00:00 2001 From: pontscho Date: Tue, 4 Sep 2001 15:21:00 +0000 Subject: fix xshape, mixer, fullscreen, etc git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@1853 b3059339-0415-0410-9bf9-f77b7e298cf2 --- Gui/mplayer/play.c | 4 +-- Gui/mplayer/sw.h | 22 +++++++++----- Gui/skin/cut.c | 15 +++++++++ Gui/skin/cut.h | 13 ++++---- Gui/skin/skin.c | 89 ++++++++++++++++++++++++++---------------------------- Gui/wm/ws.c | 12 +++++--- libvo/sub.c | 2 +- libvo/vo_x11.c | 21 ++++++++----- libvo/vo_xmga.c | 45 ++++++++++++++++----------- libvo/vo_xv.c | 13 ++++---- mplayer.c | 27 +++++++++-------- 11 files changed, 152 insertions(+), 111 deletions(-) diff --git a/Gui/mplayer/play.c b/Gui/mplayer/play.c index 8649d4e53b..b1c10a18ac 100644 --- a/Gui/mplayer/play.c +++ b/Gui/mplayer/play.c @@ -66,8 +66,8 @@ void mplPlay( void ) ( mplShMem->Playing == 1 ) ) return; if ( mplShMem->Playing == 2 ) { mplPause(); return; } mplShMem->Playing=1; - wsClearWindow( appMPlayer.subWindow ); mplSubRender=0; + wsPostRedisplay( &appMPlayer.subWindow ); } void mplPause( void ) @@ -90,7 +90,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 ); +// printf( "----resize---> %dx%d --- \n",width,height ); vo_setwindowsize( width,height ); vo_resize=1; } diff --git a/Gui/mplayer/sw.h b/Gui/mplayer/sw.h index 8529324313..040cb0d971 100644 --- a/Gui/mplayer/sw.h +++ b/Gui/mplayer/sw.h @@ -2,25 +2,30 @@ // sub window int mplSubRender = 1; +int SubVisible = 0; void mplSubDraw( wsParamDisplay ) { + if ( appMPlayer.subWindow.State == wsFocused || + appMPlayer.subWindow.State == + + ) SubVisible=0; + + if ( !appMPlayer.subWindow.Mapped || + appMPlayer.subWindow.Visible == wsWindowNotVisible ) return; -// if ( ( appMPlayer.subWindow.Visible == wsWindowNotVisible )|| -// ( appMPlayer.subWindow.State != wsWindowExpose ) ) return; - - if ( ( mplShMem->Playing ) )//&&( appMPlayer.subWindow.State == wsWindowExpose ) ) + if ( mplShMem->Playing ) { + wsSetBackgroundRGB( &appMPlayer.subWindow,0,0,0 ); + wsClearWindow( appMPlayer.subWindow ); vo_expose=1; mplSubRender=0; } if ( mplSubRender ) { - wsSetForegroundRGB( &appMPlayer.subWindow,appMPlayer.subR,appMPlayer.subG,appMPlayer.subB ); - XFillRectangle( wsDisplay,appMPlayer.subWindow.WindowID,appMPlayer.subWindow.wGC,0,0, - appMPlayer.subWindow.Width,appMPlayer.subWindow.Height ); - if ( appMPlayer.sub.Bitmap.Image ) + wsSetBackgroundRGB( &appMPlayer.subWindow,appMPlayer.subR,appMPlayer.subG,appMPlayer.subB ); + if ( appMPlayer.sub.Bitmap.Image ) { wsConvert( &appMPlayer.subWindow,appMPlayer.sub.Bitmap.Image,appMPlayer.sub.Bitmap.ImageSize ); wsPutImage( &appMPlayer.subWindow ); @@ -67,6 +72,7 @@ void mplSubMouseHandle( int Button,int X,int Y,int RX,int RY ) } break; case wsRLMouseButton: + if ( ( !mplSubMoved )&&( !( SubVisible++%2 ) ) ) wsMoveTopWindow( &appMPlayer.mainWindow ); msButton=0; mplSubMoved=0; break; diff --git a/Gui/skin/cut.c b/Gui/skin/cut.c index 5a36f4564c..cdb56c3d3d 100644 --- a/Gui/skin/cut.c +++ b/Gui/skin/cut.c @@ -14,8 +14,23 @@ void cutItem( char * in,char * out,char sep,int num ) out[c]=0; } +int cutItemToInt( char * in,char sep,int num ) +{ + char tmp[512]; + cutItem( in,tmp,sep,num ); + return atoi( tmp ); +} + +float cutItemToFloat( char * in,char sep,int num ) +{ + char tmp[512]; + cutItem( in,tmp,sep,num ); + return atof( tmp ); +} + void cutChunk( char * in,char * s1 ) { cutItem( in,s1,'=',0 ); memmove( in,strchr( in,'=' )+1,strlen( in ) - strlen( s1 ) ); } + diff --git a/Gui/skin/cut.h b/Gui/skin/cut.h index d50cabe201..71862e91f9 100644 --- a/Gui/skin/cut.h +++ b/Gui/skin/cut.h @@ -1,9 +1,10 @@ -#ifndef _MYCUTS -#define _MYCUTS +#ifndef _CUT_H +#define _CUT_H -extern void cutItem( char * in,char * out,char sep,int num ); +extern void cutItem( char * in,char * out,char sep,int num ); +extern int cutItemToInt( char * in,char sep,int num ); +extern float cutItemToFloat( char * in,char sep,int num ); +extern void cutChunk( char * in,char * s1 ); -extern void cutChunk( char * in,char * s1 ); - -#endif \ No newline at end of file +#endif diff --git a/Gui/skin/skin.c b/Gui/skin/skin.c index 5cf64471ad..c3f81a1637 100644 --- a/Gui/skin/skin.c +++ b/Gui/skin/skin.c @@ -10,12 +10,12 @@ #include "../language.h" #include "../../config.h" -char SkinDir[] = "/.mplayer/Skin/"; -char * Skin; +//char SkinDir[] = "/.mplayer/Skin/"; +//char * Skin; listItems * skinAppMPlayer = &appMPlayer; -listItems * skinAppTV = &appTV; -listItems * skinAppRadio = &appRadio; +//listItems * skinAppTV = &appTV; +//listItems * skinAppRadio = &appRadio; int linenumber; @@ -118,8 +118,8 @@ int __base( char * in ) CHECKWINLIST( "base" ); cutItem( in,fname,',',0 ); - cutItem( in,tmp,',',1 ); x=atoi( tmp ); - cutItem( in,tmp,',',2 ); y=atoi( tmp ); + x=cutItemToInt( in,',',1 ); + y=cutItemToInt( in,',',2 ); #ifdef DEBUG dbprintf( 3,"\n[skin] base: %s x: %d y: %d\n",fname,x,y ); #endif @@ -140,18 +140,19 @@ int __base( char * in ) defList->main.Mask.Image=(char *)calloc( 1,defList->main.Mask.ImageSize ); if ( defList->main.Mask.Image == NULL ) message( True,langNEMFMM ); { - int i,b,c=0; unsigned long * buf = NULL; unsigned char tmp = 0; + int i,b,c=0; unsigned long * buf = NULL; unsigned char tmp = 0; int nothaveshape = 1; buf=(unsigned long *)defList->main.Bitmap.Image; for ( b=0,i=0;i < defList->main.Mask.Width * defList->main.Mask.Height;i++ ) { if ( buf[i] != 0x00ff00ff ) tmp=( tmp >> 1 )|128; - else { tmp=tmp >> 1; buf[i]=0; } - if ( b++ == 7 ) { defList->main.Mask.Image[c++]=tmp; tmp=0; b=0; } + else { tmp=tmp >> 1; buf[i]=nothaveshape=0; } + if ( b++ == 7 ) { defList->main.Mask.Image[c++]=tmp; tmp=b=0; } } - if (b) defList->main.Mask.Image[c++]=tmp; + if ( b ) defList->main.Mask.Image[c]=tmp; + if ( nothaveshape ) { free( defList->main.Mask.Image ); defList->main.Mask.Image=NULL; } } #ifdef DEBUG - dbprintf( 3,"[skin] mask: %dX%d\n",defList->main.Mask.Width,defList->main.Mask.Height ); + dbprintf( 3,"[skin] mask: %dx%d\n",defList->main.Mask.Width,defList->main.Mask.Height ); #endif #else defList->main.Mask.Image=NULL; @@ -204,16 +205,14 @@ int __base( char * in ) int __background( char * in ) { - unsigned char tmp[512]; - CHECKDEFLIST( "background" ); CHECKWINLIST( "background" ); if ( !strcmp( winList,"sub" ) ) { - cutItem( in,tmp,',',0 ); defList->subR=atoi( tmp ); - cutItem( in,tmp,',',1 ); defList->subG=atoi( tmp ); - cutItem( in,tmp,',',2 ); defList->subB=atoi( tmp ); + defList->subR=cutItemToInt( in,',',0 ); + defList->subG=cutItemToInt( in,',',1 ); + defList->subB=cutItemToInt( in,',',2 ); #ifdef DEBUG dbprintf( 3,"\n[skin] subwindow background color is #%x%x%x.\n",defList->subR,defList->subG,defList->subB ); #endif @@ -231,13 +230,11 @@ int __button( char * in ) CHECKDEFLIST( "button" ); CHECKWINLIST( "button" ); -// button=prev,17,89,23,18,Up,evPrev - cutItem( in,fname,',',0 ); - cutItem( in,tmp,',',1 ); x=atoi( tmp ); - cutItem( in,tmp,',',2 ); y=atoi( tmp ); - cutItem( in,tmp,',',3 ); sx=atoi( tmp ); - cutItem( in,tmp,',',4 ); sy=atoi( tmp ); + x=cutItemToInt( in,',',1 ); + y=cutItemToInt( in,',',2 ); + sx=cutItemToInt( in,',',3 ); + sy=cutItemToInt( in,',',4 ); cutItem( in,msg,',',5 ); defList->NumberOfItems++; @@ -302,10 +299,10 @@ int __menu( char * in ) CHECKDEFLIST( "menu" ); CHECKWINLIST( "menu" ); - cutItem( in,tmp,',',0 ); x=atoi( tmp ); - cutItem( in,tmp,',',1 ); y=atoi( tmp ); - cutItem( in,tmp,',',2 ); sx=atoi( tmp ); - cutItem( in,tmp,',',3 ); sy=atoi( tmp ); + x=cutItemToInt( in,',',0 ); + y=cutItemToInt( in,',',1 ); + sx=cutItemToInt( in,',',2 ); + sy=cutItemToInt( in,',',3 ); cutItem( in,tmp,',',4 ); msg=appFindMessage( tmp ); defList->NumberOfMenuItems++; @@ -342,15 +339,15 @@ int __hpotmeter( char * in ) CHECKWINLIST( "hpotmeter" ); cutItem( in,pfname,',',0 ); - cutItem( in,tmp,',',1 ); psx=atoi( tmp ); - cutItem( in,tmp,',',2 ); psy=atoi( tmp ); + psx=cutItemToInt( in,',',1 ); + psy=cutItemToInt( in,',',2 ); cutItem( in,phfname,',',3 ); - cutItem( in,tmp,',',4 ); ph=atoi( tmp ); - cutItem( in,tmp,',',5 ); d=atoi( tmp ); - cutItem( in,tmp,',',6 ); x=atoi( tmp ); - cutItem( in,tmp,',',7 ); y=atoi( tmp ); - cutItem( in,tmp,',',8 ); sx=atoi( tmp ); - cutItem( in,tmp,',',9 ); sy=atoi( tmp ); + ph=cutItemToInt( in,',',4 ); + d=cutItemToInt( in,',',5 ); + x=cutItemToInt( in,',',6 ); + y=cutItemToInt( in,',',7 ); + sx=cutItemToInt( in,',',8 ); + sy=cutItemToInt( in,',',9 ); cutItem( in,tmp,',',10 ); msg=appFindMessage( tmp ); #ifdef DEBUG @@ -400,12 +397,12 @@ int __potmeter( char * in ) CHECKWINLIST( "potmeter" ); cutItem( in,phfname,',',0 ); - cutItem( in,tmp,',',1 ); ph=atoi( tmp ); - cutItem( in,tmp,',',2 ); d=atoi( tmp ); - cutItem( in,tmp,',',3 ); x=atoi( tmp ); - cutItem( in,tmp,',',4 ); y=atoi( tmp ); - cutItem( in,tmp,',',5 ); sx=atoi( tmp ); - cutItem( in,tmp,',',6 ); sy=atoi( tmp ); + ph=cutItemToInt( in,',',1 ); + d=cutItemToInt( in,',',2 ); + x=cutItemToInt( in,',',3 ); + y=cutItemToInt( in,',',4 ); + sx=cutItemToInt( in,',',5 ); + sy=cutItemToInt( in,',',6 ); cutItem( in,tmp,',',7 ); msg=appFindMessage( tmp ); #ifdef DEBUG @@ -488,8 +485,8 @@ int __slabel( char * in ) dbprintf( 3,"\n[skin] slabel\n" ); #endif - cutItem( in,tmp,',',0 ); x=atoi( tmp ); - cutItem( in,tmp,',',1 ); y=atoi( tmp ); + x=cutItemToInt( in,',',0 ); + y=cutItemToInt( in,',',1 ); cutItem( in,sid,',',2 ); id=fntFindID( sid ); if ( id < 0 ) { ERRORMESSAGE( "nonexistent font id. ( %s )\n",sid ); return 1; } cutItem( in,tmp,',',3 ); cutItem( tmp,tmp,'"',1 ); @@ -526,10 +523,10 @@ int __dlabel( char * in ) dbprintf( 3,"\n[skin] dlabel\n" ); #endif - cutItem( in,tmp,',',0 ); x=atoi( tmp ); - cutItem( in,tmp,',',1 ); y=atoi( tmp ); - cutItem( in,tmp,',',2 ); sx=atoi( tmp ); - cutItem( in,tmp,',',3 ); a=atoi( tmp ); + x=cutItemToInt( in,',',0 ); + y=cutItemToInt( in,',',1 ); + sx=cutItemToInt( in,',',2 ); + a=cutItemToInt( in,',',3 ); cutItem( in,sid,',',4 ); id=fntFindID( sid ); if ( id < 0 ) { ERRORMESSAGE( "nonexistent font id. ( %s )\n",sid ); return 1; } cutItem( in,tmp,',',5 ); cutItem( tmp,tmp,'"',1 ); diff --git a/Gui/wm/ws.c b/Gui/wm/ws.c index 101bdcd378..bfb828f785 100644 --- a/Gui/wm/ws.c +++ b/Gui/wm/ws.c @@ -1143,10 +1143,14 @@ void wsScreenSaverOff( Display * mDisplay ) void wsSetShape( wsTWindow * win,char * data ) { #ifdef HAVE_XSHAPE - if ( ( !wsUseXShape )||( !data ) ) return; - win->Mask=XCreateBitmapFromData( wsDisplay,win->WindowID,data,win->Width,win->Height ); - XShapeCombineMask( wsDisplay,win->WindowID,ShapeBounding,0,0,win->Mask,ShapeSet ); - XFreePixmap( wsDisplay,win->Mask ); + if ( !wsUseXShape ) return; + if ( data ) + { + win->Mask=XCreateBitmapFromData( wsDisplay,win->WindowID,data,win->Width,win->Height ); + XShapeCombineMask( wsDisplay,win->WindowID,ShapeBounding,0,0,win->Mask,ShapeSet ); + XFreePixmap( wsDisplay,win->Mask ); + } + else XShapeCombineMask( wsDisplay,win->WindowID,ShapeBounding,0,0,None,ShapeSet ); #endif } diff --git a/libvo/sub.c b/libvo/sub.c index c9ee16d6e0..ff3a784605 100644 --- a/libvo/sub.c +++ b/libvo/sub.c @@ -163,7 +163,7 @@ inline static void vo_draw_text_sub(int dxs,int dys,void (*draw_alpha)(int x0,in t=vo_sub->text[i++]; len=strlen(t)-1; - printf("sub(%d) '%s'\n",len,t); +// printf("sub(%d) '%s'\n",len,t); // if(len<0) memy -=h; // according to max of vo_font->pic_a[font]->h // else for (j=0;j<=len;j++){ diff --git a/libvo/vo_x11.c b/libvo/vo_x11.c index c728485038..7ad2218acb 100644 --- a/libvo/vo_x11.c +++ b/libvo/vo_x11.c @@ -375,13 +375,11 @@ printf( "w: %d h: %d\n\n",vo_dwidth,vo_dheight ); #ifdef HAVE_NEW_GUI if ( vo_window == None ) #endif - XSelectInput( mDisplay,mywindow,StructureNotifyMask | KeyPressMask ); - + { + XSelectInput( mDisplay,mywindow,StructureNotifyMask | KeyPressMask ); + saver_off(mDisplay); + } X_already_started++; - -// vo_initthread( mThread ); - - saver_off(mDisplay); return 0; } @@ -553,9 +551,16 @@ static uint32_t query_format( uint32_t format ) static void uninit(void) { -saver_on(mDisplay); // screen saver back on +#ifdef HAVE_NEW_GUI + if ( vo_window == None ) +#endif + saver_on(mDisplay); // screen saver back on #ifdef HAVE_XF86VM + #ifdef HAVE_NEW_GUI + if ((vidmodes!=NULL)&&( vo_window == None ) ) + #else if (vidmodes!=NULL) + #endif { int screen; screen=DefaultScreen( mDisplay ); XF86VidModeSwitchToMode(mDisplay,screen,vidmodes[0]); @@ -563,7 +568,7 @@ saver_on(mDisplay); // screen saver back on free(vidmodes); } #endif - + XClearWindow( mDisplay,mywindow ); printf("vo: uninit!\n"); } diff --git a/libvo/vo_xmga.c b/libvo/vo_xmga.c index e6dae93142..d5c3d98cff 100644 --- a/libvo/vo_xmga.c +++ b/libvo/vo_xmga.c @@ -104,17 +104,12 @@ static void mDrawColorKey( void ) static void set_window(){ - XGetGeometry( mDisplay,mWindow,&mRoot,&drwX,&drwY,&drwWidth,&drwHeight,&drwBorderWidth,&drwDepth ); - drwX=0; drwY=0; // drwWidth=wndWidth; drwHeight=wndHeight; - XTranslateCoordinates( mDisplay,mWindow,mRoot,0,0,&drwcX,&drwcY,&mRoot ); - fprintf( stderr,"[xmga] dcx: %d dcy: %d dx: %d dy: %d dw: %d dh: %d\n",drwcX,drwcY,drwX,drwY,drwWidth,drwHeight ); - #ifdef HAVE_NEW_GUI if ( vo_window != None ) { mFullscreen=0; dwidth=mdwidth; dheight=mdheight; - if ( ( drwWidth == vo_screenwidth )&&( drwHeight == vo_screenheight ) ) + if ( ( vo_dwidth == vo_screenwidth )&&( vo_dheight == vo_screenheight ) ) { mFullscreen=1; dwidth=vo_screenwidth; @@ -123,6 +118,11 @@ static void set_window(){ } #endif + XGetGeometry( mDisplay,mWindow,&mRoot,&drwX,&drwY,&drwWidth,&drwHeight,&drwBorderWidth,&drwDepth ); + drwX=0; drwY=0; // drwWidth=wndWidth; drwHeight=wndHeight; + XTranslateCoordinates( mDisplay,mWindow,mRoot,0,0,&drwcX,&drwcY,&mRoot ); + fprintf( stderr,"[xmga] dcx: %d dcy: %d dx: %d dy: %d dw: %d dh: %d\n",drwcX,drwcY,drwX,drwY,drwWidth,drwHeight ); + if ( mFullscreen ) { drwX=( vo_screenwidth - (dwidth > vo_screenwidth?vo_screenwidth:dwidth) ) / 2; @@ -131,7 +131,7 @@ static void set_window(){ drwcY+=drwY; drwWidth=(dwidth > vo_screenwidth?vo_screenwidth:dwidth); drwHeight=(dheight > vo_screenheight?vo_screenheight:dheight); - //fprintf( stderr,"[xmga-fs] dcx: %d dcy: %d dx: %d dy: %d dw: %d dh: %d\n",drwcX,drwcY,drwX,drwY,drwWidth,drwHeight ); + fprintf( stderr,"[xmga-fs] dcx: %d dcy: %d dx: %d dy: %d dw: %d dh: %d\n",drwcX,drwcY,drwX,drwY,drwWidth,drwHeight ); } mDrawColorKey(); @@ -235,7 +235,8 @@ static uint32_t init( uint32_t width, uint32_t height, uint32_t d_width, uint32_ wndWidth=d_width; wndHeight=d_height; dwidth=d_width; dheight=d_height; #ifdef HAVE_NEW_GUI - mdwidth=d_width; mdheight=d_height; +// mdwidth=d_width; mdheight=d_height; + mdwidth=width; mdheight=height; #endif mFullscreen=fullscreen&1; @@ -294,13 +295,13 @@ static uint32_t init( uint32_t width, uint32_t height, uint32_t d_width, uint32_ else { mWindow=vo_window; - fprintf( stderr,"[xmga] width: %d height: %d d_width: %d d_height: %d\n",width,height,d_width,d_height ); - if ( vo_screenwidth != d_width ) - { - XMoveWindow( mDisplay,mWindow,( vo_screenwidth - d_width ) / 2,( vo_screenheight - d_height ) / 2 ); - XResizeWindow( mDisplay,mWindow,d_width,d_height ); - } - else mFullscreen=1; +// fprintf( stderr,"[xmga] width: %d height: %d d_width: %d d_height: %d\n",width,height,d_width,d_height ); +// if ( vo_screenwidth != d_width ) +// { +// XMoveWindow( mDisplay,mWindow,( vo_screenwidth - d_width ) / 2,( vo_screenheight - d_height ) / 2 ); +// XResizeWindow( mDisplay,mWindow,d_width,d_height ); +// } +// else mFullscreen=1; mGC=vo_gc; //XCreateGC( mDisplay,mWindow,GCForeground,&wGCV ); } #endif @@ -316,6 +317,8 @@ static uint32_t init( uint32_t width, uint32_t height, uint32_t d_width, uint32_ mga_vid_config.colkey_blue=255; if(mga_init()) return -1; + + set_window(); #ifdef HAVE_NEW_GUI if ( vo_window == None ) @@ -324,7 +327,11 @@ static uint32_t init( uint32_t width, uint32_t height, uint32_t d_width, uint32_ XFlush( mDisplay ); XSync( mDisplay,False ); } - saver_off(mDisplay); + +#ifdef HAVE_NEW_GUI + if ( vo_window == None ) +#endif + saver_off(mDisplay); return 0; } @@ -336,7 +343,11 @@ static const vo_info_t* get_info( void ) static void uninit(void) { - saver_on(mDisplay); +#ifdef HAVE_NEW_GUI + if ( vo_window == None ) +#endif + saver_on(mDisplay); mga_uninit(); + XClearWindow( mDisplay,mWindow ); printf("vo: uninit!\n"); } diff --git a/libvo/vo_xv.c b/libvo/vo_xv.c index c7dc6c0e38..a50958cbf3 100644 --- a/libvo/vo_xv.c +++ b/libvo/vo_xv.c @@ -475,14 +475,15 @@ static uint32_t query_format(uint32_t format) */ } -static void uninit(void) { -int i; +static void uninit(void) +{ + int i; #ifdef HAVE_NEW_GUI - if ( vo_window == None ) + if ( vo_window == None ) #endif - saver_on(mDisplay); // screen saver back on -for( i=0;i0){ case '/': { float mixer_l, mixer_r; mixer_getvolume( &mixer_l,&mixer_r ); - #ifdef HAVE_NEW_GUI - if ( use_gui ) mplShMem->Volume=( mixer_l + mixer_r ) / 2; - #endif if(c=='*' || c=='0'){ if ( ++mixer_l > 100 ) mixer_l = 100; if ( ++mixer_r > 100 ) mixer_r = 100; @@ -1611,7 +1608,7 @@ if(auto_quality>0){ osd_visible=sh_video->fps; // 1 sec vo_osd_progbar_type=OSD_VOLUME; vo_osd_progbar_value=((mixer_l+mixer_r)*256.0)/200.0; - // printf("volume: %d\n",vo_osd_progbar_value); + //printf("volume: %d\n",vo_osd_progbar_value); } #endif } @@ -1789,19 +1786,22 @@ if(rel_seek_secs || abs_seek_pos){ mplShMem->Position=(len<=0)?0:((float)(pos-demuxer->movi_start) / len * 100.0f); } mplShMem->TimeSec=d_video->pts; -// printf("mplShMem->Playing=%d \n",mplShMem->Playing); if(mplShMem->Playing==0) break; // STOP if(mplShMem->Playing==2) osd_function=OSD_PAUSE; -#ifdef USE_OSD - if ( ( osd_level )&&( mplShMem->VolumeChanged ) ) + if ( mplShMem->VolumeChanged ) { - osd_visible=sh_video->fps; // 1 sec - vo_osd_progbar_type=OSD_VOLUME; - vo_osd_progbar_value=((mplShMem->Volume )*256.0)/100.0; - } + mixer_setvolume( mplShMem->Volume,mplShMem->Volume ); + mplShMem->VolumeChanged=0; +#ifdef USE_OSD + if ( osd_level ) + { + osd_visible=sh_video->fps; // 1 sec + vo_osd_progbar_type=OSD_VOLUME; + vo_osd_progbar_value=( ( mplShMem->Volume ) * 256.0 ) / 100.0; + } #endif - mixer_setvolume( mplShMem->Volume,mplShMem->Volume ); - mplShMem->VolumeChanged=0; + } + mplShMem->Volume=(float)mixer_getbothvolume(); } #endif @@ -1883,6 +1883,7 @@ goto_next_file: // don't jump here after ao/vo/getch initialization! wsPostRedisplay( &appMPlayer.subWindow ); mplShMem->TimeSec=0; mplShMem->Position=0; + mplShMem->FrameDrop=0; } #endif -- cgit v1.2.3