#include "mwindow.h"
#include "performanceprefs.h"
#include "preferences.h"
+#include <ctype.h>
#include <string.h>
#include "theme.h"
{
int x, y;
int xmargin1;
- int xmargin2 = 170;
- int xmargin3 = 250;
- int xmargin4 = 380;
+ int xmargin2 = 180;
+ int xmargin3 = 260;
+ int xmargin4 = 420;
char string[BCTEXTLEN];
BC_Resources *resources = BC_WindowBase::get_resources();
BC_WindowBase *win;
- int maxw, curw, y1;
+ int maxw, curw;
node_list = 0;
generate_node_list();
xmargin1 = x = mwindow->theme->preferencesoptions_x;
y = mwindow->theme->preferencesoptions_y;
-// add_subwindow(new BC_Title(x,
-// y,
-// _("Time Format"),
-// LARGEFONT,
-// resources->text_default));
-//
-// y += get_text_height(LARGEFONT) + 5;
-
- int ybx[2];
- ybx[0] = y;
-
+ int y0 = y;
win = add_subwindow(new BC_Title(x, y + 5, _("Cache size (MB):"), MEDIUMFONT, resources->text_default));
maxw = win->get_w();
- ybx[1] = y += 30;
+ int y1 = y += 30;
win = add_subwindow(new BC_Title(x, y + 5, _("Seconds to preroll renders:")));
if((curw = win->get_w()) > maxw)
maxw = curw;
maxw += x + 5;
- cache_size = new CICacheSize(maxw,
- ybx[0],
- pwindow,
- this);
+ cache_size = new CICacheSize(maxw, y0, pwindow, this);
cache_size->create_objects();
+
add_subwindow(new BC_Title(x, y + 5, _("Seconds to preroll renders:")));
- PrefsRenderPreroll *preroll = new PrefsRenderPreroll(pwindow,
- this,
- maxw,
- ybx[1]);
+ PrefsRenderPreroll *preroll = new PrefsRenderPreroll(pwindow, this, maxw, y1);
preroll->create_objects();
- int x1 = preroll->get_x() + preroll->get_w() + 20;
+ y += 30;
+
+ int x1 = x + xmargin4;
BC_Title *smp_title = new BC_Title(x1, y + 5, _("Project SMP cpus:"));
add_subwindow(smp_title);
int x2 = x1 + smp_title->get_w() + 5;
PrefsProjectSMP *proj_smp = new PrefsProjectSMP(pwindow, this, x2, y);
proj_smp->create_objects();
- y += 30;
PrefsForceUniprocessor *force_1cpu = new PrefsForceUniprocessor(pwindow, x, y);
add_subwindow(force_1cpu);
-
- x1 = force_1cpu->get_x() + force_1cpu->get_w() + 120;
-
- PrefsTrapSigSEGV *trap_segv = new PrefsTrapSigSEGV(this, x1, y);
- add_subwindow(trap_segv);
- x2 = x1 + trap_segv->get_w() + 10;
- add_subwindow(new BC_Title(x2, y, _("(must be root)"), MEDIUMFONT, RED));
- y += 30;
-
- PrefsTrapSigINTR *trap_intr = new PrefsTrapSigINTR(this, x1, y);
- add_subwindow(trap_intr);
- add_subwindow(new BC_Title(x2, y, _("(must be root)"), MEDIUMFONT, RED));
- ffmpeg_marker_indexes = new PrefsFFMPEGMarkerIndecies(this, x, y);
- add_subwindow(ffmpeg_marker_indexes);
- y += 30;
-
- ffmpeg_early_probe = new PrefsFFMPEGEarlyProbe(this, x, y);
- add_subwindow(ffmpeg_early_probe);
-
- yuv420p_dvdlace = new PrefsYUV420P_DVDlace(pwindow, this, x1, y);
- add_subwindow(yuv420p_dvdlace);
y += 30;
// Background rendering
add_subwindow(new BC_Title(x, y, _("Background Rendering (Video only)"), LARGEFONT, resources->text_default));
y1 = y += 30;
- win = add_subwindow(new PrefsUseBRender(pwindow,
- x,
- y));
+ win = add_subwindow(new PrefsUseBRender(pwindow, x, y));
y += win->get_h() + 10;
win = add_subwindow(new BC_Title(x, y, _("Frames per background rendering job:")));
y += win->get_h() + 5;
- PrefsBRenderFragment *brender_fragment = new PrefsBRenderFragment(pwindow,
- this,
- x + xmargin3,
- y);
+ PrefsBRenderFragment *brender_fragment = new PrefsBRenderFragment(pwindow, this,
+ x + xmargin3, y);
brender_fragment->create_objects();
y += brender_fragment->get_h() + 5;
win = add_subwindow(new BC_Title(x, y, _("Frames to preroll background:")));
y += win->get_h() + 5;
- PrefsBRenderPreroll *bpreroll = new PrefsBRenderPreroll(pwindow,
- this,
- x + xmargin3,
- y + 5);
+ PrefsBRenderPreroll *bpreroll = new PrefsBRenderPreroll(pwindow, this,
+ x + xmargin3, y + 5);
bpreroll->create_objects();
y += bpreroll->get_h() + 20;
-
x += xmargin4;
add_subwindow(new BC_Title(x, y1, _("Output for background rendering:")));
y1 += 20;
- brender_tools =
- new FormatTools(mwindow,
- this,
+ brender_tools = new FormatTools(mwindow, this,
pwindow->thread->preferences->brender_asset);
- brender_tools->create_objects(x,
- y1,
+ brender_tools->create_objects(x, y1,
0, // Include tools for audio
1, // Include tools for video
0, // Include checkbox for audio
1,
0, // Select compressors to be offered
0, // Prompt for recording options
- 0, // If nonzero, prompt for insertion strategy
+ 0, // prompt for use labels
1); // Supply file formats for background rendering
x = xmargin1;
add_subwindow(new BC_Bar(5, y, get_w() - 10));
y += 5;
add_subwindow(new BC_Title(x, y, _("Render Farm"), LARGEFONT, resources->text_default));
+ x1 = get_w() - BC_GenericButton::calculate_w(this, _("Reset rates")) - x;
+ add_subwindow(new PrefsRenderFarmReset(pwindow, this, x1, y));
x1 = x + xmargin4;
BC_Title *node_title = new BC_Title(x1, y, _("Nodes:"));
add_subwindow(node_title);
- x1 += node_title->get_w() + 25;
+ x1 += node_title->get_w() + 15;
sprintf(string, _(MASTER_NODE_FRAMERATE_TEXT),
pwindow->thread->preferences->local_rate);
add_subwindow(master_rate = new BC_Title(x1, y, string));
- y += 25;
- add_subwindow(node_list = new PrefsRenderFarmNodes(pwindow,
- this,
- x + xmargin4,
- y));
- y += 5;
- add_subwindow(new PrefsRenderFarm(pwindow, x, y));
- y += 30;
- add_subwindow(new BC_Title(x, y, _("Hostname:")));
+ add_subwindow(node_list = new PrefsRenderFarmNodes(pwindow, this, x + xmargin4, y+=25));
+ add_subwindow(new PrefsRenderFarm(pwindow, x, y+=5));
+ add_subwindow(new BC_Title(x, y+=30, _("Hostname:")));
add_subwindow(new BC_Title(x + xmargin3, y, _("Port:")));
-
- y += 25;
- add_subwindow(edit_node = new PrefsRenderFarmEditNode(pwindow,
- this,
- x,
- y));
- edit_port = new PrefsRenderFarmPort(pwindow,
- this,
- x + xmargin3,
- y);
+ add_subwindow(edit_node = new PrefsRenderFarmEditNode(pwindow, this, x, y+=25));
+ edit_port = new PrefsRenderFarmPort(pwindow, this, x+xmargin3, y);
edit_port->create_objects();
- y += 30;
-
-
- add_subwindow(new PrefsRenderFarmReplaceNode(pwindow,
- this,
- x,
- y));
- add_subwindow(new PrefsRenderFarmNewNode(pwindow,
- this,
- x + xmargin2,
- y));
- y += 30;
- add_subwindow(new PrefsRenderFarmDelNode(pwindow,
- this,
- x + xmargin2,
- y));
- add_subwindow(new PrefsRenderFarmSortNodes(pwindow,
- this,
- x,
- y));
- y += 30;
- add_subwindow(new PrefsRenderFarmReset(pwindow,
- this,
- x,
- y));
- y += 35;
- add_subwindow(new BC_Title(x,
- y,
- _("Total jobs to create:")));
- add_subwindow(new BC_Title(x,
- y + 30,
- _("(overridden if new file at each label is checked)")));
- PrefsRenderFarmJobs *jobs = new PrefsRenderFarmJobs(pwindow,
- this,
- x + xmargin3,
- y);
+ add_subwindow(new PrefsRenderFarmReplaceNode(pwindow, this, x, y+=30));
+ add_subwindow(new PrefsRenderFarmNewNode(pwindow, this, x+xmargin2, y));
+ add_subwindow(new PrefsRenderFarmSortNodes(pwindow, this, x, y+=30));
+ add_subwindow(new PrefsRenderFarmDelNode(pwindow, this, x+xmargin2, y));
+ add_subwindow(new BC_Title(x, y+=35, _("Client Watchdog Timeout:")));
+ renderfarm_watchdog = new PrefsRenderFarmWatchdog(pwindow, this, x+xmargin3, y-5);
+ renderfarm_watchdog->create_objects();
+ add_subwindow(new BC_Title(x, y+=35, _("Total jobs to create:")));
+ PrefsRenderFarmJobs *jobs = new PrefsRenderFarmJobs(pwindow, this,
+ x + xmargin3, y-5);
jobs->create_objects();
- y += 55;
-// add_subwindow(new PrefsRenderFarmVFS(pwindow,
-// this,
-// x,
-// y));
-// add_subwindow(new BC_Title(x,
-// y,
+ y += jobs->get_h() + 5;
+ win = add_subwindow(new BC_Title(x, y,
+ _("(overridden if new file at each label is checked)")));
+// y += win->get_h() + 5;
+// add_subwindow(new PrefsRenderFarmVFS(pwindow, this, x, y));
+// add_subwindow(new BC_Title(x, y,
// _("Filesystem prefix on remote nodes:")));
-// add_subwindow(new PrefsRenderFarmMountpoint(pwindow,
-// this,
-// x + xmargin3,
-// y));
+// add_subwindow(new PrefsRenderFarmMountpoint(pwindow, this, x + xmargin3, y));
// y += 30;
}
}
}
-static const char *titles[] =
-{
- N_("On"),
- N_("Hostname"),
- N_("Port"),
- N_("Framerate")
+
+static const char *default_titles[] = {
+ N_("On"), N_("Hostname"), N_("Port"), N_("Framerate")
};
-static int widths[] =
-{
- 30,
- 150,
- 50,
- 50
+static int default_widths[] = {
+ 30, 150, 50, 50
};
void PerformancePrefs::update_node_list()
{
- node_list->update(nodes,
- titles,
- widths,
- TOTAL_COLUMNS,
- node_list->get_xposition(),
- node_list->get_yposition(),
- node_list->get_selection_number(0, 0));
+ node_list->update_list();
+}
+
+void PrefsRenderFarmNodes::update_list()
+{
+ update(subwindow->nodes, titles, widths, PerformancePrefs::TOTAL_COLUMNS,
+ get_xposition(), get_yposition(), get_selection_number(0, 0));
}
}
-
-
-
-
PrefsBRenderFragment::PrefsBRenderFragment(PreferencesWindow *pwindow,
- PerformancePrefs *subwindow,
- int x,
- int y)
+ PerformancePrefs *subwindow, int x, int y)
: BC_TumbleTextBox(subwindow,
(int64_t)pwindow->thread->preferences->brender_fragment,
- (int64_t)1,
- (int64_t)65535,
- x,
- y,
- 100)
+ (int64_t)1, (int64_t)65535, x, y, 100)
{
this->pwindow = pwindow;
}
return 1;
}
-
-
-
-
-
-
-
-
-
-
-CICacheSize::CICacheSize(int x,
- int y,
- PreferencesWindow *pwindow,
- PerformancePrefs *subwindow)
+CICacheSize::CICacheSize(int x, int y,
+ PreferencesWindow *pwindow, PerformancePrefs *subwindow)
: BC_TumbleTextBox(subwindow,
(int64_t)pwindow->thread->preferences->cache_size / 0x100000,
(int64_t)MIN_CACHE_SIZE / 0x100000,
(int64_t)MAX_CACHE_SIZE / 0x100000,
- x,
- y,
- 100)
+ x, y, 100)
{
this->pwindow = pwindow;
set_increment(1);
}
-
-
-
-
-
-
-
-
-
PrefsRenderFarm::PrefsRenderFarm(PreferencesWindow *pwindow, int x, int y)
: BC_CheckBox(x,
y,
}
-
-
PrefsForceUniprocessor::PrefsForceUniprocessor(PreferencesWindow *pwindow, int x, int y)
: BC_CheckBox(x,
y,
return 1;
}
-PrefsTrapSigSEGV::PrefsTrapSigSEGV(PerformancePrefs *perf_prefs, int x, int y)
- : BC_CheckBox(x, y,
- perf_prefs->pwindow->thread->preferences->trap_sigsegv,
- _("trap sigSEGV"))
-{
- this->perf_prefs = perf_prefs;
-}
-PrefsTrapSigSEGV::~PrefsTrapSigSEGV()
-{
-}
-int PrefsTrapSigSEGV::handle_event()
-{
- perf_prefs->pwindow->thread->preferences->trap_sigsegv = get_value();
- return 1;
-}
-
-PrefsTrapSigINTR::PrefsTrapSigINTR(PerformancePrefs *perf_prefs, int x, int y)
- : BC_CheckBox(x, y,
- perf_prefs->pwindow->thread->preferences->trap_sigintr,
- _("trap sigINT"))
-{
- this->perf_prefs = perf_prefs;
-}
-PrefsTrapSigINTR::~PrefsTrapSigINTR()
-{
-}
-int PrefsTrapSigINTR::handle_event()
-{
- perf_prefs->pwindow->thread->preferences->trap_sigintr = get_value();
- return 1;
-}
-
-
-PrefsFFMPEGEarlyProbe::PrefsFFMPEGEarlyProbe(PerformancePrefs *perf_prefs, int x, int y)
- : BC_CheckBox(x, y,
- perf_prefs->pwindow->thread->preferences->ffmpeg_early_probe,
- _("On file open, ffmpeg probes early"))
-{
- this->perf_prefs = perf_prefs;
-}
-PrefsFFMPEGEarlyProbe::~PrefsFFMPEGEarlyProbe()
-{
-}
-
-int PrefsFFMPEGEarlyProbe::handle_event()
-{
- perf_prefs->pwindow->thread->preferences->ffmpeg_early_probe = get_value();
- return 1;
-}
-
-
-PrefsFFMPEGMarkerIndecies::PrefsFFMPEGMarkerIndecies(PerformancePrefs *perf_prefs, int x, int y)
- : BC_CheckBox(x, y,
- perf_prefs->pwindow->thread->preferences->ffmpeg_marker_indexes,
- _("build ffmpeg marker indexes"))
-{
- this->perf_prefs = perf_prefs;
-}
-PrefsFFMPEGMarkerIndecies::~PrefsFFMPEGMarkerIndecies()
-{
-}
-
-int PrefsFFMPEGMarkerIndecies::handle_event()
-{
- perf_prefs->pwindow->thread->preferences->ffmpeg_marker_indexes = get_value();
- return 1;
-}
-
-
-
-
PrefsRenderFarmConsolidate::PrefsRenderFarmConsolidate(PreferencesWindow *pwindow, int x, int y)
}
-
-
-
PrefsRenderFarmPort::PrefsRenderFarmPort(PreferencesWindow *pwindow,
PerformancePrefs *subwindow,
int x,
PrefsRenderFarmNodes::PrefsRenderFarmNodes(PreferencesWindow *pwindow,
- PerformancePrefs *subwindow,
- int x,
- int y)
- : BC_ListBox(x,
- y,
- 340,
- 230,
- LISTBOX_TEXT, // Display text list or icons
- subwindow->nodes,
- titles,
- widths,
- 4)
+ PerformancePrefs *subwindow, int x, int y)
+ : BC_ListBox(x, y, 340, 230, LISTBOX_TEXT, 0,0,0,1, 0,0, LISTBOX_MULTIPLE)
{
+ for( int i=0; i<PerformancePrefs::TOTAL_COLUMNS; ++i ) {
+ titles[i] = _(default_titles[i]);
+ widths[i] = default_widths[i];
+ }
+ update(subwindow->nodes, titles, widths, PerformancePrefs::TOTAL_COLUMNS,
+ 0, 0, -1, 0, 0);
this->subwindow = subwindow;
this->pwindow = pwindow;
}
int PrefsRenderFarmNodes::column_resize_event()
{
- for(int i = 0; i < 3; i++)
+ for( int i=0; i<PerformancePrefs::TOTAL_COLUMNS; ++i )
widths[i] = get_column_width(i);
return 1;
}
{
subwindow->hot_node = get_selection_number(1, 0);
subwindow->edit_node->update(get_selection(1, 0)->get_text());
- subwindow->edit_port->update(get_selection(2, 0)->get_text());
+ const char *text = get_selection(2, 0)->get_text();
+ subwindow->edit_port->update(text);
+ pwindow->thread->preferences->renderfarm_port = atol(text);
if(get_cursor_x() < widths[0])
{
pwindow->thread->preferences->renderfarm_enabled.values[subwindow->hot_node] =
}
-
-
-
-
-
PrefsRenderFarmEditNode::PrefsRenderFarmEditNode(PreferencesWindow *pwindow, PerformancePrefs *subwindow, int x, int y)
: BC_TextBox(x, y, 240, 1, "")
{
}
-
-
-
-
PrefsRenderFarmNewNode::PrefsRenderFarmNewNode(PreferencesWindow *pwindow, PerformancePrefs *subwindow, int x, int y)
- : BC_GenericButton(x, y, _("Add Node"))
+ : BC_GenericButton(x, y, _("Add Nodes"))
{
this->pwindow = pwindow;
this->subwindow = subwindow;
}
int PrefsRenderFarmNewNode::handle_event()
{
- pwindow->thread->preferences->add_node(subwindow->edit_node->get_text(),
- pwindow->thread->preferences->renderfarm_port,
- 1,
- 0.0);
+ const char *name = subwindow->edit_node->get_text();
+ char *cp = (char*)subwindow->edit_port->get_text();
+ int64_t start_port = strtol(cp, &cp, 0), end_port = start_port;
+ while( isspace(*cp) ) ++cp;
+ if( *cp++ == '-' )
+ end_port = strtol(cp, &cp, 0);
+ for( int port=start_port; port<=end_port; ++port ) {
+ pwindow->thread->preferences->add_node(name, port, 1, 0.0);
+ }
+ pwindow->thread->preferences->renderfarm_port = end_port;
+ subwindow->edit_port->update(end_port);
pwindow->thread->preferences->reset_rates();
subwindow->generate_node_list();
subwindow->update_node_list();
}
-
-
-
-
-
PrefsRenderFarmReplaceNode::PrefsRenderFarmReplaceNode(PreferencesWindow *pwindow, PerformancePrefs *subwindow, int x, int y)
: BC_GenericButton(x, y, _("Apply Changes"))
{
}
-
-
-
PrefsRenderFarmDelNode::PrefsRenderFarmDelNode(PreferencesWindow *pwindow, PerformancePrefs *subwindow, int x, int y)
- : BC_GenericButton(x, y, _("Delete Node"))
+ : BC_GenericButton(x, y, _("Delete Nodes"))
{
this->pwindow = pwindow;
this->subwindow = subwindow;
}
int PrefsRenderFarmDelNode::handle_event()
{
- if( subwindow->hot_node >= 0 ) {
- pwindow->thread->preferences->delete_node(subwindow->hot_node);
-
- subwindow->generate_node_list();
- subwindow->update_node_list();
- subwindow->hot_node = -1;
+ ArrayList<BC_ListBoxItem *> &item_list = subwindow->nodes[0];
+ for( int i=item_list.size(); --i>=0; ) {
+ if( !item_list[i]->get_selected() ) continue;
+ pwindow->thread->preferences->delete_node(i);
}
+ subwindow->generate_node_list();
+ subwindow->update_node_list();
+ subwindow->hot_node = -1;
return 1;
}
-
-
-
PrefsRenderFarmSortNodes::PrefsRenderFarmSortNodes(PreferencesWindow *pwindow,
PerformancePrefs *subwindow,
int x,
}
-
-
-
PrefsRenderFarmReset::PrefsRenderFarmReset(PreferencesWindow *pwindow,
- PerformancePrefs *subwindow,
- int x,
- int y)
+ PerformancePrefs *subwindow, int x, int y)
: BC_GenericButton(x, y, _("Reset rates"))
{
this->pwindow = pwindow;
char string[BCTEXTLEN];
sprintf(string,
- MASTER_NODE_FRAMERATE_TEXT,
+ _(MASTER_NODE_FRAMERATE_TEXT),
pwindow->thread->preferences->local_rate);
subwindow->master_rate->update(string);
subwindow->hot_node = -1;
}
-
-
-
PrefsProjectSMP::PrefsProjectSMP(PreferencesWindow *pwindow,
PerformancePrefs *subwindow, int x, int y)
: BC_TumbleTextBox(subwindow,
}
-
-
-
PrefsRenderFarmJobs::PrefsRenderFarmJobs(PreferencesWindow *pwindow,
PerformancePrefs *subwindow,
int x,
int y)
: BC_TumbleTextBox(subwindow,
(int64_t)pwindow->thread->preferences->renderfarm_job_count,
- (int64_t)1,
- (int64_t)100,
- x,
- y,
- 100)
+ (int64_t)1, (int64_t)100, x, y, 100)
{
this->pwindow = pwindow;
}
}
-
PrefsRenderFarmMountpoint::PrefsRenderFarmMountpoint(PreferencesWindow *pwindow,
- PerformancePrefs *subwindow,
- int x,
- int y)
- : BC_TextBox(x,
- y,
- 100,
- 1,
+ PerformancePrefs *subwindow, int x, int y)
+ : BC_TextBox(x, y, 100, 1,
pwindow->thread->preferences->renderfarm_mountpoint)
{
this->pwindow = pwindow;
}
-
-
PrefsRenderFarmVFS::PrefsRenderFarmVFS(PreferencesWindow *pwindow,
PerformancePrefs *subwindow, int x, int y)
: BC_CheckBox(x, y, pwindow->thread->preferences->renderfarm_vfs,
}
-PrefsYUV420P_DVDlace::PrefsYUV420P_DVDlace(PreferencesWindow *pwindow,
- PerformancePrefs *subwindow, int x, int y)
- : BC_CheckBox(x, y, pwindow->thread->preferences->dvd_yuv420p_interlace,
- _("Use yuv420p dvd interlace format"))
+PrefsRenderFarmWatchdog::PrefsRenderFarmWatchdog(PreferencesWindow *pwindow,
+ PerformancePrefs *subwindow, int x, int y)
+ : BC_TumbleTextBox(subwindow,
+ (int64_t)pwindow->thread->preferences->renderfarm_watchdog_timeout,
+ (int64_t)0, (int64_t)1000, x, y, 100)
{
this->pwindow = pwindow;
- this->subwindow = subwindow;
+ set_increment(15);
}
-int PrefsYUV420P_DVDlace::handle_event()
+int PrefsRenderFarmWatchdog::handle_event()
{
- pwindow->thread->preferences->dvd_yuv420p_interlace = get_value();
+ pwindow->thread->preferences->renderfarm_watchdog_timeout = atol(get_text());
return 1;
}
+