render->counter_lock->unlock();
-// This locks the preferences
- if(mwindow) mwindow->preferences->copy_rates_from(preferences);
+ if( mwindow )
+ mwindow->preferences->copy_rates_from(preferences);
}
int MainPackageRenderer::progress_cancelled()
this->mwindow = mwindow;
in_progress = 0;
progress = 0;
- preferences = 0;
elapsed_time = 0.0;
package_lock = new Mutex("Render::package_lock");
counter_lock = new Mutex("Render::counter_lock");
completion = new Condition(0, "Render::completion");
progress_timer = new Timer;
range_type = RANGE_BACKCOMPAT;
+ preferences = new Preferences();
thread = new RenderThread(mwindow, this);
render_window = 0;
asset = 0;
delete package_lock;
delete counter_lock;
delete completion;
-// May be owned by someone else. This is owned by mwindow, so we don't care
-// about deletion.
-// delete preferences;
+ delete preferences;
delete progress_timer;
if( asset ) asset->Garbage::remove_user();
delete thread;
}
else if( in_progress ) {
int cx, cy;
- mwindow->gui->get_abs_cursor_xy(cx, cy, 1);
+ mwindow->gui->get_abs_cursor(cx, cy, 1);
ErrorBox error_box(_(PROGRAM_NAME ": Error"), cx, cy);
error_box.create_objects(_("Already rendering"));
error_box.raise_window();
}
else if( in_progress ) {
int cx, cy;
- mwindow->gui->get_abs_cursor_xy(cx, cy, 1);
+ mwindow->gui->get_abs_cursor(cx, cy, 1);
ErrorBox error_box(_(PROGRAM_NAME ": Error"), cx, cy);
error_box.create_objects("Already rendering");
error_box.raise_window();
}
void Render::start_batches(ArrayList<BatchRenderJob*> *jobs,
- BC_Hash *boot_defaults,
- Preferences *preferences)
+ BC_Hash *boot_defaults, Preferences *batch_prefs)
{
mode = Render::BATCH;
batch_cancelled = 0;
+ preferences->copy_from(batch_prefs);
this->jobs = jobs;
- this->preferences = preferences;
completion->reset();
-PRINT_TRACE
thread->run();
-PRINT_TRACE
- this->preferences = 0;
}
}
if( err_msg ) {
int cx, cy;
- mwindow->gui->get_abs_cursor_xy(cx, cy, 1);
+ mwindow->gui->get_abs_cursor(cx, cy, 1);
ErrorBox error_box(_(PROGRAM_NAME ": Error"),cx, cy);
error_box.create_objects(err_msg);
error_box.raise_window();
return 0;
}
-int Render::fix_strategy(int strategy, int use_renderfarm)
+int Render::get_strategy(int use_renderfarm, int file_per_label)
{
- if(use_renderfarm)
- {
- if(strategy == FILE_PER_LABEL)
- strategy = FILE_PER_LABEL_FARM;
- else
- if(strategy == SINGLE_PASS)
- strategy = SINGLE_PASS_FARM;
- }
- else
- {
- if(strategy == FILE_PER_LABEL_FARM)
- strategy = FILE_PER_LABEL;
- else
- if(strategy == SINGLE_PASS_FARM)
- strategy = SINGLE_PASS;
- }
- return strategy;
+ return use_renderfarm ?
+ (file_per_label ? FILE_PER_LABEL_FARM : SINGLE_PASS_FARM) :
+ (file_per_label ? FILE_PER_LABEL : SINGLE_PASS ) ;
+}
+int Render::get_strategy()
+{
+ return get_strategy(preferences->use_renderfarm, file_per_label);
}
void Render::start_progress()
int Render::load_defaults(Asset *asset)
{
- strategy = mwindow->defaults->get("RENDER_STRATEGY", SINGLE_PASS);
+ file_per_label = mwindow->defaults->get("RENDER_FILE_PER_LABEL", 0);
load_mode = mwindow->defaults->get("RENDER_LOADMODE", LOADMODE_NEW_TRACKS);
range_type = mwindow->defaults->get("RENDER_RANGE_TYPE", RANGE_PROJECT);
int Render::load_profile(int profile_slot, Asset *asset)
{
char string_name[100];
- sprintf(string_name, "RENDER_%i_STRATEGY", profile_slot);
- strategy = mwindow->defaults->get(string_name, SINGLE_PASS);
+ sprintf(string_name, "RENDER_%i_FILE_PER_LABEL", profile_slot);
+ file_per_label = mwindow->defaults->get(string_name, 0);
// Load mode is not part of the profile
// printf(string_name, "RENDER_%i_LOADMODE", profile_slot);
// load_mode = mwindow->defaults->get(string_name, LOADMODE_NEW_TRACKS);
int Render::save_defaults(Asset *asset)
{
- mwindow->defaults->update("RENDER_STRATEGY", strategy);
+ mwindow->defaults->update("RENDER_FILE_PER_LABEL", file_per_label);
mwindow->defaults->update("RENDER_LOADMODE", load_mode);
mwindow->defaults->update("RENDER_RANGE_TYPE", range_type);
render->progress = 0;
render->result = 0;
- if(mwindow)
- {
- if(!render->preferences)
- render->preferences = new Preferences;
-
- render->preferences->copy_from(mwindow->preferences);
- }
-
-
// Create rendering command
TransportCommand *command = new TransportCommand;
command->command = NORMAL_FWD;
if(mwindow) mwindow->stop_brender();
fs.complete_path(render->default_asset->path);
- strategy = Render::fix_strategy(strategy, render->preferences->use_renderfarm);
render->result = render->packages->create_packages(mwindow,
command->get_edl(),
{
if(debug) printf("Render::render %d\n", __LINE__);
int cx, cy;
- mwindow->gui->get_abs_cursor_xy(cx, cy, 1);
+ mwindow->gui->get_abs_cursor(cx, cy, 1);
ErrorBox error_box(_(PROGRAM_NAME ": Error"), cx, cy);
error_box.create_objects(_("Error rendering data."));
error_box.raise_window();
void RenderThread::run()
{
+ if( mwindow )
+ render->preferences->copy_from(mwindow->preferences);
+
if(render->mode == Render::INTERACTIVE)
{
render_single(1, render->asset, mwindow->edl,
- render->strategy, render->range_type);
+ render->get_strategy(), render->range_type);
}
else
if(render->mode == Render::BATCH)
edl->create_objects();
file->read_from_file(job->edl_path);
edl->load_xml(file, LOAD_ALL);
-
//PRINT_TRACE
- render_single(0, job->asset, edl, job->strategy, RANGE_BACKCOMPAT);
+ render_single(0, job->asset, edl, job->get_strategy(), RANGE_BACKCOMPAT);
//PRINT_TRACE
edl->Garbage::remove_user();
#define WIDTH 480
-#define HEIGHT 455
+#define HEIGHT 480
RenderWindow::RenderWindow(MWindow *mwindow,
this->mwindow = mwindow;
this->render = render;
this->asset = asset;
+ render_format = 0;
+ loadmode = 0;
+ renderprofile = 0;
rangeproject = 0;
rangeselection = 0;
rangeinout = 0;
RenderWindow::~RenderWindow()
{
-SET_TRACE
lock_window("RenderWindow::~RenderWindow");
-SET_TRACE
delete render_format;
-SET_TRACE
delete loadmode;
-SET_TRACE
+ delete renderprofile;
unlock_window();
-SET_TRACE
}
{
render->load_profile(profile_slot, asset);
update_range_type(render->range_type);
- render_format->update(asset, &render->strategy);
+ render_format->update(asset, &render->file_per_label);
}
int x = 10, y = 10;
lock_window("RenderWindow::create_objects");
add_subwindow(new BC_Title(x, y,
- (char*)((render->strategy == FILE_PER_LABEL ||
- render->strategy == FILE_PER_LABEL_FARM) ?
+ (char*)(render->file_per_label ?
_("Select the first file to render to:") :
_("Select a file to render to:"))));
y += 25;
render_format = new RenderFormat(mwindow, this, asset);
render_format->create_objects(x, y,
- 1, 1, 1, 1, 0, 1, 0, 0, &render->strategy, 0);
+ 1, 1, 1, 1, 0, 1, 0, 0, &render->file_per_label, 0);
BC_Title *title;
add_subwindow(title = new BC_Title(x, y, _("Render range:")));
if( is_image )
render->range_type = RANGE_1FRAME;
- int x1 = x + title->get_w() + 20, x2 = x1 + 140;
+ int x1 = x + title->get_w() + 20;
add_subwindow(rangeproject = new RenderRangeProject(this,
render->range_type == RANGE_PROJECT, x1, y));
- add_subwindow(range1frame = new RenderRange1Frame(this,
- render->range_type == RANGE_1FRAME, x2, y));
y += 20;
add_subwindow(rangeselection = new RenderRangeSelection(this,
render->range_type == RANGE_SELECTION, x1, y));
+ y += 20;
add_subwindow(rangeinout = new RenderRangeInOut(this,
- render->range_type == RANGE_INOUT, x2, y));
+ render->range_type == RANGE_INOUT, x1, y));
+ y += 20;
+ add_subwindow(range1frame = new RenderRange1Frame(this,
+ render->range_type == RANGE_1FRAME, x1, y));
y += 30;
if( is_image )