X-Git-Url: https://git.cinelerra-gg.org/git/?p=goodguy%2Fcinelerra.git;a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fconvert.C;fp=cinelerra-5.1%2Fcinelerra%2Fconvert.C;h=45fff292840f8e60a97de0f187bf7a5e4053f393;hp=c6ecb0438ad271d89869f82a0357d75a3499164b;hb=c7754a695f7750177de8645709f5d30487a4ac45;hpb=13a039ef755e81e65c9479b4b615fd89bfe3e038 diff --git a/cinelerra-5.1/cinelerra/convert.C b/cinelerra-5.1/cinelerra/convert.C index c6ecb043..45fff292 100644 --- a/cinelerra-5.1/cinelerra/convert.C +++ b/cinelerra-5.1/cinelerra/convert.C @@ -71,10 +71,19 @@ ConvertRender::ConvertRender(MWindow *mwindow) result = 0; beep = 0; to_proxy = 0; + renderer = 0; } ConvertRender::~ConvertRender() { + if( running() ) { + canceled = 1; + if( renderer ) + renderer->set_result(1); + cancel(); + join(); + } + delete renderer; delete [] suffix; delete progress; delete counter_lock; @@ -515,19 +524,20 @@ void ConvertRender::create_copy(int i) Asset *needed_copy = needed_copies[i]; EDL *edl = convert_edl(mwindow->edl, orig_idxbl); double length = get_length(orig_idxbl); - ConvertPackageRenderer renderer(this); - renderer.initialize(mwindow, edl, mwindow->preferences, needed_copy); + renderer = new ConvertPackageRenderer(this); + renderer->initialize(mwindow, edl, mwindow->preferences, needed_copy); PackageDispatcher dispatcher; dispatcher.create_packages(mwindow, edl, mwindow->preferences, SINGLE_PASS, needed_copy, 0, length, 0); RenderPackage *package = dispatcher.get_package(0); - if( !renderer.render_package(package) ) { + if( !renderer->render_package(package) ) { Asset *asset = mwindow->edl->assets->update(needed_copy); mwindow->mainindexes->add_indexable(asset); mwindow->mainindexes->start_build(); } else failed = 1; + delete renderer; renderer = 0; edl->remove_user(); }