X-Git-Url: http://git.cinelerra-gg.org/git/?p=goodguy%2Fhistory.git;a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fpreferences.C;h=5f9d40ea241dc280b8181a5a357ec0b2248fd937;hp=cee80362c68536ebcad141b2c0cf37e937efd907;hb=502b6f3b6fd04f6b01c6d70dcb81aa304dd0db1c;hpb=7a70932d3e04454177c456d0b42ee2f5318d6ad1 diff --git a/cinelerra-5.1/cinelerra/preferences.C b/cinelerra-5.1/cinelerra/preferences.C index cee80362..5f9d40ea 100644 --- a/cinelerra-5.1/cinelerra/preferences.C +++ b/cinelerra-5.1/cinelerra/preferences.C @@ -27,48 +27,50 @@ #include "cache.inc" #include "clip.h" #include "bchash.h" -#include "file.inc" +#include "file.h" #include "filesystem.h" #include "guicast.h" #include "indexfile.h" +#include "maxchannels.h" #include "mutex.h" #include "preferences.h" +#include "probeprefs.h" #include "shbtnprefs.h" #include "theme.h" #include "videoconfig.h" #include "videodevice.inc" +#include #include #include #include #include -//#define CLAMP(x, y, z) (x) = ((x) < (y) ? (y) : ((x) > (z) ? (z) : (x))) - Preferences::Preferences() { // Set defaults FileSystem fs; - preferences_lock = new Mutex("Preferences::preferences_lock"); - - - get_exe_path(plugin_dir); - strcat(plugin_dir,"/plugins"); - - sprintf(index_directory, BCASTDIR); - if(strlen(index_directory)) +// initial plugin path from build -DPLUGIN_DIR="..." + sprintf(plugin_dir, "%s/", File::get_plugin_path()); + sprintf(index_directory, "%s/", File::get_config_path()); + if( strlen(index_directory) ) fs.complete_path(index_directory); - cache_size = 0x1000000; + cache_size = 0x10000000; index_size = 0x400000; index_count = 500; use_thumbnails = 1; keyframe_reticle = HAIRLINE_DRAGGING; + perpetual_session = 0; + strcpy(lv2_path, DEFAULT_LV2_PATH); + autostart_lv2ui = 0; trap_sigsegv = 1; trap_sigintr = 1; theme[0] = 0; + plugin_icons[0] = 0; + strcpy(snapshot_path, "/tmp"); use_renderfarm = 0; force_uniprocessor = 0; renderfarm_port = DEAMON_PORT; @@ -77,11 +79,21 @@ Preferences::Preferences() renderfarm_mountpoint[0] = 0; renderfarm_vfs = 0; renderfarm_job_count = 20; - processors = calculate_processors(0); + renderfarm_watchdog_timeout = 60; + project_smp = processors = calculate_processors(0); real_processors = calculate_processors(1); - ffmpeg_early_probe = 0; ffmpeg_marker_indexes = 1; warn_indexes = 1; + warn_version = 1; + bd_warn_root = 1; + popupmenu_btnup = 1; + grab_input_focus = 1; + textbox_focus_policy = 0; + forward_render_displacement = 0; + dvd_yuv420p_interlace = 0; + highlight_inverse = 0xffffff; + yuv_color_space = BC_COLORS_BT601; + yuv_color_range = BC_COLORS_JPEG; // Default brender asset brender_asset = new Asset; @@ -102,14 +114,12 @@ Preferences::Preferences() android_port = 23432; strcpy(android_pin, "cinelerra"); - for(int i = 0; i < MAXCHANNELS; i++) - { - for(int j = 0; j < i + 1; j++) - { - int position = 180 - (360 * j / (i + 1)); - while(position < 0) position += 360; - channel_positions[i * MAXCHANNELS + j] = position; - } + memset(channel_positions, 0, sizeof(channel_positions)); + int channels = 0; + while( channels < MAXCHANNELS ) { + int *positions = channel_positions[channels++]; + for( int i=0; iGarbage::remove_user(); shbtn_prefs.remove_all_objects(); + file_probes.remove_all_objects(); renderfarm_nodes.remove_all_objects(); delete preferences_lock; } @@ -128,26 +139,19 @@ void Preferences::copy_rates_from(Preferences *preferences) // one of the nodes in the source is the master node. local_rate = preferences->local_rate; - for(int j = 0; - j < preferences->renderfarm_nodes.total; - j++) - { + for( int j=0; jrenderfarm_nodes.total; ++j ) { double new_rate = preferences->renderfarm_rate.values[j]; // Put in the master node - if(preferences->renderfarm_nodes.values[j][0] == '/') - { - if(!EQUIV(new_rate, 0.0)) + if( preferences->renderfarm_nodes.values[j][0] == '/' ) { + if( !EQUIV(new_rate, 0.0) ) local_rate = new_rate; } else // Search for local node and copy it to that node - if(!EQUIV(new_rate, 0.0)) - { - for(int i = 0; i < renderfarm_nodes.total; i++) - { - if(!strcmp(preferences->renderfarm_nodes.values[j], renderfarm_nodes.values[i]) && - preferences->renderfarm_ports.values[j] == renderfarm_ports.values[i]) - { + if( !EQUIV(new_rate, 0.0) ) { + for( int i=0; irenderfarm_nodes.values[j], renderfarm_nodes.values[i]) && + preferences->renderfarm_ports.values[j] == renderfarm_ports.values[i] ) { renderfarm_rate.values[i] = new_rate; break; } @@ -167,7 +171,10 @@ void Preferences::copy_from(Preferences *that) index_count = that->index_count; use_thumbnails = that->use_thumbnails; keyframe_reticle = that->keyframe_reticle; + perpetual_session = that->perpetual_session; strcpy(theme, that->theme); + strcpy(plugin_icons, that->plugin_icons); + strcpy(snapshot_path, that->snapshot_path); use_tipwindow = that->use_tipwindow; scan_commercials = that->scan_commercials; @@ -177,22 +184,36 @@ void Preferences::copy_from(Preferences *that) this->shbtn_prefs.remove_all_objects(); for( int i=0; ishbtn_prefs.size(); ++i ) this->shbtn_prefs.append(new ShBtnPref(*that->shbtn_prefs[i])); + this->file_probes.remove_all_objects(); + for( int i=0; ifile_probes.size(); ++i ) + this->file_probes.append(new ProbePref(*that->file_probes[i])); cache_size = that->cache_size; + project_smp = that->project_smp; force_uniprocessor = that->force_uniprocessor; + strcpy(lv2_path, that->lv2_path); + autostart_lv2ui = that->autostart_lv2ui; trap_sigsegv = that->trap_sigsegv; trap_sigintr = that->trap_sigintr; processors = that->processors; real_processors = that->real_processors; - ffmpeg_early_probe = that->ffmpeg_early_probe; ffmpeg_marker_indexes = that->ffmpeg_marker_indexes; warn_indexes = that->warn_indexes; + warn_version = that->warn_version; + bd_warn_root = that->bd_warn_root; + popupmenu_btnup = that->popupmenu_btnup; + grab_input_focus = that->grab_input_focus; + textbox_focus_policy = that->textbox_focus_policy; + forward_render_displacement = that->forward_render_displacement; + dvd_yuv420p_interlace = that->dvd_yuv420p_interlace; + highlight_inverse = that->highlight_inverse; + yuv_color_space = that->yuv_color_space; + yuv_color_range = that->yuv_color_range; renderfarm_nodes.remove_all_objects(); renderfarm_ports.remove_all(); renderfarm_enabled.remove_all(); renderfarm_rate.remove_all(); local_rate = that->local_rate; - for(int i = 0; i < that->renderfarm_nodes.size(); i++) - { + for( int i=0; irenderfarm_nodes.size(); ++i ) { add_node(that->renderfarm_nodes.get(i), that->renderfarm_ports.get(i), that->renderfarm_enabled.get(i), @@ -203,6 +224,7 @@ void Preferences::copy_from(Preferences *that) render_preroll = that->render_preroll; brender_preroll = that->brender_preroll; renderfarm_job_count = that->renderfarm_job_count; + renderfarm_watchdog_timeout = that->renderfarm_watchdog_timeout; renderfarm_vfs = that->renderfarm_vfs; strcpy(renderfarm_mountpoint, that->renderfarm_mountpoint); renderfarm_consolidate = that->renderfarm_consolidate; @@ -213,13 +235,12 @@ void Preferences::copy_from(Preferences *that) // Check boundaries FileSystem fs; - if(strlen(index_directory)) - { + if( strlen(index_directory) ) { fs.complete_path(index_directory); fs.add_end_slash(index_directory); } -// if(strlen(global_plugin_dir)) +// if( strlen(global_plugin_dir) ) // { // fs.complete_path(global_plugin_dir); // fs.add_end_slash(global_plugin_dir); @@ -244,42 +265,31 @@ printf("Preferences::operator=\n"); return *this; } -void Preferences::print_channels(char *string, - int *channel_positions, - int channels) +void Preferences::print_channels(char *string, int *channel_positions, int channels) { - char string3[BCTEXTLEN]; - string[0] = 0; - for(int j = 0; j < channels; j++) - { - sprintf(string3, "%d", channel_positions[j]); - strcat(string, string3); - if(j < channels - 1) - strcat(string, ","); + char *cp = string, *ep = cp+BCTEXTLEN-1; + for( int i=0; i= channels) break; + for(;;) { + while( isspace(*cp) ) ++cp; + if( !cp ) break; + channel_positions[current_channel++] = strtol(cp, &cp, 0); + if( current_channel >= channels ) break; + while( isspace(*cp) ) ++cp; + if( *cp == ',' ) ++cp; + } + while( current_channel < channels ) { + int pos = default_audio_channel_position(current_channel, channels); + channel_positions[current_channel++] = pos; } } @@ -295,43 +305,44 @@ int Preferences::load_defaults(BC_Hash *defaults) defaults->get("INDEX_DIRECTORY", index_directory); index_size = defaults->get("INDEX_SIZE", index_size); index_count = defaults->get("INDEX_COUNT", index_count); - use_thumbnails = defaults->get("USE_THUMBNAILS", use_thumbnails); keyframe_reticle = defaults->get("KEYFRAME_RETICLE", keyframe_reticle); + perpetual_session = defaults->get("PERPETUAL_SESSION", perpetual_session); + strcpy(lv2_path, DEFAULT_LV2_PATH); + defaults->get("LV2_PATH", lv2_path); + autostart_lv2ui = defaults->get("AUTOSTART_LV2UI", autostart_lv2ui); trap_sigsegv = defaults->get("TRAP_SIGSEGV", trap_sigsegv); trap_sigintr = defaults->get("TRAP_SIGINTR", trap_sigintr); - strcpy(theme, DEFAULT_THEME); + strcpy(theme, _(DEFAULT_THEME)); + strcpy(plugin_icons, DEFAULT_PICON); defaults->get("THEME", theme); + defaults->get("PLUGIN_ICONS", plugin_icons); + strcpy(snapshot_path, "/tmp"); + defaults->get("SNAPSHOT_PATH", snapshot_path); - for(int i = 0; i < MAXCHANNELS; i++) - { + for( int i=0; iget(string, string2); - - scan_channels(string2, - &channel_positions[i * MAXCHANNELS], - i + 1); + scan_channels(string2, &channel_positions[i][0], i+1); } + brender_asset->load_defaults(defaults, "BRENDER_", 1, 1, 1, 0, 0); - brender_asset->load_defaults(defaults, - "BRENDER_", - 1, - 1, - 1, - 0, - 0); - - - + project_smp = defaults->get("PROJECT_SMP", project_smp); force_uniprocessor = defaults->get("FORCE_UNIPROCESSOR", force_uniprocessor); - ffmpeg_early_probe = defaults->get("FFMPEG_EARLY_PROBE", ffmpeg_early_probe); ffmpeg_marker_indexes = defaults->get("FFMPEG_MARKER_INDEXES", ffmpeg_marker_indexes); warn_indexes = defaults->get("WARN_INDEXES", warn_indexes); + warn_version = defaults->get("WARN_VERSION", warn_version); + bd_warn_root = defaults->get("BD_WARN_ROOT", bd_warn_root); + popupmenu_btnup = defaults->get("POPUPMENU_BTNUP", popupmenu_btnup); + grab_input_focus = defaults->get("GRAB_FOCUS", grab_input_focus); + textbox_focus_policy = defaults->get("TEXTBOX_FOCUS_POLICY", textbox_focus_policy); + forward_render_displacement = defaults->get("FORWARD_RENDER_DISPLACEMENT", forward_render_displacement); + dvd_yuv420p_interlace = defaults->get("DVD_YUV420P_INTERLACE", dvd_yuv420p_interlace); + highlight_inverse = defaults->get("HIGHLIGHT_INVERSE", highlight_inverse); + yuv_color_space = defaults->get("YUV_COLOR_SPACE", yuv_color_space); + yuv_color_range = defaults->get("YUV_COLOR_RANGE", yuv_color_range); use_brender = defaults->get("USE_BRENDER", use_brender); brender_fragment = defaults->get("BRENDER_FRAGMENT", brender_fragment); cache_size = defaults->get("CACHE_SIZE", cache_size); @@ -341,13 +352,13 @@ int Preferences::load_defaults(BC_Hash *defaults) render_preroll = defaults->get("RENDERFARM_PREROLL", render_preroll); brender_preroll = defaults->get("BRENDER_PREROLL", brender_preroll); renderfarm_job_count = defaults->get("RENDERFARM_JOBS_COUNT", renderfarm_job_count); + renderfarm_watchdog_timeout = defaults->get("RENDERFARM_WATCHDOG_TIMEOUT", renderfarm_watchdog_timeout); renderfarm_consolidate = defaults->get("RENDERFARM_CONSOLIDATE", renderfarm_consolidate); // renderfarm_vfs = defaults->get("RENDERFARM_VFS", renderfarm_vfs); defaults->get("RENDERFARM_MOUNTPOINT", renderfarm_mountpoint); int renderfarm_total = defaults->get("RENDERFARM_TOTAL", 0); - for(int i = 0; i < renderfarm_total; i++) - { + for( int i = 0; i < renderfarm_total; i++ ) { sprintf(string, "RENDERFARM_NODE%d", i); char result[BCTEXTLEN]; int result_port = 0; @@ -366,8 +377,7 @@ int Preferences::load_defaults(BC_Hash *defaults) sprintf(string, "RENDERFARM_RATE%d", i); result_rate = defaults->get(string, result_rate); - if(result[0] != 0) - { + if( result[0] != 0 ) { add_node(result, result_port, result_enabled, result_rate); } } @@ -375,9 +385,12 @@ int Preferences::load_defaults(BC_Hash *defaults) shbtn_prefs.remove_all_objects(); int shbtns_total = defaults->get("SHBTNS_TOTAL", -1); if( shbtns_total < 0 ) { - shbtn_prefs.append(new ShBtnPref("Features5", "firefox file:///$CINELERRA_PATH/doc/Features5.pdf", 0)); - shbtn_prefs.append(new ShBtnPref("Online Help", "firefox https://cinelerra-cv.org/docs.php", 0)); - shbtn_prefs.append(new ShBtnPref("Orignal Manual", "firefox file:///$CINELERRA_PATH/doc/cinelerra.html", 0)); + shbtn_prefs.append(new ShBtnPref(_("Features5"), "$CIN_BROWSER file://$CIN_DAT/doc/Features5.pdf", 0)); + shbtn_prefs.append(new ShBtnPref(_("Online Help"), "$CIN_BROWSER https://cinelerra-cv.org/docs.php", 0)); + shbtn_prefs.append(new ShBtnPref(_("Original Manual"), "$CIN_BROWSER file://$CIN_DAT/doc/cinelerra.html", 0)); + shbtn_prefs.append(new ShBtnPref(_("Setting Shell Commands"), "$CIN_BROWSER file://$CIN_DAT/doc/ShellCmds.html", 0)); + shbtn_prefs.append(new ShBtnPref(_("Shortcuts"), "$CIN_BROWSER file://$CIN_DAT/doc/shortcuts.html", 0)); + shbtn_prefs.append(new ShBtnPref(_("RenderMux"), "$CIN_DAT/doc/RenderMux.sh",0)); shbtns_total = 0; } for( int i=0; iget("FILE_PROBE_TOTAL", 0); + for( int i=0; iget(string, name); + sprintf(string, "FILE_PROBE%d_ARMED", i); + int armed = defaults->get(string, 1); + file_probes.append(new ProbePref(name, armed)); + } + // append any missing probes + for( int i=0; i=0 && strcmp(nm, file_probes[k]->name) ); + if( k >= 0 ) continue; + int armed = 1; + if( !strcmp(nm, "FFMPEG_Late") || + !strcmp(nm, "CR2") ) armed = 0; + file_probes.append(new ProbePref(nm, armed)); + } + // Redo with the proper value of force_uniprocessor processors = calculate_processors(0); boundaries(); @@ -414,31 +449,37 @@ int Preferences::save_defaults(BC_Hash *defaults) defaults->update("INDEX_COUNT", index_count); defaults->update("USE_THUMBNAILS", use_thumbnails); defaults->update("KEYFRAME_RETICLE", keyframe_reticle); + defaults->update("PERPETUAL_SESSION", perpetual_session); + defaults->update("LV2_PATH", lv2_path); + defaults->update("AUTOSTART_LV2UI", autostart_lv2ui); defaults->update("TRAP_SIGSEGV", trap_sigsegv); defaults->update("TRAP_SIGINTR", trap_sigintr); -// defaults->update("GLOBAL_PLUGIN_DIR", global_plugin_dir); defaults->update("THEME", theme); + defaults->update("PLUGIN_ICONS", plugin_icons); + defaults->update("SNAPSHOT_PATH", snapshot_path); - - for(int i = 0; i < MAXCHANNELS; i++) - { + for( int i = 0; i < MAXCHANNELS; i++ ) { char string2[BCTEXTLEN]; sprintf(string, "CHANNEL_POSITIONS%d", i); - print_channels(string2, &channel_positions[i * MAXCHANNELS], i + 1); + print_channels(string2, &channel_positions[i][0], i + 1); defaults->update(string, string2); } + defaults->update("PROJECT_SMP", project_smp); defaults->update("FORCE_UNIPROCESSOR", force_uniprocessor); - defaults->update("FFMPEG_EARLY_PROBE", ffmpeg_early_probe); defaults->update("FFMPEG_MARKER_INDEXES", ffmpeg_marker_indexes); defaults->update("WARN_INDEXES", warn_indexes); - brender_asset->save_defaults(defaults, - "BRENDER_", - 1, - 1, - 1, - 0, - 0); + defaults->update("WARN_VERSION", warn_version); + defaults->update("BD_WARN_ROOT", bd_warn_root); + defaults->update("POPUPMENU_BTNUP", popupmenu_btnup); + defaults->update("GRAB_FOCUS", grab_input_focus); + defaults->update("TEXTBOX_FOCUS_POLICY", textbox_focus_policy); + defaults->update("FORWARD_RENDER_DISPLACEMENT", forward_render_displacement); + defaults->update("DVD_YUV420P_INTERLACE", dvd_yuv420p_interlace); + defaults->update("HIGHLIGHT_INVERSE", highlight_inverse); + defaults->update("YUV_COLOR_SPACE", yuv_color_space); + defaults->update("YUV_COLOR_RANGE", yuv_color_range); + brender_asset->save_defaults(defaults, "BRENDER_", 1, 1, 1, 0, 0); defaults->update("USE_BRENDER", use_brender); defaults->update("BRENDER_FRAGMENT", brender_fragment); defaults->update("USE_RENDERFARM", use_renderfarm); @@ -449,10 +490,10 @@ int Preferences::save_defaults(BC_Hash *defaults) // defaults->update("RENDERFARM_VFS", renderfarm_vfs); defaults->update("RENDERFARM_MOUNTPOINT", renderfarm_mountpoint); defaults->update("RENDERFARM_JOBS_COUNT", renderfarm_job_count); + defaults->update("RENDERFARM_WATCHDOG_TIMEOUT", renderfarm_watchdog_timeout); defaults->update("RENDERFARM_CONSOLIDATE", renderfarm_consolidate); defaults->update("RENDERFARM_TOTAL", (int64_t)renderfarm_nodes.total); - for(int i = 0; i < renderfarm_nodes.total; i++) - { + for( int i = 0; i < renderfarm_nodes.total; i++ ) { sprintf(string, "RENDERFARM_NODE%d", i); defaults->update(string, renderfarm_nodes.values[i]); sprintf(string, "RENDERFARM_PORT%d", i); @@ -472,13 +513,21 @@ int Preferences::save_defaults(BC_Hash *defaults) sprintf(string, "SHBTN%d_WARN", i); defaults->update(string, pref->warn); } + defaults->update("FILE_PROBE_TOTAL", file_probes.size()); + for( int i=0; iupdate(string, pref->name); + sprintf(string, "FILE_PROBE%d_ARMED", i); + defaults->update(string, pref->armed); + } return 0; } void Preferences::add_node(const char *text, int port, int enabled, float rate) { - if(text[0] == 0) return; + if( text[0] == 0 ) return; preferences_lock->lock("Preferences::add_node"); char *new_item = new char[strlen(text) + 1]; @@ -494,8 +543,7 @@ void Preferences::add_node(const char *text, int port, int enabled, float rate) void Preferences::delete_node(int number) { preferences_lock->lock("Preferences::delete_node"); - if(number < renderfarm_nodes.total && number >= 0) - { + if( number < renderfarm_nodes.total && number >= 0 ) { delete [] renderfarm_nodes.values[number]; renderfarm_nodes.remove_number(number); renderfarm_ports.remove_number(number); @@ -508,7 +556,7 @@ void Preferences::delete_node(int number) void Preferences::delete_nodes() { preferences_lock->lock("Preferences::delete_nodes"); - for(int i = 0; i < renderfarm_nodes.total; i++) + for( int i = 0; i < renderfarm_nodes.total; i++ ) delete [] renderfarm_nodes.values[i]; renderfarm_nodes.remove_all(); renderfarm_ports.remove_all(); @@ -519,8 +567,7 @@ void Preferences::delete_nodes() void Preferences::reset_rates() { - for(int i = 0; i < renderfarm_nodes.total; i++) - { + for( int i = 0; i < renderfarm_nodes.total; i++ ) { renderfarm_rate.values[i] = 0.0; } local_rate = 0.0; @@ -528,18 +575,14 @@ void Preferences::reset_rates() float Preferences::get_rate(int node) { - if(node < 0) - { + if( node < 0 ) { return local_rate; } - else - { + else { int total = 0; - for(int i = 0; i < renderfarm_nodes.size(); i++) - { - if(renderfarm_enabled.get(i)) total++; - if(total == node + 1) - { + for( int i = 0; i < renderfarm_nodes.size(); i++ ) { + if( renderfarm_enabled.get(i) ) total++; + if( total == node + 1 ) { return renderfarm_rate.get(i); } } @@ -551,18 +594,14 @@ float Preferences::get_rate(int node) void Preferences::set_rate(float rate, int node) { //printf("Preferences::set_rate %f %d\n", rate, node); - if(node < 0) - { + if( node < 0 ) { local_rate = rate; } - else - { + else { int total = 0; - for(int i = 0; i < renderfarm_nodes.size(); i++) - { - if(renderfarm_enabled.get(i)) total++; - if(total == node + 1) - { + for( int i = 0; i < renderfarm_nodes.size(); i++ ) { + if( renderfarm_enabled.get(i) ) total++; + if( total == node + 1 ) { renderfarm_rate.set(i, rate); return; } @@ -574,38 +613,31 @@ float Preferences::get_avg_rate(int use_master_node) { preferences_lock->lock("Preferences::get_avg_rate"); float total = 0.0; - if(renderfarm_rate.total) - { + if( renderfarm_rate.total ) { int enabled = 0; - if(use_master_node) - { - if(EQUIV(local_rate, 0.0)) - { + if( use_master_node ) { + if( EQUIV(local_rate, 0.0) ) { preferences_lock->unlock(); return 0.0; } - else - { + else { enabled++; total += local_rate; } } - for(int i = 0; i < renderfarm_rate.total; i++) - { - if(renderfarm_enabled.values[i]) - { + for( int i = 0; i < renderfarm_rate.total; i++ ) { + if( renderfarm_enabled.values[i] ) { enabled++; total += renderfarm_rate.values[i]; - if(EQUIV(renderfarm_rate.values[i], 0.0)) - { + if( EQUIV(renderfarm_rate.values[i], 0.0) ) { preferences_lock->unlock(); return 0.0; } } } - if(enabled) + if( enabled ) total /= enabled; else total = 0.0; @@ -622,10 +654,8 @@ void Preferences::sort_nodes() while(!done) { done = 1; - for(int i = 0; i < renderfarm_nodes.total - 1; i++) - { - if(strcmp(renderfarm_nodes.values[i], renderfarm_nodes.values[i + 1]) > 0) - { + for( int i = 0; i < renderfarm_nodes.total - 1; i++ ) { + if( strcmp(renderfarm_nodes.values[i], renderfarm_nodes.values[i + 1]) > 0 ) { char *temp = renderfarm_nodes.values[i]; int temp_port = renderfarm_ports.values[i]; @@ -663,19 +693,17 @@ void Preferences::edit_node(int number, int Preferences::get_enabled_nodes() { int result = 0; - for(int i = 0; i < renderfarm_enabled.total; i++) - if(renderfarm_enabled.values[i]) result++; + for( int i = 0; i < renderfarm_enabled.total; i++ ) + if( renderfarm_enabled.values[i] ) result++; return result; } const char* Preferences::get_node_hostname(int number) { int total = 0; - for(int i = 0; i < renderfarm_nodes.total; i++) - { - if(renderfarm_enabled.values[i]) - { - if(total == number) + for( int i = 0; i < renderfarm_nodes.total; i++ ) { + if( renderfarm_enabled.values[i] ) { + if( total == number ) return renderfarm_nodes.values[i]; else total++; @@ -687,11 +715,9 @@ const char* Preferences::get_node_hostname(int number) int Preferences::get_node_port(int number) { int total = 0; - for(int i = 0; i < renderfarm_ports.total; i++) - { - if(renderfarm_enabled.values[i]) - { - if(total == number) + for( int i = 0; i < renderfarm_ports.total; i++ ) { + if( renderfarm_enabled.values[i] ) { + if( total == number ) return renderfarm_ports.values[i]; else total++; @@ -704,7 +730,8 @@ int Preferences::get_asset_file_path(Asset *asset, char *path) { strcpy(path, asset->path); int result = !access(path, R_OK) ? 0 : -1; - if( !result && asset->format == FILE_MPEG ) { + if( !result && ( asset->format == FILE_MPEG || asset->format == FILE_AC3 || + asset->format == FILE_VMPEG || asset->format == FILE_AMPEG ) ) { char source_filename[BCTEXTLEN], index_filename[BCTEXTLEN]; IndexFile::get_index_filename(source_filename, index_directory, index_filename, asset->path, ".toc"); @@ -719,7 +746,23 @@ int Preferences::get_asset_file_path(Asset *asset, char *path) int Preferences::calculate_processors(int interactive) { - if(force_uniprocessor && !interactive) return 1; + if( force_uniprocessor && !interactive ) return 1; return BC_WindowBase::get_resources()->machine_cpus; } +int Preferences::get_file_probe_armed(const char *nm) +{ + int k = file_probes.size(); + while( --k>=0 && strcmp(nm, file_probes[k]->name) ); + if( k < 0 ) return -1; + return file_probes[k]->armed; +} + +void Preferences::set_file_probe_armed(const char *nm, int v) +{ + int k = file_probes.size(); + while( --k>=0 && strcmp(nm, file_probes[k]->name) ); + if( k < 0 ) return; + file_probes[k]->armed = v; +} +