X-Git-Url: http://git.cinelerra-gg.org/git/?p=goodguy%2Fhistory.git;a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fmwindow.C;h=992e9f342823dff1d3cec31537a08a3269725982;hp=9de65dba075855f78b5c4aa1234f471cbb4350d1;hb=d54e2016ca0bea24cd4371058d0f75aeebdb044f;hpb=cb73d14fe59acbe8eba0a62f4af26a23072201fa diff --git a/cinelerra-5.1/cinelerra/mwindow.C b/cinelerra-5.1/cinelerra/mwindow.C index 9de65dba..992e9f34 100644 --- a/cinelerra-5.1/cinelerra/mwindow.C +++ b/cinelerra-5.1/cinelerra/mwindow.C @@ -230,6 +230,7 @@ MWindow::MWindow() screens = 1; in_destructor = 0; speed_edl = 0; + proxy_beep = 0; } @@ -244,6 +245,7 @@ MWindow::~MWindow() #ifdef HAVE_DVB gui->channel_info->stop(); #endif + delete proxy_beep; delete create_bd; create_bd = 0; delete create_dvd; create_dvd = 0; delete batch_render; batch_render = 0; @@ -1155,7 +1157,6 @@ void MWindow::del_mixer(ZWindow *zwindow) { zwindows_lock->lock("MWindow::del_mixer 0"); edl->mixers.del_mixer(zwindow->idx); - zwindow->idx = -1; if( session->selected_zwindow >= 0 ) { int i = zwindows.number_of(zwindow); if( i >= 0 && i < session->selected_zwindow ) @@ -1267,12 +1268,13 @@ void MWindow::stop_mixers() } } -void MWindow::close_mixers() +void MWindow::close_mixers(int destroy) { zwindows_lock->lock("MWindow::close_mixers"); - for( int i=0; i=0; ) { ZWindow *zwindow = zwindows[i]; if( zwindow->idx < 0 ) continue; + zwindow->destroy = destroy; ZWindowGUI *zgui = zwindow->zgui; zgui->lock_window("MWindow::select_zwindow 0"); zgui->set_done(0); @@ -1327,11 +1329,13 @@ void MWindow::create_mixers() for( int i=0; idrag_assets->size(); ++i ) { Indexable *indexable = session->drag_assets->get(i); + if( !indexable->have_video() ) continue; ZWindow *zwindow = create_mixer(indexable); new_mixers.append(zwindow); } for( int i=0; idrag_clips->size(); ++i ) { Indexable *indexable = (Indexable*)session->drag_clips->get(i); + if( !indexable->have_video() ) continue; ZWindow *zwindow = create_mixer(indexable); new_mixers.append(zwindow); } @@ -1628,37 +1632,49 @@ void MWindow::set_brender_active(int v, int update) int MWindow::has_commercials() { +#ifdef HAVE_COMMERCIAL return theme->use_commercials; +#else + return 0; +#endif } void MWindow::init_commercials() { +#ifdef HAVE_COMMERCIAL if( !commercials ) { commercials = new Commercials(this); commercial_active = 0; } else commercials->add_user(); +#endif } void MWindow::commit_commercial() { +#ifdef HAVE_COMMERCIAL if( !commercial_active ) return; commercial_active = 0; if( !commercials ) return; commercials->commitDb(); +#endif } void MWindow::undo_commercial() { +#ifdef HAVE_COMMERCIAL if( !commercial_active ) return; commercial_active = 0; if( !commercials ) return; commercials->undoDb(); +#endif } int MWindow::put_commercial() { + int result = 0; +#ifdef HAVE_COMMERCIAL double start = edl->local_session->get_selectionstart(); double end = edl->local_session->get_selectionend(); if( start >= end ) return 0; @@ -1666,7 +1682,6 @@ int MWindow::put_commercial() const char *errmsg = 0; int count = 0; Tracks *tracks = edl->tracks; - int result = 0; //check it for(Track *track=tracks->first; track && !errmsg; track=track->next) { if( track->data_type != TRACK_VIDEO ) continue; @@ -1719,6 +1734,7 @@ int MWindow::put_commercial() undo_commercial(); result = 1; } +#endif return result; } @@ -1745,6 +1761,12 @@ void MWindow::stop_transport() gui->stop_transport(gui->get_window_lock() ? "MWindow::stop_transport" : 0); } +void MWindow::beep(double freq, double secs, double gain) +{ + if( !proxy_beep ) proxy_beep = new ProxyBeep(this); + proxy_beep->tone(freq, secs, gain); +} + int MWindow::load_filenames(ArrayList *filenames, int load_mode, int update_filename) @@ -2114,6 +2136,7 @@ if(debug) printf("MWindow::load_filenames %d\n", __LINE__); edl->session->proxy_scale = 1; edl->session->proxy_use_scaler = 0; edl->session->proxy_auto_scale = 0; + edl->session->proxy_beep = 0; edl->local_session->preview_start = 0; edl->local_session->preview_end = 0; edl->local_session->loop_playback = 0; @@ -2143,8 +2166,14 @@ if(debug) printf("MWindow::load_filenames %d\n", __LINE__); } } gui->unlock_window(); // to update progress bar - render_proxy(orig_idxbls); + int ret = render_proxy(orig_idxbls); gui->lock_window("MWindow::load_filenames"); + if( ret >= 0 && edl->session->proxy_beep ) { + if( ret > 0 ) + beep(2000., 1.5, 0.5); + else + beep(4000., 0.25, 0.5); + } } // need to update undo before project, since mwindow is unlocked & a new load @@ -2191,7 +2220,7 @@ if(debug) printf("MWindow::load_filenames %d\n", __LINE__); return 0; } -void MWindow::render_proxy(ArrayList &new_idxbls) +int MWindow::render_proxy(ArrayList &new_idxbls) { Asset *format_asset = new Asset; format_asset->format = FILE_FFMPEG; @@ -2219,6 +2248,7 @@ void MWindow::render_proxy(ArrayList &new_idxbls) &proxy_render.orig_idxbls, &proxy_render.orig_proxies); } format_asset->remove_user(); + return !result ? proxy_render.needed_proxies.size() : -1; } void MWindow::test_plugins(EDL *new_edl, char *path) @@ -3272,7 +3302,7 @@ void MWindow::update_project(int load_mode) } if(debug) PRINT_TRACE select_zwindow(0); - close_mixers(); + close_mixers(0); for( int i=0; imixers.size(); ++i ) { Mixer *mixer = edl->mixers[i];