improve delays created by vicon drawing locks, reset_cache segv fix, gang track toolt...
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / packagedispatcher.C
index f6d69734d3738741e51108abbf817f569aea8ed7..dccec03a2896c3f8676a0f66b44f589b285bc090 100644 (file)
@@ -25,6 +25,7 @@
 #include "edl.h"
 #include "edlsession.h"
 #include "labels.h"
+#include "mainerror.h"
 #include "mutex.h"
 #include "mwindow.h"
 #include "packagedispatcher.h"
@@ -101,7 +102,7 @@ int PackageDispatcher::create_packages(MWindow *mwindow, EDL *edl,
                strcpy(packages[0]->path, default_asset->path);
                break;
        case SINGLE_PASS_FARM:
-               packaging_engine = File::new_packaging_engine(default_asset);
+               packaging_engine = (PackagingEngine*)new PackagingEngineDefault();
                packaging_engine->create_packages_single_farm(edl, preferences,
                                default_asset, total_start, total_end);
                break;
@@ -110,6 +111,11 @@ int PackageDispatcher::create_packages(MWindow *mwindow, EDL *edl,
                label = edl->labels->first;
                total_packages = 0;
                packages = new RenderPackage*[edl->labels->total() + 2];
+               if( !label ) {
+                       eprintf(_("Render file per label and no labels\n"));
+                       result = 1;
+                       break;
+               }
 
                Render::get_starting_number(default_asset->path,
                        current_number, number_start, total_digits, 3);
@@ -183,6 +189,7 @@ int PackageDispatcher::create_packages(MWindow *mwindow, EDL *edl,
 // Only if this isn't a background render or non interactive.
        if( strategy != BRENDER_FARM && test_overwrite && mwindow ) {
                ArrayList<char*> paths;
+               paths.set_array_delete();
                get_package_paths(&paths);
                result = ConfirmSave::test_files(mwindow, &paths);
                paths.remove_all_objects();
@@ -197,8 +204,7 @@ void PackageDispatcher::get_package_paths(ArrayList<char*> *path_list)
                        packaging_engine->get_package_paths(path_list);
                else {
                        for( int i=0; i<total_allocated; ++i )
-                               path_list->append(strdup(packages[i]->path));
-                       path_list->set_free();
+                               path_list->append(cstrdup(packages[i]->path));
                }
 
 }
@@ -322,6 +328,11 @@ int64_t PackageDispatcher::get_progress_max()
                                total_allocated * default_asset->sample_rate);
 }
 
+RenderPackage *PackageDispatcher::get_package(int number)
+{
+       return packages[number];
+}
+
 int PackageDispatcher::get_total_packages()
 {
        return total_allocated;