X-Git-Url: https://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fmwindow.C;h=6d4c8fb81ff7a68d81b25f6462c980de6c6d07a2;hb=3932d2c16e903573db3cacdb3102dea9639c6ca4;hp=10eb2dfb5fc5234706fd600006aa0906231dc79c;hpb=3bf30d220f7855b995b887dc10812ae3780e6805;p=goodguy%2Fcinelerra.git diff --git a/cinelerra-5.1/cinelerra/mwindow.C b/cinelerra-5.1/cinelerra/mwindow.C index 10eb2dfb..6d4c8fb8 100644 --- a/cinelerra-5.1/cinelerra/mwindow.C +++ b/cinelerra-5.1/cinelerra/mwindow.C @@ -249,6 +249,10 @@ MWindow::~MWindow() run_lock->lock("MWindow::~MWindow"); in_destructor = 1; //printf("MWindow::~MWindow %d\n", __LINE__); + if( wwindow && wwindow->is_running() ) + wwindow->close_window(); + if( twindow && twindow->is_running() ) + twindow->close_window(); gui->remote_control->deactivate(); gui->record->stop(); #ifdef HAVE_DVB @@ -286,16 +290,12 @@ MWindow::~MWindow() if( cwindow && cwindow->gui ) cwindow->gui->close(0); if( lwindow && lwindow->gui ) lwindow->gui->close(0); if( gwindow && gwindow->gui ) gwindow->gui->close(0); - if( twindow && twindow->is_running() ) twindow->close_window(); - if( wwindow && wwindow->is_running() ) wwindow->close_window(); vwindows.remove_all_objects(); zwindows.remove_all_objects(); gui->close(0); if( awindow ) awindow->join(); if( cwindow ) cwindow->join(); if( lwindow ) lwindow->join(); - if( twindow ) twindow->join(); - if( wwindow ) wwindow->join(); if( gwindow ) gwindow->join(); join(); #else @@ -307,8 +307,6 @@ MWindow::~MWindow() close_gui(cwindow); close_gui(lwindow); close_gui(gwindow); - close_gui(twindow); - close_gui(wwindow); vwindows.remove_all_objects(); zwindows.remove_all_objects(); gui->close(0); @@ -1291,7 +1289,7 @@ void MWindow::handle_mixers(EDL *edl, int command, int wait_tracking, track->record = track->play = 0; } zwindow->change_source(mixer_edl); - zwindow->handle_mixer(command, wait_tracking, + zwindow->handle_mixer(command, 0, use_inout, toggle_audio, loop_play, speed); } zwindows_lock->unlock(); @@ -1589,10 +1587,15 @@ void MWindow::init_exportedl() void MWindow::init_shuttle() { #ifdef HAVE_SHUTTLE - const char *dev_name = Shuttle::probe(); - if( dev_name ) { + int ret = Shuttle::probe(); + if( ret >= 0 ) { shuttle = new Shuttle(this); - shuttle->start(dev_name); + if( shuttle->read_config_file() > 0 ) { + printf("shuttle: bad config file\n"); + delete shuttle; shuttle = 0; + return; + } + shuttle->start(ret); } #endif } @@ -3079,12 +3082,11 @@ void MWindow::sync_parameters(int change_type) else { // Stop and restart int command = cwindow->playback_engine->command->command; - cwindow->playback_engine->transport_stop(); // Waiting for tracking to finish would make the restart position more // accurate but it can't lock the window to stop tracking for some reason. // Not waiting for tracking gives a faster response but restart position is // only as accurate as the last tracking update. - cwindow->playback_engine->interrupt_playback(0); + cwindow->playback_engine->transport_stop(0); cwindow->playback_engine->next_command->realtime = 1; cwindow->playback_engine->transport_command(command, change_type, edl, 0); }