X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fperformanceprefs.C;h=5c35553f1d9f5c93e7aaadf690ee822cde8920da;hb=eecf057a9d6b8c8cffc7d0001bff89bc9cac7b05;hp=84672769fc7251ea6bba1c4323772e17999eccbe;hpb=5a1b2bb96f2bd6b7ef4f8031763683726c02219d;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.1/cinelerra/performanceprefs.C b/cinelerra-5.1/cinelerra/performanceprefs.C index 84672769..5c35553f 100644 --- a/cinelerra-5.1/cinelerra/performanceprefs.C +++ b/cinelerra-5.1/cinelerra/performanceprefs.C @@ -28,6 +28,7 @@ #include "mwindow.h" #include "performanceprefs.h" #include "preferences.h" +#include #include #include "theme.h" @@ -55,13 +56,13 @@ void PerformancePrefs::create_objects() { 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(); @@ -69,68 +70,33 @@ void PerformancePrefs::create_objects() 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 @@ -141,38 +107,28 @@ void PerformancePrefs::create_objects() 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 @@ -181,7 +137,7 @@ void PerformancePrefs::create_objects() 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; @@ -190,84 +146,42 @@ void PerformancePrefs::create_objects() 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; } @@ -302,32 +216,25 @@ void PerformancePrefs::generate_node_list() } } -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)); } @@ -374,21 +281,11 @@ int PrefsUseBRender::handle_event() } - - - - 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; } @@ -398,27 +295,13 @@ int PrefsBRenderFragment::handle_event() 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); @@ -480,15 +363,6 @@ int PrefsBRenderPreroll::handle_event() } - - - - - - - - - PrefsRenderFarm::PrefsRenderFarm(PreferencesWindow *pwindow, int x, int y) : BC_CheckBox(x, y, @@ -507,8 +381,6 @@ int PrefsRenderFarm::handle_event() } - - PrefsForceUniprocessor::PrefsForceUniprocessor(PreferencesWindow *pwindow, int x, int y) : BC_CheckBox(x, y, @@ -526,77 +398,6 @@ int PrefsForceUniprocessor::handle_event() 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) @@ -617,9 +418,6 @@ int PrefsRenderFarmConsolidate::handle_event() } - - - PrefsRenderFarmPort::PrefsRenderFarmPort(PreferencesWindow *pwindow, PerformancePrefs *subwindow, int x, @@ -648,19 +446,15 @@ int PrefsRenderFarmPort::handle_event() 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; inodes, titles, widths, PerformancePrefs::TOTAL_COLUMNS, + 0, 0, -1, 0, 0); this->subwindow = subwindow; this->pwindow = pwindow; } @@ -670,7 +464,7 @@ PrefsRenderFarmNodes::~PrefsRenderFarmNodes() int PrefsRenderFarmNodes::column_resize_event() { - for(int i = 0; i < 3; i++) + for( int i=0; ihot_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] = @@ -706,11 +502,6 @@ int PrefsRenderFarmNodes::selection_changed() } - - - - - PrefsRenderFarmEditNode::PrefsRenderFarmEditNode(PreferencesWindow *pwindow, PerformancePrefs *subwindow, int x, int y) : BC_TextBox(x, y, 240, 1, "") { @@ -728,12 +519,8 @@ int PrefsRenderFarmEditNode::handle_event() } - - - - 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; @@ -743,10 +530,17 @@ PrefsRenderFarmNewNode::~PrefsRenderFarmNewNode() } 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(); @@ -755,11 +549,6 @@ int PrefsRenderFarmNewNode::handle_event() } - - - - - PrefsRenderFarmReplaceNode::PrefsRenderFarmReplaceNode(PreferencesWindow *pwindow, PerformancePrefs *subwindow, int x, int y) : BC_GenericButton(x, y, _("Apply Changes")) { @@ -784,11 +573,8 @@ int PrefsRenderFarmReplaceNode::handle_event() } - - - 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; @@ -798,20 +584,18 @@ PrefsRenderFarmDelNode::~PrefsRenderFarmDelNode() } 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 &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, @@ -836,13 +620,8 @@ int PrefsRenderFarmSortNodes::handle_event() } - - - 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; @@ -857,7 +636,7 @@ int PrefsRenderFarmReset::handle_event() 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; @@ -865,9 +644,6 @@ int PrefsRenderFarmReset::handle_event() } - - - PrefsProjectSMP::PrefsProjectSMP(PreferencesWindow *pwindow, PerformancePrefs *subwindow, int x, int y) : BC_TumbleTextBox(subwindow, @@ -886,20 +662,13 @@ int PrefsProjectSMP::handle_event() } - - - 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; } @@ -913,15 +682,9 @@ int PrefsRenderFarmJobs::handle_event() } - 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; @@ -937,8 +700,6 @@ int PrefsRenderFarmMountpoint::handle_event() } - - PrefsRenderFarmVFS::PrefsRenderFarmVFS(PreferencesWindow *pwindow, PerformancePrefs *subwindow, int x, int y) : BC_CheckBox(x, y, pwindow->thread->preferences->renderfarm_vfs, @@ -955,18 +716,20 @@ int PrefsRenderFarmVFS::handle_event() } -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; } +