4 * Copyright (C) 2008 Adam Williams <broadcast at earthling dot net>
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22 #include "bcsignals.h"
25 #include "edlsession.h"
26 #include "formattools.h"
29 #include "performanceprefs.h"
30 #include "preferences.h"
35 #define MASTER_NODE_FRAMERATE_TEXT "Master node framerate: %0.3f"
37 N_(MASTER_NODE_FRAMERATE_TEXT)
40 PerformancePrefs::PerformancePrefs(MWindow *mwindow, PreferencesWindow *pwindow)
41 : PreferencesDialog(mwindow, pwindow)
44 // *** CONTEXT_HELP ***
45 context_help_set_keyword("Performance");
48 PerformancePrefs::~PerformancePrefs()
51 nodes[0].remove_all_objects();
52 nodes[1].remove_all_objects();
53 nodes[2].remove_all_objects();
54 nodes[3].remove_all_objects();
57 void PerformancePrefs::create_objects()
59 int xs5 = xS(5), xs10 = xS(10);
60 int ys5 = yS(5), ys10 = yS(10), ys20 = yS(20), ys30 = yS(30), ys35 = yS(35);
62 int xmargin2 = xS(180);
63 int xmargin3 = xS(260);
64 int xmargin4 = xS(420);
65 char string[BCTEXTLEN];
66 BC_Resources *resources = BC_WindowBase::get_resources();
73 int xmargin1 = x = mwindow->theme->preferencesoptions_x;
74 y = mwindow->theme->preferencesoptions_y;
77 win = add_subwindow(new BC_Title(x, y + ys5, _("Cache size (MB):"), MEDIUMFONT, resources->text_default));
78 win->context_help_set_keyword("Performance section");
79 int maxw = win->get_w();
81 win = add_subwindow(new BC_Title(x, y1 + ys5, _("Seconds to preroll renders:")));
82 win->context_help_set_keyword("Performance section");
83 maxw = bmax(win->get_w(), maxw);
84 int x2 = x + maxw + xs5;
86 cache_size = new CICacheSize(x2, y0, pwindow, this);
87 cache_size->create_objects();
88 PrefsRenderPreroll *preroll = new PrefsRenderPreroll(pwindow, this, x2, y1);
89 preroll->create_objects();
90 add_subwindow(new PrefsForceUniprocessor(pwindow, x, y2));
93 int x1 = x + xmargin4;
94 add_subwindow(cache_transitions = new CacheTransitions(x1, y0, pwindow, this));
95 cache_transitions->context_help_set_keyword("Performance section");
96 win = add_subwindow(new BC_Title(x1, y1, _("Use HW Device:")));
97 win->context_help_set_keyword("Performance section");
99 win = add_subwindow(new BC_Title(x1, y2, _("Project SMP cpus:")));
100 win->context_help_set_keyword("Performance section");
101 maxw = bmax(win->get_w(), maxw);
102 x2 = x1 + maxw + xs5;
103 PrefsUseHWDev *use_hw_dev = new PrefsUseHWDev(pwindow, this, x2, y1);
104 use_hw_dev->create_objects();
105 PrefsProjectSMP *proj_smp = new PrefsProjectSMP(pwindow, this, x2, y2);
106 proj_smp->create_objects();
108 // Background rendering
109 add_subwindow(new BC_Bar(xs5, y, get_w() - xs10));
113 add_subwindow(title = new BC_Title(x, y, _("Background Rendering (Video only)"), LARGEFONT, resources->text_default));
114 title->context_help_set_keyword("Background Rendering");
117 win = add_subwindow(new PrefsUseBRender(pwindow, x, y));
118 win->context_help_set_keyword("Background Rendering");
120 y += win->get_h() + ys10;
121 win = add_subwindow(new BC_Title(x, y, _("Frames per background rendering job:")));
122 win->context_help_set_keyword("Background Rendering");
123 y += win->get_h() + ys5;
124 PrefsBRenderFragment *brender_fragment = new PrefsBRenderFragment(pwindow, this,
126 brender_fragment->create_objects();
127 y += brender_fragment->get_h() + ys5;
128 win = add_subwindow(new BC_Title(x, y, _("Frames to preroll background:")));
129 win->context_help_set_keyword("Background Rendering");
130 y += win->get_h() + ys5;
131 PrefsBRenderPreroll *bpreroll = new PrefsBRenderPreroll(pwindow, this,
132 x + xmargin3, y + ys5);
133 bpreroll->create_objects();
134 y += bpreroll->get_h() + ys20;
137 add_subwindow(title = new BC_Title(x, y1, _("Output for background rendering:")));
138 title->context_help_set_keyword("Background Rendering");
140 brender_tools = new FormatTools(mwindow, this,
141 pwindow->thread->preferences->brender_asset);
142 brender_tools->create_objects(x, y1,
143 0, // Include tools for audio
144 1, // Include tools for video
145 0, // Include checkbox for audio
146 0, // Include checkbox for video
149 0, // Select compressors to be offered
150 0, // Prompt for recording options
151 0, // prompt for use labels
152 1); // Supply file formats for background rendering
157 add_subwindow(new BC_Bar(xs5, y, get_w() - xs10));
159 add_subwindow(title = new BC_Title(x, y, _("Render Farm"), LARGEFONT, resources->text_default));
160 title->context_help_set_keyword("Render Farm Menu");
161 x1 = get_w() - BC_GenericButton::calculate_w(this, _("Reset rates")) - x;
162 add_subwindow(new PrefsRenderFarmReset(pwindow, this, x1, y));
164 BC_Title *node_title = new BC_Title(x1, y, _("Nodes:"));
165 add_subwindow(node_title);
166 node_title->context_help_set_keyword("Render Farm Menu");
167 x1 += node_title->get_w() + xS(15);
168 sprintf(string, _(MASTER_NODE_FRAMERATE_TEXT),
169 pwindow->thread->preferences->local_rate);
170 add_subwindow(master_rate = new BC_Title(x1, y, string));
171 master_rate->context_help_set_keyword("Render Farm Menu");
172 add_subwindow(node_list = new PrefsRenderFarmNodes(pwindow, this, x + xmargin4, y+=yS(25)));
173 node_list->context_help_set_keyword("Render Farm Menu");
174 add_subwindow(new PrefsRenderFarm(pwindow, x, y+=ys5));
175 add_subwindow(title = new BC_Title(x, y+=ys30, _("Hostname:")));
176 title->context_help_set_keyword("Render Farm Menu");
177 add_subwindow(title = new BC_Title(x + xmargin3, y, _("Port:")));
178 title->context_help_set_keyword("Render Farm Menu");
179 add_subwindow(edit_node = new PrefsRenderFarmEditNode(pwindow, this, x, y+=yS(25)));
180 edit_node->context_help_set_keyword("Render Farm Menu");
181 edit_port = new PrefsRenderFarmPort(pwindow, this, x+xmargin3, y);
182 edit_port->create_objects();
184 add_subwindow(new PrefsRenderFarmReplaceNode(pwindow, this, x, y+=ys30));
185 add_subwindow(new PrefsRenderFarmNewNode(pwindow, this, x+xmargin2, y));
186 add_subwindow(new PrefsRenderFarmSortNodes(pwindow, this, x, y+=ys30));
187 add_subwindow(new PrefsRenderFarmDelNode(pwindow, this, x+xmargin2, y));
188 add_subwindow(title = new BC_Title(x, y+=ys35, _("Client Watchdog Timeout:")));
189 title->context_help_set_keyword("Render Farm Menu");
190 renderfarm_watchdog = new PrefsRenderFarmWatchdog(pwindow, this, x+xmargin3, y-ys5);
191 renderfarm_watchdog->create_objects();
192 add_subwindow(title = new BC_Title(x, y+=ys35, _("Total jobs to create:")));
193 title->context_help_set_keyword("Render Farm Menu");
194 PrefsRenderFarmJobs *jobs = new PrefsRenderFarmJobs(pwindow, this,
195 x + xmargin3, y-ys5);
196 jobs->create_objects();
197 y += jobs->get_h() + ys5;
198 win = add_subwindow(new BC_Title(x, y,
199 _("(overridden if new file at each label is checked)")));
200 win->context_help_set_keyword("Render Farm Menu");
201 // y += win->get_h() + ys5;
202 // add_subwindow(new PrefsRenderFarmVFS(pwindow, this, x, y));
203 // add_subwindow(new BC_Title(x, y,
204 // _("Filesystem prefix on remote nodes:")));
205 // add_subwindow(new PrefsRenderFarmMountpoint(pwindow, this, x + xmargin3, y));
209 void PerformancePrefs::generate_node_list()
211 int selected_row = node_list ? node_list->get_selection_number(0, 0) : -1;
213 for(int i = 0; i < TOTAL_COLUMNS; i++)
214 nodes[i].remove_all_objects();
217 i < pwindow->thread->preferences->renderfarm_nodes.size();
220 BC_ListBoxItem *item;
221 nodes[ENABLED_COLUMN].append(item = new BC_ListBoxItem(
222 (char*)(pwindow->thread->preferences->renderfarm_enabled.get(i) ? "X" : " ")));
223 if(i == selected_row) item->set_selected(1);
225 nodes[HOSTNAME_COLUMN].append(item = new BC_ListBoxItem(
226 pwindow->thread->preferences->renderfarm_nodes.get(i)));
227 if(i == selected_row) item->set_selected(1);
229 char string[BCTEXTLEN];
230 sprintf(string, "%d", pwindow->thread->preferences->renderfarm_ports.get(i));
231 nodes[PORT_COLUMN].append(item = new BC_ListBoxItem(string));
232 if(i == selected_row) item->set_selected(1);
234 sprintf(string, "%0.3f", pwindow->thread->preferences->renderfarm_rate.get(i));
235 nodes[RATE_COLUMN].append(item = new BC_ListBoxItem(string));
236 if(i == selected_row) item->set_selected(1);
241 static const char *default_titles[] = {
242 N_("On"), N_("Hostname"), N_("Port"), N_("Framerate")
245 static int default_widths[] = {
250 void PerformancePrefs::update_node_list()
252 node_list->update_list();
255 void PrefsRenderFarmNodes::update_list()
257 update(subwindow->nodes, titles, widths, PerformancePrefs::TOTAL_COLUMNS,
258 get_xposition(), get_yposition(), get_selection_number(0, 0));
262 void PerformancePrefs::update_rates()
264 //printf("PerformancePrefs::update_rates %d\n", __LINE__);
265 char string[BCTEXTLEN];
267 i < mwindow->preferences->renderfarm_rate.size();
270 if(i < nodes[RATE_COLUMN].size())
272 sprintf(string, "%0.3f", mwindow->preferences->renderfarm_rate.get(i));
273 nodes[RATE_COLUMN].get(i)->set_text(string);
277 sprintf(string, _(MASTER_NODE_FRAMERATE_TEXT),
278 mwindow->preferences->local_rate);
279 master_rate->update(string);
285 PrefsUseBRender::PrefsUseBRender(PreferencesWindow *pwindow,
290 pwindow->thread->preferences->use_brender,
291 _("Use background rendering"))
293 this->pwindow = pwindow;
296 int PrefsUseBRender::handle_event()
298 pwindow->thread->redraw_overlays = 1;
299 pwindow->thread->redraw_times = 1;
300 pwindow->thread->preferences->use_brender = get_value();
305 PrefsBRenderFragment::PrefsBRenderFragment(PreferencesWindow *pwindow,
306 PerformancePrefs *subwindow, int x, int y)
307 : BC_TumbleTextBox(subwindow,
308 (int64_t)pwindow->thread->preferences->brender_fragment,
309 (int64_t)1, (int64_t)65535, x, y, xS(100))
311 this->pwindow = pwindow;
313 int PrefsBRenderFragment::handle_event()
315 pwindow->thread->preferences->brender_fragment = atol(get_text());
319 CICacheSize::CICacheSize(int x, int y,
320 PreferencesWindow *pwindow, PerformancePrefs *subwindow)
321 : BC_TumbleTextBox(subwindow,
322 (int64_t)pwindow->thread->preferences->cache_size / 0x100000,
323 (int64_t)MIN_CACHE_SIZE / 0x100000,
324 (int64_t)MAX_CACHE_SIZE / 0x100000,
327 this->pwindow = pwindow;
331 int CICacheSize::handle_event()
334 result = (int64_t)atol(get_text()) * 0x100000;
335 CLAMP(result, MIN_CACHE_SIZE, MAX_CACHE_SIZE);
336 pwindow->thread->preferences->cache_size = result;
340 CacheTransitions::CacheTransitions(int x, int y,
341 PreferencesWindow *pwindow, PerformancePrefs *subwindow)
342 : BC_CheckBox(x, y, pwindow->thread->preferences->cache_transitions,
343 _("Cache Transitions"))
345 this->pwindow = pwindow;
348 int CacheTransitions::handle_event()
350 pwindow->thread->preferences->cache_transitions = get_value();
355 PrefsUseHWDev::PrefsUseHWDev(PreferencesWindow *pwindow,
356 PerformancePrefs *subwindow, int x, int y)
357 : BC_PopupTextBox(subwindow,0,0,x,y,xS(100),yS(80),LISTBOX_TEXT)
359 this->pwindow = pwindow;
362 void PrefsUseHWDev::create_objects()
364 BC_PopupTextBox::create_objects();
365 set_tooltip(_("vdpau - Nvidia, Nouveau\n"
366 "vaapi - Broadcom, Intel HD graphics, Amdgpu, Radeon\n"
367 "cuda - Nvidia + Cuda SDK"));
368 hw_dev_names.append(new BC_ListBoxItem(_("none")));
370 hw_dev_names.append(new BC_ListBoxItem("vaapi"));
373 hw_dev_names.append(new BC_ListBoxItem("vdpau"));
376 hw_dev_names.append(new BC_ListBoxItem("cuda"));
378 update_list(&hw_dev_names);
379 update(&pwindow->thread->preferences->use_hw_dev[0]);
382 int PrefsUseHWDev::handle_event()
384 strncpy(&pwindow->thread->preferences->use_hw_dev[0],
385 get_text(), sizeof(pwindow->thread->preferences->use_hw_dev));
389 PrefsRenderPreroll::PrefsRenderPreroll(PreferencesWindow *pwindow,
390 PerformancePrefs *subwindow, int x, int y)
391 : BC_TumbleTextBox(subwindow,
392 (float)pwindow->thread->preferences->render_preroll,
393 0.f, 100.f, x, y, xS(100))
395 this->pwindow = pwindow;
398 PrefsRenderPreroll::~PrefsRenderPreroll()
401 int PrefsRenderPreroll::handle_event()
403 pwindow->thread->preferences->render_preroll = atof(get_text());
408 PrefsBRenderPreroll::PrefsBRenderPreroll(PreferencesWindow *pwindow,
409 PerformancePrefs *subwindow,
412 : BC_TumbleTextBox(subwindow,
413 (int64_t)pwindow->thread->preferences->brender_preroll,
414 (int64_t)0, (int64_t)100, x, y, xS(100))
416 this->pwindow = pwindow;
418 int PrefsBRenderPreroll::handle_event()
420 pwindow->thread->preferences->brender_preroll = atol(get_text());
425 PrefsRenderFarm::PrefsRenderFarm(PreferencesWindow *pwindow, int x, int y)
428 pwindow->thread->preferences->use_renderfarm,
429 _("Use render farm"))
431 this->pwindow = pwindow;
432 // *** CONTEXT_HELP ***
433 context_help_set_keyword("Render Farm section");
435 PrefsRenderFarm::~PrefsRenderFarm()
438 int PrefsRenderFarm::handle_event()
440 pwindow->thread->preferences->use_renderfarm = get_value();
445 PrefsForceUniprocessor::PrefsForceUniprocessor(PreferencesWindow *pwindow, int x, int y)
448 pwindow->thread->preferences->force_uniprocessor,
449 _("Force single processor use"))
451 this->pwindow = pwindow;
452 // *** CONTEXT_HELP ***
453 context_help_set_keyword("Performance section");
455 PrefsForceUniprocessor::~PrefsForceUniprocessor()
458 int PrefsForceUniprocessor::handle_event()
460 pwindow->thread->preferences->force_uniprocessor = get_value();
466 PrefsRenderFarmConsolidate::PrefsRenderFarmConsolidate(PreferencesWindow *pwindow, int x, int y)
469 pwindow->thread->preferences->renderfarm_consolidate,
470 _("Consolidate output files on completion"))
472 this->pwindow = pwindow;
474 PrefsRenderFarmConsolidate::~PrefsRenderFarmConsolidate()
477 int PrefsRenderFarmConsolidate::handle_event()
479 pwindow->thread->preferences->renderfarm_consolidate = get_value();
484 PrefsRenderFarmPort::PrefsRenderFarmPort(PreferencesWindow *pwindow,
485 PerformancePrefs *subwindow,
488 : BC_TumbleTextBox(subwindow,
489 (int64_t)pwindow->thread->preferences->renderfarm_port,
490 (int64_t)1, (int64_t)65535, x, y, xS(100))
492 this->pwindow = pwindow;
495 PrefsRenderFarmPort::~PrefsRenderFarmPort()
499 int PrefsRenderFarmPort::handle_event()
501 pwindow->thread->preferences->renderfarm_port = atol(get_text());
507 PrefsRenderFarmNodes::PrefsRenderFarmNodes(PreferencesWindow *pwindow,
508 PerformancePrefs *subwindow, int x, int y)
509 : BC_ListBox(x, y, xS(340), yS(230), LISTBOX_TEXT, 0,0,0,1, 0,0, LISTBOX_MULTIPLE)
511 for( int i=0; i<PerformancePrefs::TOTAL_COLUMNS; ++i ) {
512 titles[i] = _(default_titles[i]);
513 widths[i] = xS(default_widths[i]);
515 update(subwindow->nodes, titles, widths, PerformancePrefs::TOTAL_COLUMNS,
517 this->subwindow = subwindow;
518 this->pwindow = pwindow;
520 PrefsRenderFarmNodes::~PrefsRenderFarmNodes()
524 int PrefsRenderFarmNodes::column_resize_event()
526 for( int i=0; i<PerformancePrefs::TOTAL_COLUMNS; ++i )
527 widths[i] = get_column_width(i);
531 int PrefsRenderFarmNodes::handle_event()
534 if(get_selection_number(0, 0) >= 0)
536 subwindow->hot_node = get_selection_number(1, 0);
537 subwindow->edit_node->update(get_selection(1, 0)->get_text());
538 const char *text = get_selection(2, 0)->get_text();
539 subwindow->edit_port->update(text);
540 pwindow->thread->preferences->renderfarm_port = atol(text);
541 if(get_cursor_x() < widths[0])
543 pwindow->thread->preferences->renderfarm_enabled.values[subwindow->hot_node] =
544 !pwindow->thread->preferences->renderfarm_enabled.values[subwindow->hot_node];
545 subwindow->generate_node_list();
546 subwindow->update_node_list();
551 subwindow->hot_node = -1;
552 subwindow->edit_node->update("");
557 int PrefsRenderFarmNodes::selection_changed()
564 PrefsRenderFarmEditNode::PrefsRenderFarmEditNode(PreferencesWindow *pwindow, PerformancePrefs *subwindow, int x, int y)
565 : BC_TextBox(x, y, xS(240), 1, "")
567 this->pwindow = pwindow;
568 this->subwindow = subwindow;
571 PrefsRenderFarmEditNode::~PrefsRenderFarmEditNode()
575 int PrefsRenderFarmEditNode::handle_event()
581 PrefsRenderFarmNewNode::PrefsRenderFarmNewNode(PreferencesWindow *pwindow, PerformancePrefs *subwindow, int x, int y)
582 : BC_GenericButton(x, y, _("Add Nodes"))
584 this->pwindow = pwindow;
585 this->subwindow = subwindow;
586 // *** CONTEXT_HELP ***
587 context_help_set_keyword("Render Farm Menu");
589 PrefsRenderFarmNewNode::~PrefsRenderFarmNewNode()
592 int PrefsRenderFarmNewNode::handle_event()
594 const char *name = subwindow->edit_node->get_text();
595 char *cp = (char*)subwindow->edit_port->get_text();
596 int64_t start_port = strtol(cp, &cp, 0), end_port = start_port;
597 while( isspace(*cp) ) ++cp;
599 end_port = strtol(cp, &cp, 0);
600 for( int port=start_port; port<=end_port; ++port ) {
601 pwindow->thread->preferences->add_node(name, port, 1, 0.0);
603 pwindow->thread->preferences->renderfarm_port = end_port;
604 subwindow->edit_port->update(end_port);
605 pwindow->thread->preferences->reset_rates();
606 subwindow->generate_node_list();
607 subwindow->update_node_list();
608 subwindow->hot_node = -1;
613 PrefsRenderFarmReplaceNode::PrefsRenderFarmReplaceNode(PreferencesWindow *pwindow, PerformancePrefs *subwindow, int x, int y)
614 : BC_GenericButton(x, y, _("Apply Changes"))
616 this->pwindow = pwindow;
617 this->subwindow = subwindow;
618 // *** CONTEXT_HELP ***
619 context_help_set_keyword("Render Farm Menu");
621 PrefsRenderFarmReplaceNode::~PrefsRenderFarmReplaceNode()
624 int PrefsRenderFarmReplaceNode::handle_event()
626 if(subwindow->hot_node >= 0)
628 pwindow->thread->preferences->edit_node(subwindow->hot_node,
629 subwindow->edit_node->get_text(),
630 pwindow->thread->preferences->renderfarm_port,
631 pwindow->thread->preferences->renderfarm_enabled.values[subwindow->hot_node]);
632 subwindow->generate_node_list();
633 subwindow->update_node_list();
639 PrefsRenderFarmDelNode::PrefsRenderFarmDelNode(PreferencesWindow *pwindow, PerformancePrefs *subwindow, int x, int y)
640 : BC_GenericButton(x, y, _("Delete Nodes"))
642 this->pwindow = pwindow;
643 this->subwindow = subwindow;
644 // *** CONTEXT_HELP ***
645 context_help_set_keyword("Render Farm Menu");
647 PrefsRenderFarmDelNode::~PrefsRenderFarmDelNode()
650 int PrefsRenderFarmDelNode::handle_event()
652 ArrayList<BC_ListBoxItem *> &item_list = subwindow->nodes[0];
653 for( int i=item_list.size(); --i>=0; ) {
654 if( !item_list[i]->get_selected() ) continue;
655 pwindow->thread->preferences->delete_node(i);
657 subwindow->generate_node_list();
658 subwindow->update_node_list();
659 subwindow->hot_node = -1;
664 PrefsRenderFarmSortNodes::PrefsRenderFarmSortNodes(PreferencesWindow *pwindow,
665 PerformancePrefs *subwindow,
668 : BC_GenericButton(x, y, _("Sort nodes"))
670 this->pwindow = pwindow;
671 this->subwindow = subwindow;
672 // *** CONTEXT_HELP ***
673 context_help_set_keyword("Render Farm Menu");
676 PrefsRenderFarmSortNodes::~PrefsRenderFarmSortNodes()
680 int PrefsRenderFarmSortNodes::handle_event()
682 pwindow->thread->preferences->sort_nodes();
683 subwindow->generate_node_list();
684 subwindow->update_node_list();
685 subwindow->hot_node = -1;
690 PrefsRenderFarmReset::PrefsRenderFarmReset(PreferencesWindow *pwindow,
691 PerformancePrefs *subwindow, int x, int y)
692 : BC_GenericButton(x, y, _("Reset rates"))
694 this->pwindow = pwindow;
695 this->subwindow = subwindow;
696 // *** CONTEXT_HELP ***
697 context_help_set_keyword("Render Farm Menu");
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;
716 PrefsProjectSMP::PrefsProjectSMP(PreferencesWindow *pwindow,
717 PerformancePrefs *subwindow, int x, int y)
718 : BC_TumbleTextBox(subwindow,
719 (int64_t)pwindow->thread->preferences->project_smp,
720 (int64_t)1, (int64_t)100, x, y, xS(100))
722 this->pwindow = pwindow;
724 PrefsProjectSMP::~PrefsProjectSMP()
727 int PrefsProjectSMP::handle_event()
729 pwindow->thread->preferences->project_smp = atol(get_text());
734 PrefsRenderFarmJobs::PrefsRenderFarmJobs(PreferencesWindow *pwindow,
735 PerformancePrefs *subwindow,
738 : BC_TumbleTextBox(subwindow,
739 (int64_t)pwindow->thread->preferences->renderfarm_job_count,
740 (int64_t)1, (int64_t)100, x, y, xS(100))
742 this->pwindow = pwindow;
744 PrefsRenderFarmJobs::~PrefsRenderFarmJobs()
747 int PrefsRenderFarmJobs::handle_event()
749 pwindow->thread->preferences->renderfarm_job_count = atol(get_text());
754 PrefsRenderFarmMountpoint::PrefsRenderFarmMountpoint(PreferencesWindow *pwindow,
755 PerformancePrefs *subwindow, int x, int y)
756 : BC_TextBox(x, y, xS(100), 1,
757 pwindow->thread->preferences->renderfarm_mountpoint)
759 this->pwindow = pwindow;
760 this->subwindow = subwindow;
762 PrefsRenderFarmMountpoint::~PrefsRenderFarmMountpoint()
765 int PrefsRenderFarmMountpoint::handle_event()
767 strcpy(pwindow->thread->preferences->renderfarm_mountpoint, get_text());
772 PrefsRenderFarmVFS::PrefsRenderFarmVFS(PreferencesWindow *pwindow,
773 PerformancePrefs *subwindow, int x, int y)
774 : BC_CheckBox(x, y, pwindow->thread->preferences->renderfarm_vfs,
775 _("Use virtual filesystem"))
777 this->pwindow = pwindow;
778 this->subwindow = subwindow;
781 int PrefsRenderFarmVFS::handle_event()
783 pwindow->thread->preferences->renderfarm_vfs = get_value();
788 PrefsRenderFarmWatchdog::PrefsRenderFarmWatchdog(PreferencesWindow *pwindow,
789 PerformancePrefs *subwindow, int x, int y)
790 : BC_TumbleTextBox(subwindow,
791 (int64_t)pwindow->thread->preferences->renderfarm_watchdog_timeout,
792 (int64_t)0, (int64_t)1000, x, y, xS(100))
794 this->pwindow = pwindow;
798 int PrefsRenderFarmWatchdog::handle_event()
800 pwindow->thread->preferences->renderfarm_watchdog_timeout = atol(get_text());