4 #include "edlsession.h"
5 #include "formattools.h"
8 #include "performanceprefs.h"
9 #include "preferences.h"
14 PerformancePrefs::PerformancePrefs(MWindow *mwindow, PreferencesWindow *pwindow)
15 : PreferencesDialog(mwindow, pwindow)
20 PerformancePrefs::~PerformancePrefs()
23 nodes[0].remove_all_objects();
24 nodes[1].remove_all_objects();
25 nodes[2].remove_all_objects();
26 nodes[3].remove_all_objects();
29 int PerformancePrefs::create_objects()
36 char string[BCTEXTLEN];
37 BC_Resources *resources = BC_WindowBase::get_resources();
42 xmargin1 = x = mwindow->theme->preferencesoptions_x;
43 y = mwindow->theme->preferencesoptions_y;
45 // add_subwindow(new BC_Title(x,
49 // resources->text_default));
51 // y += get_text_height(LARGEFONT) + 5;
53 add_subwindow(new BC_Title(x, y + 5, _("Cache size (MB):"), MEDIUMFONT, resources->text_default));
54 cache_size = new CICacheSize(x + 230,
58 cache_size->create_objects();
61 add_subwindow(new BC_Title(x, y + 5, _("Seconds to preroll renders:")));
62 PrefsRenderPreroll *preroll = new PrefsRenderPreroll(pwindow,
66 preroll->create_objects();
68 add_subwindow(new PrefsForceUniprocessor(pwindow, x, y));
75 // Background rendering
76 add_subwindow(new BC_Bar(5, y, get_w() - 10));
80 add_subwindow(new BC_Title(x, y, _("Background Rendering (Video only)"), LARGEFONT, resources->text_default));
83 add_subwindow(new PrefsUseBRender(pwindow,
88 add_subwindow(new BC_Title(x, y + 40, _("Frames per background rendering job:")));
89 PrefsBRenderFragment *brender_fragment = new PrefsBRenderFragment(pwindow,
93 brender_fragment->create_objects();
94 add_subwindow(new BC_Title(x, y + 95, _("Frames to preroll background:")));
95 PrefsBRenderPreroll *bpreroll = new PrefsBRenderPreroll(pwindow,
99 bpreroll->create_objects();
103 add_subwindow(new BC_Title(x, y, _("Output for background rendering:")));
106 new FormatTools(mwindow,
108 pwindow->thread->preferences->brender_asset);
109 brender_tools->create_objects(x,
111 0, // Include tools for audio
112 1, // Include tools for video
113 0, // Include checkbox for audio
114 0, // Include checkbox for video
117 0, // Select compressors to be offered
118 0, // Change captions for recording
119 0, // If nonzero, prompt for insertion strategy
120 1); // Supply file formats for background rendering
125 add_subwindow(new BC_Bar(5, y, get_w() - 10));
129 add_subwindow(new BC_Title(x, y, _("Render Farm"), LARGEFONT, resources->text_default));
132 add_subwindow(new PrefsRenderFarm(pwindow, x, y));
133 add_subwindow(new BC_Title(x + xmargin4, y, _("Nodes:")));
135 add_subwindow(new BC_Title(x, y, _("Hostname:")));
136 add_subwindow(new BC_Title(x + xmargin3, y, _("Port:")));
137 add_subwindow(node_list = new PrefsRenderFarmNodes(pwindow,
142 N_("Master node framerate: %0.3f")
144 #define MASTER_NODE_FRAMERATE_TEXT "Master node framerate: %0.3f"
145 sprintf(string, _(MASTER_NODE_FRAMERATE_TEXT),
146 pwindow->thread->preferences->local_rate);
147 add_subwindow(master_rate = new BC_Title(x + xmargin4, y + node_list->get_h(), string));
150 add_subwindow(edit_node = new PrefsRenderFarmEditNode(pwindow,
154 edit_port = new PrefsRenderFarmPort(pwindow,
158 edit_port->create_objects();
163 add_subwindow(new PrefsRenderFarmReplaceNode(pwindow,
167 add_subwindow(new PrefsRenderFarmNewNode(pwindow,
172 add_subwindow(new PrefsRenderFarmDelNode(pwindow,
176 add_subwindow(new PrefsRenderFarmSortNodes(pwindow,
181 add_subwindow(new PrefsRenderFarmReset(pwindow,
186 add_subwindow(new BC_Title(x,
188 _("Total jobs to create:")));
189 add_subwindow(new BC_Title(x,
191 _("(overridden if new file at each label is checked)")));
192 PrefsRenderFarmJobs *jobs = new PrefsRenderFarmJobs(pwindow,
196 jobs->create_objects();
198 // add_subwindow(new PrefsRenderFarmVFS(pwindow,
202 // add_subwindow(new BC_Title(x,
204 // _("Filesystem prefix on remote nodes:")));
205 // add_subwindow(new PrefsRenderFarmMountpoint(pwindow,
214 void PerformancePrefs::generate_node_list()
216 int selected_row = node_list ? node_list->get_selection_number(0, 0) : -1;
217 nodes[0].remove_all_objects();
218 nodes[1].remove_all_objects();
219 nodes[2].remove_all_objects();
220 nodes[3].remove_all_objects();
222 i < pwindow->thread->preferences->renderfarm_nodes.total;
225 BC_ListBoxItem *item;
226 nodes[0].append(item = new BC_ListBoxItem(
227 (char*)(pwindow->thread->preferences->renderfarm_enabled.values[i] ? "X" : " ")));
228 if(i == selected_row) item->set_selected(1);
230 nodes[1].append(item = new BC_ListBoxItem(
231 pwindow->thread->preferences->renderfarm_nodes.values[i]));
232 if(i == selected_row) item->set_selected(1);
234 char string[BCTEXTLEN];
235 sprintf(string, "%d", pwindow->thread->preferences->renderfarm_ports.values[i]);
236 nodes[2].append(item = new BC_ListBoxItem(string));
237 if(i == selected_row) item->set_selected(1);
239 sprintf(string, "%0.3f", pwindow->thread->preferences->renderfarm_rate.values[i]);
240 nodes[3].append(item = new BC_ListBoxItem(string));
241 if(i == selected_row) item->set_selected(1);
245 static char *titles[] =
253 static int widths[] =
262 void PerformancePrefs::update_node_list()
264 node_list->update(nodes,
268 node_list->get_xposition(),
269 node_list->get_yposition(),
270 node_list->get_selection_number(0, 0));
275 PrefsUseBRender::PrefsUseBRender(PreferencesWindow *pwindow,
280 pwindow->thread->preferences->use_brender,
281 _("Use background rendering"))
283 this->pwindow = pwindow;
286 int PrefsUseBRender::handle_event()
288 pwindow->thread->redraw_overlays = 1;
289 pwindow->thread->redraw_times = 1;
290 pwindow->thread->preferences->use_brender = get_value();
299 PrefsBRenderFragment::PrefsBRenderFragment(PreferencesWindow *pwindow,
300 PerformancePrefs *subwindow,
303 : BC_TumbleTextBox(subwindow,
304 (int64_t)pwindow->thread->preferences->brender_fragment,
311 this->pwindow = pwindow;
313 int PrefsBRenderFragment::handle_event()
315 pwindow->thread->preferences->brender_fragment = atol(get_text());
329 CICacheSize::CICacheSize(int x,
331 PreferencesWindow *pwindow,
332 PerformancePrefs *subwindow)
333 : BC_TumbleTextBox(subwindow,
334 (int64_t)pwindow->thread->preferences->cache_size / 0x100000,
335 (int64_t)MIN_CACHE_SIZE / 0x100000,
336 (int64_t)MAX_CACHE_SIZE / 0x100000,
341 this->pwindow = pwindow;
345 int CICacheSize::handle_event()
348 result = (int64_t)atol(get_text()) * 0x100000;
349 CLAMP(result, MIN_CACHE_SIZE, MAX_CACHE_SIZE);
350 pwindow->thread->preferences->cache_size = result;
355 PrefsRenderPreroll::PrefsRenderPreroll(PreferencesWindow *pwindow,
356 PerformancePrefs *subwindow,
359 : BC_TumbleTextBox(subwindow,
360 (float)pwindow->thread->preferences->render_preroll,
367 this->pwindow = pwindow;
369 PrefsRenderPreroll::~PrefsRenderPreroll()
372 int PrefsRenderPreroll::handle_event()
374 pwindow->thread->preferences->render_preroll = atof(get_text());
379 PrefsBRenderPreroll::PrefsBRenderPreroll(PreferencesWindow *pwindow,
380 PerformancePrefs *subwindow,
383 : BC_TumbleTextBox(subwindow,
384 (int64_t)pwindow->thread->preferences->brender_preroll,
391 this->pwindow = pwindow;
393 int PrefsBRenderPreroll::handle_event()
395 pwindow->thread->preferences->brender_preroll = atol(get_text());
409 PrefsRenderFarm::PrefsRenderFarm(PreferencesWindow *pwindow, int x, int y)
412 pwindow->thread->preferences->use_renderfarm,
413 _("Use render farm"))
415 this->pwindow = pwindow;
417 PrefsRenderFarm::~PrefsRenderFarm()
420 int PrefsRenderFarm::handle_event()
422 pwindow->thread->preferences->use_renderfarm = get_value();
429 PrefsForceUniprocessor::PrefsForceUniprocessor(PreferencesWindow *pwindow, int x, int y)
432 pwindow->thread->preferences->force_uniprocessor,
433 _("Force single processor use"))
435 this->pwindow = pwindow;
437 PrefsForceUniprocessor::~PrefsForceUniprocessor()
440 int PrefsForceUniprocessor::handle_event()
442 pwindow->thread->preferences->force_uniprocessor = get_value();
452 PrefsRenderFarmConsolidate::PrefsRenderFarmConsolidate(PreferencesWindow *pwindow, int x, int y)
455 pwindow->thread->preferences->renderfarm_consolidate,
456 _("Consolidate output files on completion"))
458 this->pwindow = pwindow;
460 PrefsRenderFarmConsolidate::~PrefsRenderFarmConsolidate()
463 int PrefsRenderFarmConsolidate::handle_event()
465 pwindow->thread->preferences->renderfarm_consolidate = get_value();
473 PrefsRenderFarmPort::PrefsRenderFarmPort(PreferencesWindow *pwindow,
474 PerformancePrefs *subwindow,
477 : BC_TumbleTextBox(subwindow,
478 (int64_t)pwindow->thread->preferences->renderfarm_port,
485 this->pwindow = pwindow;
488 PrefsRenderFarmPort::~PrefsRenderFarmPort()
492 int PrefsRenderFarmPort::handle_event()
494 pwindow->thread->preferences->renderfarm_port = atol(get_text());
500 PrefsRenderFarmNodes::PrefsRenderFarmNodes(PreferencesWindow *pwindow,
501 PerformancePrefs *subwindow, int x, int y)
506 LISTBOX_TEXT, // Display text list or icons
512 this->subwindow = subwindow;
513 this->pwindow = pwindow;
515 PrefsRenderFarmNodes::~PrefsRenderFarmNodes()
519 int PrefsRenderFarmNodes::column_resize_event()
521 for(int i = 0; i < 3; i++)
522 widths[i] = get_column_width(i);
526 int PrefsRenderFarmNodes::handle_event()
529 if(get_selection_number(0, 0) >= 0)
531 subwindow->hot_node = get_selection_number(1, 0);
532 subwindow->edit_node->update(get_selection(1, 0)->get_text());
533 subwindow->edit_port->update(get_selection(2, 0)->get_text());
534 if(get_cursor_x() < widths[0])
536 pwindow->thread->preferences->renderfarm_enabled.values[subwindow->hot_node] =
537 !pwindow->thread->preferences->renderfarm_enabled.values[subwindow->hot_node];
538 subwindow->generate_node_list();
539 subwindow->update_node_list();
544 subwindow->hot_node = -1;
545 subwindow->edit_node->update("");
550 int PrefsRenderFarmNodes::selection_changed()
562 PrefsRenderFarmEditNode::PrefsRenderFarmEditNode(PreferencesWindow *pwindow, PerformancePrefs *subwindow, int x, int y)
563 : BC_TextBox(x, y, 240, 1, "")
565 this->pwindow = pwindow;
566 this->subwindow = subwindow;
569 PrefsRenderFarmEditNode::~PrefsRenderFarmEditNode()
573 int PrefsRenderFarmEditNode::handle_event()
583 PrefsRenderFarmNewNode::PrefsRenderFarmNewNode(PreferencesWindow *pwindow, PerformancePrefs *subwindow, int x, int y)
584 : BC_GenericButton(x, y, _("Add Node"))
586 this->pwindow = pwindow;
587 this->subwindow = subwindow;
589 PrefsRenderFarmNewNode::~PrefsRenderFarmNewNode()
592 int PrefsRenderFarmNewNode::handle_event()
594 pwindow->thread->preferences->add_node(subwindow->edit_node->get_text(),
595 pwindow->thread->preferences->renderfarm_port,
598 pwindow->thread->preferences->reset_rates();
599 subwindow->generate_node_list();
600 subwindow->update_node_list();
601 subwindow->hot_node = -1;
611 PrefsRenderFarmReplaceNode::PrefsRenderFarmReplaceNode(PreferencesWindow *pwindow, PerformancePrefs *subwindow, int x, int y)
612 : BC_GenericButton(x, y, _("Apply Changes"))
614 this->pwindow = pwindow;
615 this->subwindow = subwindow;
617 PrefsRenderFarmReplaceNode::~PrefsRenderFarmReplaceNode()
620 int PrefsRenderFarmReplaceNode::handle_event()
622 if(subwindow->hot_node >= 0)
624 pwindow->thread->preferences->edit_node(subwindow->hot_node,
625 subwindow->edit_node->get_text(),
626 pwindow->thread->preferences->renderfarm_port,
627 pwindow->thread->preferences->renderfarm_enabled.values[subwindow->hot_node]);
628 subwindow->generate_node_list();
629 subwindow->update_node_list();
638 PrefsRenderFarmDelNode::PrefsRenderFarmDelNode(PreferencesWindow *pwindow, PerformancePrefs *subwindow, int x, int y)
639 : BC_GenericButton(x, y, _("Delete Node"))
641 this->pwindow = pwindow;
642 this->subwindow = subwindow;
644 PrefsRenderFarmDelNode::~PrefsRenderFarmDelNode()
647 int PrefsRenderFarmDelNode::handle_event()
649 if(strlen(subwindow->edit_node->get_text()))
651 pwindow->thread->preferences->delete_node(subwindow->hot_node);
652 subwindow->generate_node_list();
653 subwindow->update_node_list();
654 subwindow->hot_node = -1;
663 PrefsRenderFarmSortNodes::PrefsRenderFarmSortNodes(PreferencesWindow *pwindow,
664 PerformancePrefs *subwindow,
667 : BC_GenericButton(x, y, _("Sort nodes"))
669 this->pwindow = pwindow;
670 this->subwindow = subwindow;
673 PrefsRenderFarmSortNodes::~PrefsRenderFarmSortNodes()
677 int PrefsRenderFarmSortNodes::handle_event()
679 pwindow->thread->preferences->sort_nodes();
680 subwindow->generate_node_list();
681 subwindow->update_node_list();
682 subwindow->hot_node = -1;
690 PrefsRenderFarmReset::PrefsRenderFarmReset(PreferencesWindow *pwindow,
691 PerformancePrefs *subwindow,
694 : BC_GenericButton(x, y, _("Reset rates"))
696 this->pwindow = pwindow;
697 this->subwindow = subwindow;
700 int PrefsRenderFarmReset::handle_event()
702 pwindow->thread->preferences->reset_rates();
703 subwindow->generate_node_list();
704 subwindow->update_node_list();
706 char string[BCTEXTLEN];
708 MASTER_NODE_FRAMERATE_TEXT,
709 pwindow->thread->preferences->local_rate);
710 subwindow->master_rate->update(string);
711 subwindow->hot_node = -1;
721 PrefsRenderFarmJobs::PrefsRenderFarmJobs(PreferencesWindow *pwindow,
722 PerformancePrefs *subwindow,
725 : BC_TumbleTextBox(subwindow,
726 (int64_t)pwindow->thread->preferences->renderfarm_job_count,
733 this->pwindow = pwindow;
735 PrefsRenderFarmJobs::~PrefsRenderFarmJobs()
738 int PrefsRenderFarmJobs::handle_event()
740 pwindow->thread->preferences->renderfarm_job_count = atol(get_text());
746 PrefsRenderFarmMountpoint::PrefsRenderFarmMountpoint(PreferencesWindow *pwindow,
747 PerformancePrefs *subwindow,
754 pwindow->thread->preferences->renderfarm_mountpoint)
756 this->pwindow = pwindow;
757 this->subwindow = subwindow;
759 PrefsRenderFarmMountpoint::~PrefsRenderFarmMountpoint()
762 int PrefsRenderFarmMountpoint::handle_event()
764 strcpy(pwindow->thread->preferences->renderfarm_mountpoint, get_text());
771 PrefsRenderFarmVFS::PrefsRenderFarmVFS(PreferencesWindow *pwindow,
772 PerformancePrefs *subwindow,
775 : BC_CheckBox(x, y, pwindow->thread->preferences->renderfarm_vfs, _("Use virtual filesystem"))
777 this->pwindow = pwindow;
778 this->subwindow = subwindow;
781 int PrefsRenderFarmVFS::handle_event()
783 pwindow->thread->preferences->renderfarm_vfs = get_value();