X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fmwindow.C;h=75dc29acaa32d70f80126e10c741c780e9620622;hb=ed1cab1d6cbde6129bbd09b9609f7bba03ab610f;hp=27aa6dfa121b3b9297108cd7a29b4a4fa4394712;hpb=5d04838af782e02954b28e9573a1f80769919441;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.1/cinelerra/mwindow.C b/cinelerra-5.1/cinelerra/mwindow.C index 27aa6dfa..75dc29ac 100644 --- a/cinelerra-5.1/cinelerra/mwindow.C +++ b/cinelerra-5.1/cinelerra/mwindow.C @@ -200,6 +200,8 @@ MWindow::MWindow() mainindexes = 0; mainprogress = 0; brender = 0; + brender_active = 0; + strcpy(cin_lang,"en"); channeldb_buz = new ChannelDB; channeldb_v4l2jpeg = new ChannelDB; //file_server = 0; @@ -229,6 +231,7 @@ MWindow::MWindow() MWindow::~MWindow() { run_lock->lock("MWindow::~MWindow"); + stop_playback(1); in_destructor = 1; //printf("MWindow::~MWindow %d\n", __LINE__); gui->stop_drawing(); @@ -469,7 +472,7 @@ void MWindow::check_language() if( !env_lang ) env_lang = getenv("LC_ALL"); if( !env_lang ) env_lang = getenv("LANG"); if( !env_lang ) { - snprintf(curr_lang, sizeof(curr_lang), "%s-%s.%s", + snprintf(curr_lang, sizeof(curr_lang), "%s_%s-%s", BC_Resources::language, BC_Resources::region, BC_Resources::encoding); env_lang = curr_lang; } @@ -486,6 +489,12 @@ void MWindow::check_language() ::remove(ladspa_path); defaults->save(); } + if( strlen(env_lang) > 1 && + ( env_lang[2] == 0 || env_lang[2] == '_' || env_lang[2] == '.' ) ) { + cin_lang[0] = env_lang[0]; cin_lang[1] = env_lang[1]; cin_lang[2] = 0; + } + else + strcpy(cin_lang, "en"); } void MWindow::get_plugin_path(char *path, const char *plug_dir, const char *fs_path) @@ -918,6 +927,7 @@ void MWindow::init_gwindow() void MWindow::init_tipwindow() { + TipWindow::load_tips(cin_lang); if( !twindow ) twindow = new TipWindow(this); twindow->start(); @@ -1163,12 +1173,14 @@ void MWindow::init_brender() session->brender_end = 0; brender_lock->unlock(); } - if(brender) brender->restart(edl); + brender_active = 0; + stop_brender(); } void MWindow::restart_brender() { //printf("MWindow::restart_brender 1\n"); + if(!brender_active || !preferences->use_brender) return; if(brender) brender->restart(edl); } @@ -1200,21 +1212,28 @@ int MWindow::brender_available(int position) return result; } -void MWindow::set_brender_range() +void MWindow::set_brender_active(int v, int update) { - edl->session->brender_start = edl->local_session->get_selectionstart(1); - edl->session->brender_end = edl->local_session->get_selectionend(1); + if( !preferences->use_brender ) v = 0; + brender_active = v; + gui->mainmenu->brender_active->set_checked(v); + if( v != 0 ) { + edl->session->brender_start = edl->local_session->get_selectionstart(1); + edl->session->brender_end = edl->local_session->get_selectionend(1); - if(EQUIV(edl->session->brender_end, edl->session->brender_start)) - { - edl->session->brender_end = edl->tracks->total_video_length(); + if(EQUIV(edl->session->brender_end, edl->session->brender_start)) { + edl->session->brender_end = edl->tracks->total_video_length(); + } + restart_brender(); + } + else + stop_brender(); + if( update ) { + gui->update_timebar(0); + gui->draw_overlays(1); } - - restart_brender(); - gui->draw_overlays(1); } - int MWindow::has_commercials() { return theme->use_commercials; @@ -1316,17 +1335,12 @@ void MWindow::stop_playback(int wait) int locked = gui->get_window_lock(); if( locked ) gui->unlock_window(); - cwindow->playback_engine->que->send_command(STOP, - CHANGE_NONE, - 0, - 0); - cwindow->playback_engine->interrupt_playback(wait); + cwindow->playback_engine->stop_playback(); for(int i = 0; i < vwindows.size(); i++) { VWindow *vwindow = vwindows[i]; if( !vwindow->is_running() ) continue; - vwindow->playback_engine->que->send_command(STOP, CHANGE_NONE, 0, 0); - vwindow->playback_engine->interrupt_playback(wait); + vwindow->playback_engine->stop_playback(); } if( locked ) gui->lock_window("MWindow::stop_playback"); } @@ -1451,11 +1465,9 @@ SET_TRACE case FILE_UNRECOGNIZED_CODEC: { // Test index file - IndexFile indexfile(this, new_asset); - result = indexfile.open_index(); - if(!result) - { - indexfile.close_index(); + { IndexFile indexfile(this, new_asset); + if( !(result = indexfile.open_index()) ) + indexfile.close_index(); } // Test existing EDLs @@ -1464,7 +1476,7 @@ SET_TRACE new_edls[j]->assets->get_asset(new_asset->path) : edl->assets->get_asset(new_asset->path); if( old_asset ) { - *new_asset = *old_asset; + new_asset->copy_from(old_asset,1); result = 0; } } @@ -1742,6 +1754,7 @@ if(debug) printf("MWindow::load_filenames %d\n", __LINE__); edl->local_session->loop_playback = 0; edl->local_session->set_selectionstart(0); edl->local_session->set_selectionend(0); + set_brender_active(0, 0); fit_selection(); goto_start(); } @@ -3586,6 +3599,7 @@ int MWindow::select_asset(Asset *asset, int vstream, int astream, int delete_tra else if( delete_tracks ) edl->tracks->delete_track(track); } + edl->retrack(); edl->resample(old_framerate, session->frame_rate, TRACK_VIDEO); } if( !result && asset->audio_data && asset->channels > 0 ) {