3 #include "edlsession.h"
4 #include "formattools.h"
7 #include "performanceprefs.h"
8 #include "preferences.h"
12 PerformancePrefs::PerformancePrefs(MWindow *mwindow, PreferencesWindow *pwindow)
13 : PreferencesDialog(mwindow, pwindow)
18 PerformancePrefs::~PerformancePrefs()
21 nodes[0].remove_all_objects();
22 nodes[1].remove_all_objects();
23 nodes[2].remove_all_objects();
24 nodes[3].remove_all_objects();
27 int PerformancePrefs::create_objects()
34 char string[BCTEXTLEN];
39 // add_border(get_resources()->get_bg_shadow1(),
40 // get_resources()->get_bg_shadow2(),
41 // get_resources()->get_bg_color(),
42 // get_resources()->get_bg_light2(),
43 // get_resources()->get_bg_light1());
44 add_subwindow(new BC_Title(x, y, _("Performance"), LARGEFONT, BLACK));
47 add_subwindow(new BC_Title(x, y + 5, _("Cache size (MB):"), MEDIUMFONT, BLACK));
48 cache_size = new CICacheSize(x + 230,
52 cache_size->create_objects();
55 add_subwindow(new BC_Title(x, y + 5, _("Seconds to preroll renders:")));
56 PrefsRenderPreroll *preroll = new PrefsRenderPreroll(pwindow,
60 preroll->create_objects();
62 add_subwindow(new PrefsForceUniprocessor(pwindow, x, y));
67 add_subwindow(new BC_Title(x, y, _("Background Rendering"), LARGEFONT, BLACK));
70 add_subwindow(new PrefsUseBRender(pwindow,
75 add_subwindow(new BC_Title(x, y + 40, _("Frames per background rendering job:")));
76 PrefsBRenderFragment *brender_fragment = new PrefsBRenderFragment(pwindow,
80 brender_fragment->create_objects();
81 add_subwindow(new BC_Title(x, y + 95, _("Frames to preroll background:")));
82 PrefsBRenderPreroll *bpreroll = new PrefsBRenderPreroll(pwindow,
86 bpreroll->create_objects();
90 add_subwindow(new BC_Title(x, y, _("Output for background rendering:")));
93 new FormatTools(mwindow,
95 pwindow->thread->preferences->brender_asset);
96 brender_tools->create_objects(x,
98 0, // Include tools for audio
99 1, // Include tools for video
100 0, // Include checkbox for audio
101 0, // Include checkbox for video
104 0, // Select compressors to be offered
105 0, // Change captions for recording
106 0, // If nonzero, prompt for insertion strategy
107 1); // Supply file formats for background rendering
110 add_subwindow(new BC_Title(x, y, _("Render Farm"), LARGEFONT, BLACK));
113 add_subwindow(new PrefsRenderFarm(pwindow, x, y));
114 add_subwindow(new BC_Title(x + xmargin4, y, _("Nodes:")));
116 add_subwindow(new BC_Title(x, y, _("Hostname:")));
117 add_subwindow(new BC_Title(x + xmargin3, y, _("Port:")));
118 add_subwindow(node_list = new PrefsRenderFarmNodes(pwindow,
123 N_("Master node framerate: %0.3f")
125 #define MASTER_NODE_FRAMERATE_TEXT "Master node framerate: %0.3f"
126 sprintf(string, _(MASTER_NODE_FRAMERATE_TEXT),
127 pwindow->thread->preferences->local_rate);
128 add_subwindow(master_rate = new BC_Title(x + xmargin4, y + node_list->get_h(), string));
131 add_subwindow(edit_node = new PrefsRenderFarmEditNode(pwindow,
135 edit_port = new PrefsRenderFarmPort(pwindow,
139 edit_port->create_objects();
144 add_subwindow(new PrefsRenderFarmReplaceNode(pwindow,
148 add_subwindow(new PrefsRenderFarmNewNode(pwindow,
153 add_subwindow(new PrefsRenderFarmDelNode(pwindow,
157 add_subwindow(new PrefsRenderFarmSortNodes(pwindow,
162 add_subwindow(new PrefsRenderFarmReset(pwindow,
167 add_subwindow(new BC_Title(x,
169 _("Total jobs to create:")));
170 add_subwindow(new BC_Title(x,
172 _("(overridden if new file at each label is checked)")));
173 PrefsRenderFarmJobs *jobs = new PrefsRenderFarmJobs(pwindow,
177 jobs->create_objects();
179 add_subwindow(new PrefsRenderFarmVFS(pwindow,
183 // add_subwindow(new BC_Title(x,
185 // _("Filesystem prefix on remote nodes:")));
186 // add_subwindow(new PrefsRenderFarmMountpoint(pwindow,
195 void PerformancePrefs::generate_node_list()
197 int selected_row = node_list ? node_list->get_selection_number(0, 0) : -1;
198 nodes[0].remove_all_objects();
199 nodes[1].remove_all_objects();
200 nodes[2].remove_all_objects();
201 nodes[3].remove_all_objects();
203 i < pwindow->thread->preferences->renderfarm_nodes.total;
206 BC_ListBoxItem *item;
207 nodes[0].append(item = new BC_ListBoxItem(
208 (char*)(pwindow->thread->preferences->renderfarm_enabled.values[i] ? "X" : " ")));
209 if(i == selected_row) item->set_selected(1);
211 nodes[1].append(item = new BC_ListBoxItem(
212 pwindow->thread->preferences->renderfarm_nodes.values[i]));
213 if(i == selected_row) item->set_selected(1);
215 char string[BCTEXTLEN];
216 sprintf(string, "%d", pwindow->thread->preferences->renderfarm_ports.values[i]);
217 nodes[2].append(item = new BC_ListBoxItem(string));
218 if(i == selected_row) item->set_selected(1);
220 sprintf(string, "%0.3f", pwindow->thread->preferences->renderfarm_rate.values[i]);
221 nodes[3].append(item = new BC_ListBoxItem(string));
222 if(i == selected_row) item->set_selected(1);
226 static char *titles[] =
234 static int widths[] =
243 void PerformancePrefs::update_node_list()
245 node_list->update(nodes,
249 node_list->get_xposition(),
250 node_list->get_yposition(),
251 node_list->get_selection_number(0, 0));
256 PrefsUseBRender::PrefsUseBRender(PreferencesWindow *pwindow,
261 pwindow->thread->preferences->use_brender,
262 _("Use background rendering"))
264 this->pwindow = pwindow;
267 int PrefsUseBRender::handle_event()
269 pwindow->thread->redraw_overlays = 1;
270 pwindow->thread->redraw_times = 1;
271 pwindow->thread->preferences->use_brender = get_value();
280 PrefsBRenderFragment::PrefsBRenderFragment(PreferencesWindow *pwindow,
281 PerformancePrefs *subwindow,
284 : BC_TumbleTextBox(subwindow,
285 (int64_t)pwindow->thread->preferences->brender_fragment,
292 this->pwindow = pwindow;
294 int PrefsBRenderFragment::handle_event()
296 pwindow->thread->preferences->brender_fragment = atol(get_text());
310 CICacheSize::CICacheSize(int x,
312 PreferencesWindow *pwindow,
313 PerformancePrefs *subwindow)
314 : BC_TumbleTextBox(subwindow,
315 (int64_t)pwindow->thread->preferences->cache_size / 0x100000,
316 (int64_t)MIN_CACHE_SIZE / 0x100000,
317 (int64_t)MAX_CACHE_SIZE / 0x100000,
322 this->pwindow = pwindow;
326 int CICacheSize::handle_event()
329 result = (int64_t)atol(get_text()) * 0x100000;
330 CLAMP(result, MIN_CACHE_SIZE, MAX_CACHE_SIZE);
331 pwindow->thread->preferences->cache_size = result;
336 PrefsRenderPreroll::PrefsRenderPreroll(PreferencesWindow *pwindow,
337 PerformancePrefs *subwindow,
340 : BC_TumbleTextBox(subwindow,
341 (float)pwindow->thread->preferences->render_preroll,
348 this->pwindow = pwindow;
350 PrefsRenderPreroll::~PrefsRenderPreroll()
353 int PrefsRenderPreroll::handle_event()
355 pwindow->thread->preferences->render_preroll = atof(get_text());
360 PrefsBRenderPreroll::PrefsBRenderPreroll(PreferencesWindow *pwindow,
361 PerformancePrefs *subwindow,
364 : BC_TumbleTextBox(subwindow,
365 (int64_t)pwindow->thread->preferences->brender_preroll,
372 this->pwindow = pwindow;
374 int PrefsBRenderPreroll::handle_event()
376 pwindow->thread->preferences->brender_preroll = atol(get_text());
390 PrefsRenderFarm::PrefsRenderFarm(PreferencesWindow *pwindow, int x, int y)
393 pwindow->thread->preferences->use_renderfarm,
394 _("Use render farm"))
396 this->pwindow = pwindow;
398 PrefsRenderFarm::~PrefsRenderFarm()
401 int PrefsRenderFarm::handle_event()
403 pwindow->thread->preferences->use_renderfarm = get_value();
410 PrefsForceUniprocessor::PrefsForceUniprocessor(PreferencesWindow *pwindow, int x, int y)
413 pwindow->thread->preferences->force_uniprocessor,
414 _("Force single processor use"))
416 this->pwindow = pwindow;
418 PrefsForceUniprocessor::~PrefsForceUniprocessor()
421 int PrefsForceUniprocessor::handle_event()
423 pwindow->thread->preferences->force_uniprocessor = get_value();
433 PrefsRenderFarmConsolidate::PrefsRenderFarmConsolidate(PreferencesWindow *pwindow, int x, int y)
436 pwindow->thread->preferences->renderfarm_consolidate,
437 _("Consolidate output files on completion"))
439 this->pwindow = pwindow;
441 PrefsRenderFarmConsolidate::~PrefsRenderFarmConsolidate()
444 int PrefsRenderFarmConsolidate::handle_event()
446 pwindow->thread->preferences->renderfarm_consolidate = get_value();
454 PrefsRenderFarmPort::PrefsRenderFarmPort(PreferencesWindow *pwindow,
455 PerformancePrefs *subwindow,
458 : BC_TumbleTextBox(subwindow,
459 (int64_t)pwindow->thread->preferences->renderfarm_port,
466 this->pwindow = pwindow;
469 PrefsRenderFarmPort::~PrefsRenderFarmPort()
473 int PrefsRenderFarmPort::handle_event()
475 pwindow->thread->preferences->renderfarm_port = atol(get_text());
481 PrefsRenderFarmNodes::PrefsRenderFarmNodes(PreferencesWindow *pwindow,
482 PerformancePrefs *subwindow, int x, int y)
487 LISTBOX_TEXT, // Display text list or icons
493 this->subwindow = subwindow;
494 this->pwindow = pwindow;
496 PrefsRenderFarmNodes::~PrefsRenderFarmNodes()
500 int PrefsRenderFarmNodes::column_resize_event()
502 for(int i = 0; i < 3; i++)
503 widths[i] = get_column_width(i);
507 int PrefsRenderFarmNodes::handle_event()
509 if(get_selection_number(0, 0) >= 0)
511 subwindow->hot_node = get_selection_number(1, 0);
512 subwindow->edit_node->update(get_selection(1, 0)->get_text());
513 subwindow->edit_port->update(get_selection(2, 0)->get_text());
514 if(get_cursor_x() < widths[0])
516 pwindow->thread->preferences->renderfarm_enabled.values[subwindow->hot_node] =
517 !pwindow->thread->preferences->renderfarm_enabled.values[subwindow->hot_node];
518 subwindow->generate_node_list();
519 subwindow->update_node_list();
524 subwindow->hot_node = -1;
525 subwindow->edit_node->update("");
529 int PrefsRenderFarmNodes::selection_changed()
541 PrefsRenderFarmEditNode::PrefsRenderFarmEditNode(PreferencesWindow *pwindow, PerformancePrefs *subwindow, int x, int y)
542 : BC_TextBox(x, y, 240, 1, "")
544 this->pwindow = pwindow;
545 this->subwindow = subwindow;
548 PrefsRenderFarmEditNode::~PrefsRenderFarmEditNode()
552 int PrefsRenderFarmEditNode::handle_event()
562 PrefsRenderFarmNewNode::PrefsRenderFarmNewNode(PreferencesWindow *pwindow, PerformancePrefs *subwindow, int x, int y)
563 : BC_GenericButton(x, y, _("Add Node"))
565 this->pwindow = pwindow;
566 this->subwindow = subwindow;
568 PrefsRenderFarmNewNode::~PrefsRenderFarmNewNode()
571 int PrefsRenderFarmNewNode::handle_event()
573 pwindow->thread->preferences->add_node(subwindow->edit_node->get_text(),
574 pwindow->thread->preferences->renderfarm_port,
577 pwindow->thread->preferences->reset_rates();
578 subwindow->generate_node_list();
579 subwindow->update_node_list();
580 subwindow->hot_node = -1;
590 PrefsRenderFarmReplaceNode::PrefsRenderFarmReplaceNode(PreferencesWindow *pwindow, PerformancePrefs *subwindow, int x, int y)
591 : BC_GenericButton(x, y, _("Apply Changes"))
593 this->pwindow = pwindow;
594 this->subwindow = subwindow;
596 PrefsRenderFarmReplaceNode::~PrefsRenderFarmReplaceNode()
599 int PrefsRenderFarmReplaceNode::handle_event()
601 if(subwindow->hot_node >= 0)
603 pwindow->thread->preferences->edit_node(subwindow->hot_node,
604 subwindow->edit_node->get_text(),
605 pwindow->thread->preferences->renderfarm_port,
606 pwindow->thread->preferences->renderfarm_enabled.values[subwindow->hot_node]);
607 subwindow->generate_node_list();
608 subwindow->update_node_list();
617 PrefsRenderFarmDelNode::PrefsRenderFarmDelNode(PreferencesWindow *pwindow, PerformancePrefs *subwindow, int x, int y)
618 : BC_GenericButton(x, y, _("Delete Node"))
620 this->pwindow = pwindow;
621 this->subwindow = subwindow;
623 PrefsRenderFarmDelNode::~PrefsRenderFarmDelNode()
626 int PrefsRenderFarmDelNode::handle_event()
628 if(strlen(subwindow->edit_node->get_text()))
630 pwindow->thread->preferences->delete_node(subwindow->hot_node);
631 subwindow->generate_node_list();
632 subwindow->update_node_list();
633 subwindow->hot_node = -1;
642 PrefsRenderFarmSortNodes::PrefsRenderFarmSortNodes(PreferencesWindow *pwindow,
643 PerformancePrefs *subwindow,
646 : BC_GenericButton(x, y, _("Sort nodes"))
648 this->pwindow = pwindow;
649 this->subwindow = subwindow;
652 PrefsRenderFarmSortNodes::~PrefsRenderFarmSortNodes()
656 int PrefsRenderFarmSortNodes::handle_event()
658 pwindow->thread->preferences->sort_nodes();
659 subwindow->generate_node_list();
660 subwindow->update_node_list();
661 subwindow->hot_node = -1;
669 PrefsRenderFarmReset::PrefsRenderFarmReset(PreferencesWindow *pwindow,
670 PerformancePrefs *subwindow,
673 : BC_GenericButton(x, y, _("Reset rates"))
675 this->pwindow = pwindow;
676 this->subwindow = subwindow;
679 int PrefsRenderFarmReset::handle_event()
681 pwindow->thread->preferences->reset_rates();
682 subwindow->generate_node_list();
683 subwindow->update_node_list();
685 char string[BCTEXTLEN];
687 MASTER_NODE_FRAMERATE_TEXT,
688 pwindow->thread->preferences->local_rate);
689 subwindow->master_rate->update(string);
690 subwindow->hot_node = -1;
700 PrefsRenderFarmJobs::PrefsRenderFarmJobs(PreferencesWindow *pwindow,
701 PerformancePrefs *subwindow,
704 : BC_TumbleTextBox(subwindow,
705 (int64_t)pwindow->thread->preferences->renderfarm_job_count,
712 this->pwindow = pwindow;
714 PrefsRenderFarmJobs::~PrefsRenderFarmJobs()
717 int PrefsRenderFarmJobs::handle_event()
719 pwindow->thread->preferences->renderfarm_job_count = atol(get_text());
725 PrefsRenderFarmMountpoint::PrefsRenderFarmMountpoint(PreferencesWindow *pwindow,
726 PerformancePrefs *subwindow,
733 pwindow->thread->preferences->renderfarm_mountpoint)
735 this->pwindow = pwindow;
736 this->subwindow = subwindow;
738 PrefsRenderFarmMountpoint::~PrefsRenderFarmMountpoint()
741 int PrefsRenderFarmMountpoint::handle_event()
743 strcpy(pwindow->thread->preferences->renderfarm_mountpoint, get_text());
750 PrefsRenderFarmVFS::PrefsRenderFarmVFS(PreferencesWindow *pwindow,
751 PerformancePrefs *subwindow,
754 : BC_CheckBox(x, y, pwindow->thread->preferences->renderfarm_vfs, _("Use virtual filesystem"))
756 this->pwindow = pwindow;
757 this->subwindow = subwindow;
760 int PrefsRenderFarmVFS::handle_event()
762 pwindow->thread->preferences->renderfarm_vfs = get_value();