X-Git-Url: https://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fdvdcreate.C;h=f3c817a38a87ce6d81f6849b51d201dff7c86005;hb=ddabb22a495f457ece1d845fe2c32ddf2fc27b58;hp=c752ba812a8feda6437f8d59bf916157637fbcc1;hpb=29cc4023b50d6f7f9ab518978d8c9e839832b900;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.1/cinelerra/dvdcreate.C b/cinelerra-5.1/cinelerra/dvdcreate.C index c752ba81..f3c817a3 100644 --- a/cinelerra-5.1/cinelerra/dvdcreate.C +++ b/cinelerra-5.1/cinelerra/dvdcreate.C @@ -1,4 +1,5 @@ #include "asset.h" +#include "bchash.h" #include "clip.h" #include "dvdcreate.h" #include "edl.h" @@ -83,7 +84,7 @@ const double CreateDVD_Thread::DVD_KAUDIO_RATE = 224; CreateDVD_MenuItem::CreateDVD_MenuItem(MWindow *mwindow) : BC_MenuItem(_("DVD Render..."), _("Shift-D"), 'D') { - set_shift(1); + set_shift(1); this->mwindow = mwindow; } @@ -126,7 +127,7 @@ CreateDVD_Thread::~CreateDVD_Thread() } int CreateDVD_Thread::create_dvd_jobs(ArrayList *jobs, - const char *tmp_path, const char *asset_title) + const char *asset_dir, const char *asset_title) { EDL *edl = mwindow->edl; if( !edl || !edl->session ) { @@ -145,9 +146,6 @@ int CreateDVD_Thread::create_dvd_jobs(ArrayList *jobs, return 1; } - char asset_dir[BCTEXTLEN]; - sprintf(asset_dir, "%s/%s", tmp_path, asset_title); - if( mkdir(asset_dir, 0777) ) { char err[BCTEXTLEN], msg[BCTEXTLEN]; strerror_r(errno, err, sizeof(err)); @@ -339,7 +337,7 @@ int CreateDVD_Thread::create_dvd_jobs(ArrayList *jobs, jobs->append(job); strcpy(&job->edl_path[0], xml_filename); asset = job->asset; - + sprintf(&asset->path[0],"%s/dvd.ac3", asset_dir); asset->audio_data = 1; asset->format = FILE_AC3; @@ -365,6 +363,7 @@ int CreateDVD_Thread::create_dvd_jobs(ArrayList *jobs, void CreateDVD_Thread::handle_close_event(int result) { if( result ) return; + mwindow->defaults->update("WORK_DIRECTORY", tmp_path); mwindow->batch_render->load_defaults(mwindow->defaults); mwindow->undo->update_undo_before(); KeyFrame keyframe; char data[BCTEXTLEN]; @@ -436,19 +435,22 @@ void CreateDVD_Thread::handle_close_event(int result) keyframe.set_data(data); insert_video_plugin("Histogram", &keyframe); } - mwindow->batch_render->reset(1); - create_dvd_jobs(&mwindow->batch_render->jobs, tmp_path, asset_title); - mwindow->save_backup(); + char asset_dir[BCTEXTLEN], jobs_path[BCTEXTLEN]; + sprintf(asset_dir, "%s/%s", tmp_path, asset_title); + sprintf(jobs_path, "%s/dvd.jobs", asset_dir); + mwindow->batch_render->reset(jobs_path); + int ret = create_dvd_jobs(&mwindow->batch_render->jobs, asset_dir, asset_title); mwindow->undo->update_undo_after(_("create dvd"), LOAD_ALL); mwindow->resync_guis(); - mwindow->batch_render->handle_close_event(0); + if( ret ) return; + mwindow->batch_render->save_jobs(); mwindow->batch_render->start(); } BC_Window* CreateDVD_Thread::new_gui() { - memset(tmp_path,0,sizeof(tmp_path)); strcpy(tmp_path,"/tmp"); + mwindow->defaults->get("WORK_DIRECTORY", tmp_path); memset(asset_title,0,sizeof(asset_title)); time_t dt; time(&dt); struct tm dtm; localtime_r(&dt, &dtm); @@ -491,7 +493,7 @@ BC_Window* CreateDVD_Thread::new_gui() if( output_h != dvd_norms[norm].h ) continue; int aspect = dvd_formats[i].aspect; double dvd_aspect_ratio = - (double)dvd_aspects[aspect].w / dvd_aspects[aspect].h; + (double)dvd_aspects[aspect].w / dvd_aspects[aspect].h; if( !EQUIV(aspect_ratio, dvd_aspect_ratio) ) continue; has_standard = i; break; } @@ -771,7 +773,7 @@ void CreateDVD_GUI::create_objects() tmp_x = x + title->get_w(); tmp_y = y; tmp_path = new CreateDVD_TmpPath(this, tmp_x, tmp_y, get_w()-tmp_x-35); add_subwindow(tmp_path); - btmp_path = new BrowseButton(thread->mwindow, this, tmp_path, + btmp_path = new BrowseButton(thread->mwindow->theme, this, tmp_path, tmp_x+tmp_path->get_w(), tmp_y, "/tmp", _("Work path"), _("Select a Work directory:"), 1); add_subwindow(btmp_path);