X-Git-Url: https://git.cinelerra-gg.org/git/?p=goodguy%2Fcinelerra.git;a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fzwindow.C;h=786ecc5449e1342f2f7fdcf5d4282fd3fbfc1d15;hp=6508b9e457673f05853e4bc9258d15cfdc8db445;hb=3abbd84aa85907d646b13c98295ce778d2a71215;hpb=3bf30d220f7855b995b887dc10812ae3780e6805 diff --git a/cinelerra-5.1/cinelerra/zwindow.C b/cinelerra-5.1/cinelerra/zwindow.C index 6508b9e4..786ecc54 100644 --- a/cinelerra-5.1/cinelerra/zwindow.C +++ b/cinelerra-5.1/cinelerra/zwindow.C @@ -32,6 +32,7 @@ #include "renderengine.h" #include "timelinepane.h" #include "track.h" +#include "tracks.h" #include "transportque.h" #include "zwindow.h" #include "zwindowgui.h" @@ -185,7 +186,6 @@ ZWindow::ZWindow(MWindow *mwindow) idx = -1; edl = 0; highlighted = 0; - destroy = 1; title[0] = 0; zgui = 0; } @@ -207,7 +207,8 @@ BC_Window* ZWindow::new_gui() void ZWindow::handle_done_event(int result) { - if( destroy ) + stop_playback(1); + if( result ) mwindow->del_mixer(this); idx = -1; } @@ -218,12 +219,11 @@ void ZWindow::handle_close_event(int result) void ZWindow::change_source(EDL *edl) { - if( this->edl && edl != this->edl ) + if( this->edl == edl ) return; + zgui->playback_engine->refresh_frame(CHANGE_ALL, edl); + if( this->edl ) this->edl->remove_user(); this->edl = edl; - if( edl != 0 ) { - zgui->playback_engine->refresh_frame(CHANGE_ALL, edl); - } } void ZWindow::stop_playback(int wait) @@ -259,10 +259,20 @@ void ZWindow::update_mixer_ids() void ZWindow::set_title(const char *tp) { + Track *track = 0; Mixer *mixer = mwindow->edl->mixers.get_mixer(idx); - if( mixer ) mixer->set_title(tp); + if( mixer ) { + mixer->set_title(tp); + for( track=mwindow->edl->tracks->first; track; track=track->next ) { + if( track->data_type != TRACK_VIDEO ) continue; + int mixer_id = track->get_mixer_id(); + int k = mixer->mixer_ids.size(); + while( --k >= 0 && mixer_id != mixer->mixer_ids[k] ); + if( k >= 0 ) break; + } + } char *cp = title, *ep = cp + sizeof(title)-1; - cp += snprintf(title, ep-cp, _("Mixer %d"), idx); + cp += snprintf(title, ep-cp, track ? track->title : _("Mixer %d"), idx); if( tp ) cp += snprintf(cp, ep-cp, ": %s", tp); *cp = 0; }