From d751518e07385c327359fd1ee6d2a6c7c21e5a5a Mon Sep 17 00:00:00 2001 From: pontscho Date: Thu, 7 Mar 2002 11:57:33 +0000 Subject: [PATCH] small bug fixed and workarounds :( git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@4975 b3059339-0415-0410-9bf9-f77b7e298cf2 --- Gui/interface.h | 1 + Gui/mplayer/mw.h | 1 - libvo/x11_common.c | 13 +++++++++--- mplayer.c | 52 ++++++++++++++++++++-------------------------- playtree.c | 2 -- 5 files changed, 34 insertions(+), 35 deletions(-) diff --git a/Gui/interface.h b/Gui/interface.h index f1e24b29a2..2c8e16140b 100644 --- a/Gui/interface.h +++ b/Gui/interface.h @@ -102,6 +102,7 @@ extern guiInterface_t guiIntfStruct; #define guiSetPause 2 extern void guiInit( int argc,char* argv[], char *envp[] ); +extern void guiDone( void ); extern void guiGetEvent( int type,char * arg ); extern void guiEventHandling( void ); diff --git a/Gui/mplayer/mw.h b/Gui/mplayer/mw.h index 745349d573..fc39df24ef 100644 --- a/Gui/mplayer/mw.h +++ b/Gui/mplayer/mw.h @@ -208,7 +208,6 @@ void mplEventHandling( int msg,float param ) { // --- user events case evExit: - wsDoExit(); // sets wsTrue=False; exit_player( "Exit" ); break; diff --git a/libvo/x11_common.c b/libvo/x11_common.c index 5a7a12373f..d5ab2db3b5 100644 --- a/libvo/x11_common.c +++ b/libvo/x11_common.c @@ -473,9 +473,16 @@ int vo_x11_check_events(Display *mydisplay){ ret|=VO_EVENT_RESIZE; break; case KeyPress: - XLookupString( &Event.xkey,buf,sizeof(buf),&keySym,&stat ); - vo_x11_putkey( ( (keySym&0xff00) != 0?( (keySym&0x00ff) + 256 ):( keySym ) ) ); - ret|=VO_EVENT_KEYPRESS; + { + int key; + XLookupString( &Event.xkey,buf,sizeof(buf),&keySym,&stat ); + key=( (keySym&0xff00) != 0?( (keySym&0x00ff) + 256 ):( keySym ) ); + #ifdef HAVE_NEW_GUI + if ( ( use_gui )&&( key == wsEnter ) ) break; + #endif + vo_x11_putkey( key ); + ret|=VO_EVENT_KEYPRESS; + } break; #ifdef HAVE_NEW_INPUT case ButtonPress: diff --git a/mplayer.c b/mplayer.c index 5703233212..85ff707b68 100644 --- a/mplayer.c +++ b/mplayer.c @@ -749,7 +749,7 @@ current_module = NULL; if(use_gui){ guiInit( argc,argv,envp ); inited_flags|=INITED_GUI; - guiGetEvent( guiCEvent,(gui_no_filename) ? 0 : 1 ); + guiGetEvent( guiCEvent,(char *)((gui_no_filename) ? 0 : 1) ); } #endif @@ -769,7 +769,7 @@ if(!use_stdin && !slave_mode){ if ( guiIntfStruct.DVDChanged ) { guiIntfStruct.DVDChanged=0; - guiGetEvent( guiCEvent,guiSetPlay ); + guiGetEvent( guiCEvent,(char *)guiSetPlay ); filename="/dev/dvd"; goto play_dvd; } @@ -795,21 +795,12 @@ play_dvd: { play_tree_t * entry = play_tree_new(); play_tree_add_file( entry,guiIntfStruct.Filename ); - if ( playtree ) + if ( playtree ) play_tree_free_list( playtree->child,1 ); + else playtree=play_tree_new(); + play_tree_set_child( playtree,entry ); + if(playtree) { - play_tree_free_list( playtree->child,1 ); - play_tree_set_child( playtree,entry ); - } - else - { - fprintf( stderr,"[mplayer] new playtree created.\n" ); - if ( !playtree ) playtree=play_tree_new(); - play_tree_set_child( playtree,entry ); - } - - if(playtree->child) - { - playtree_iter = play_tree_iter_new(playtree->child,mconfig); + playtree_iter = play_tree_iter_new(playtree,mconfig); if(playtree_iter) { if(play_tree_iter_step(playtree_iter,0,0) != PLAY_TREE_ITER_ENTRY) @@ -820,8 +811,9 @@ play_dvd: filename = play_tree_iter_get_file(playtree_iter,1); } } +// filename=playtree->child->files[0]; guiIntfStruct.FilenameChanged=0; - } + } } #endif @@ -2034,7 +2026,7 @@ read_input: fflush(stdout); } #ifdef HAVE_NEW_GUI - if(use_gui) guiGetEvent( guiCEvent,guiSetPause ); + if(use_gui) guiGetEvent( guiCEvent,(char *)guiSetPause ); #endif if (video_out && sh_video) video_out->control(VOCTRL_PAUSE, NULL); @@ -2091,7 +2083,7 @@ read_input: video_out->control(VOCTRL_RESUME, NULL); // resume video (void)GetRelativeTime(); // keep TF around FT in next cycle #ifdef HAVE_NEW_GUI - if (use_gui) guiGetEvent( guiCEvent,guiSetPlay ); + if (use_gui) guiGetEvent( guiCEvent,(char *)guiSetPlay ); #endif } @@ -2903,6 +2895,18 @@ if(benchmark){ ,our_n_frames,bench_dropped_frames); } +#ifdef HAVE_NEW_GUI + if( use_gui ) + { +#ifdef USE_DVDREAD + if ( !guiIntfStruct.DVDChanged ) +#endif + mplStop(); +#warning workaround for kiba playtree with gui ... if i dont play the prev/next file, then playtree sig6 (assert) + eof=0; + } +#endif + if(eof == PT_NEXT_ENTRY || eof == PT_PREV_ENTRY) { eof = eof == PT_NEXT_ENTRY ? 1 : -1; if(play_tree_iter_step(playtree_iter,eof,0) == PLAY_TREE_ITER_ENTRY) { @@ -2930,16 +2934,6 @@ uninit_player(INITED_VO); if(eof == 0) eof = 1; -#ifdef HAVE_NEW_GUI - if(use_gui) - { -#ifdef USE_DVDREAD - if ( !guiIntfStruct.DVDChanged ) -#endif - mplStop(); - } -#endif - while(playtree_iter != NULL) { filename = play_tree_iter_get_file(playtree_iter,eof); if(filename == NULL) { diff --git a/playtree.c b/playtree.c index f29cf0b287..c838cc1223 100644 --- a/playtree.c +++ b/playtree.c @@ -442,7 +442,6 @@ play_tree_iter_new(play_tree_t* pt,m_config_t* config) { void play_tree_iter_free(play_tree_iter_t* iter) { - if ( !iter ) return; #ifdef MP_DEBUG assert(iter != NULL); #endif @@ -461,7 +460,6 @@ int play_tree_iter_step(play_tree_iter_t* iter, int d,int with_nodes) { play_tree_t* pt; - if ( !iter ) return PLAY_TREE_ITER_ERROR; #ifdef MP_DEBUG assert(iter != NULL); assert(iter->root != NULL);