X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fmain.C;h=e67dd2f4b5a8b30a182a1f65eb1e178c5242cf18;hb=114b45040c8027671cbe50e7d6cecb28bf73b35f;hp=e41f0cbe9c9369c28491e70839d9d0264c6c3f0b;hpb=7b05ad287956f8bd00836d9b5fb39f899a5fb641;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.1/cinelerra/main.C b/cinelerra-5.1/cinelerra/main.C index e41f0cbe..e67dd2f4 100644 --- a/cinelerra-5.1/cinelerra/main.C +++ b/cinelerra-5.1/cinelerra/main.C @@ -18,6 +18,7 @@ * */ +#include "aboutprefs.h" #include "arraylist.h" #include "batchrender.h" #include "bcsignals.h" @@ -88,7 +89,7 @@ public: //PRINT_TRACE mwindow->load_filenames(filenames, LOADMODE_REPLACE); //PRINT_TRACE - if(filenames->size() == 1) + if( filenames->size() == 1 ) mwindow->gui->mainmenu->add_load(filenames->get(0)); //PRINT_TRACE mwindow->gui->unlock_window(); @@ -114,10 +115,10 @@ int main(int argc, char *argv[]) char config_path[BCTEXTLEN]; char batch_path[BCTEXTLEN]; int nice_value = 20; + int load_perpetual = 1; config_path[0] = 0; batch_path[0] = 0; deamon_path[0] = 0; - EDL::id_lock = new Mutex("EDL::id_lock"); Units::init(); File::init_cin_path(); @@ -137,24 +138,24 @@ int main(int argc, char *argv[]) // Extract from locale language & region char locbuf[32], *p; locbuf[0] = 0; - if((p = strchr(loc, '.')) != 0 && (p - loc) < (int)sizeof(locbuf)-1) { + if( (p = strchr(loc, '.')) != 0 && (p - loc) < (int)sizeof(locbuf)-1 ) { strncpy(locbuf, loc, p - loc); locbuf[p - loc] = 0; } - else if(strlen(loc) < sizeof(locbuf)-1) + else if( strlen(loc) < sizeof(locbuf)-1 ) strcpy(locbuf, loc); // Locale 'C' does not give useful language info - assume en - if(!locbuf[0] || locbuf[0] == 'C') + if( !locbuf[0] || locbuf[0] == 'C' ) strcpy(locbuf, "en"); - if((p = strchr(locbuf, '_')) && p - locbuf < LEN_LANG) { + if( (p = strchr(locbuf, '_')) && p - locbuf < LEN_LANG ) { *p++ = 0; strcpy(BC_Resources::language, locbuf); - if(strlen(p) < LEN_LANG) + if( strlen(p) < LEN_LANG ) strcpy(BC_Resources::region, p); } - else if(strlen(locbuf) < LEN_LANG) + else if( strlen(locbuf) < LEN_LANG ) strcpy(BC_Resources::language, locbuf); } else @@ -167,88 +168,62 @@ int main(int argc, char *argv[]) int load_backup = 0; int start_remote_control = 0; - for(int i = 1; i < argc; i++) - { - if(!strcmp(argv[i], "-h")) - { + for( int i = 1; i < argc; i++ ) { + if( !strcmp(argv[i], "-h") ) { operation = DO_USAGE; } - else - if(!strcmp(argv[i], "-z")) - { + else if( !strcmp(argv[i], "-z") ) { start_remote_control = 1; } - else - if(!strcmp(argv[i], "-r")) - { + else if( !strcmp(argv[i], "-r") ) { operation = DO_BATCHRENDER; - if(argc > i + 1) - { - if(argv[i + 1][0] != '-') - { + if( argc > i + 1 ) { + if( argv[i + 1][0] != '-' ) { strcpy(batch_path, argv[i + 1]); i++; } } } - else - if(!strcmp(argv[i], "-c")) - { - if(argc > i + 1) - { + else if( !strcmp(argv[i], "-c") ) { + if( argc > i + 1 ) { strcpy(config_path, argv[i + 1]); i++; } - else - { + else { fprintf(stderr, _("%s: -c needs a filename.\n"), argv[0]); } } - else - if(!strcmp(argv[i], "-d") || !strcmp(argv[i], "-f")) - { - if(!strcmp(argv[i], "-d")) - operation = DO_DEAMON; - else - operation = DO_DEAMON_FG; - - if(argc > i + 1) - { - if(atol(argv[i + 1]) > 0) - { + else if( !strcmp(argv[i], "-d") || !strcmp(argv[i], "-f") ) { + operation = !strcmp(argv[i], "-d") ? DO_DEAMON : DO_DEAMON_FG; + if( argc > i + 1 ) { + if( atol(argv[i + 1]) > 0 ) { deamon_port = atol(argv[i + 1]); i++; } } } - else - if(!strcmp(argv[i], "-b")) - { + else if( !strcmp(argv[i], "-b") ) { operation = DO_BRENDER; - if(i > argc - 2) - { + if( i > argc - 2 ) { fprintf(stderr, _("-b may not be used by the user.\n")); exit(1); } else strcpy(deamon_path, argv[i + 1]); } - else - if(!strcmp(argv[i], "-n")) - { - if(argc > i + 1) - { + else if( !strcmp(argv[i], "-n") ) { + if( argc > i + 1 ) { nice_value = atol(argv[i + 1]); i++; } } - else - if(!strcmp(argv[i], "-x")) - { + else if( !strcmp(argv[i], "-x") ) { load_backup = 1; } - else - { + else if( !strcmp(argv[i], "-S") ) { + load_perpetual = 0; + } + else { char *new_filename; new_filename = new char[BCTEXTLEN]; strcpy(new_filename, argv[i]); @@ -259,13 +234,10 @@ int main(int argc, char *argv[]) - if(operation == DO_GUI || - operation == DO_DEAMON || - operation == DO_DEAMON_FG || - operation == DO_USAGE || - operation == DO_BATCHRENDER) { + if( operation == DO_GUI || + operation == DO_DEAMON || operation == DO_DEAMON_FG || + operation == DO_USAGE || operation == DO_BATCHRENDER) { - fprintf(stderr, PROGRAM_NAME " " CINELERRA_VERSION); #ifndef REPOMAINTXT #define REPOMAINTXT "" #endif @@ -275,17 +247,16 @@ int main(int argc, char *argv[]) #ifndef COPYRIGHTTEXT2 #define COPYRIGHTTEXT2 "" #endif -#ifndef COMPILEDATE -#define COMPILEDATE "" -#endif - fprintf(stderr, REPOMAINTXT COPYRIGHTTEXT1 COPYRIGHTTEXT2 COMPILEDATE - PROGRAM_NAME " is free software, covered by the GNU General Public License,\n" + fprintf(stderr, "%s %s - %s\n%s", + PROGRAM_NAME,CINELERRA_VERSION, AboutPrefs::build_timestamp, + REPOMAINTXT COPYRIGHTTEXT1 COPYRIGHTTEXT2); + fprintf(stderr, "%s is free software, covered by the GNU General Public License,\n" "and you are welcome to change it and/or distribute copies of it under\n" - "certain conditions. There is absolutely no warranty for " PROGRAM_NAME ".\n\n"); + "certain conditions. There is absolutely no warranty for %s.\n\n", + PROGRAM_NAME, PROGRAM_NAME); } - switch(operation) - { + switch( operation ) { case DO_USAGE: printf(_("\nUsage:\n")); printf(_("%s [-f] [-c configuration] [-d port] [-n nice] [-r batch file] [filenames]\n\n"), argv[0]); @@ -296,19 +267,18 @@ int main(int argc, char *argv[]) File::get_config_path(), CONFIG_FILE); printf(_("-r = batch render the contents of the batch file (%s/%s) with no GUI. batch file is optional.\n"), File::get_config_path(), BATCH_PATH); + printf(_("-S = do not reload perpetual session\n")); + printf(_("-x = reload from backup\n")); printf(_("filenames = files to load\n\n\n")); exit(0); break; case DO_DEAMON: - case DO_DEAMON_FG: - { - if(operation == DO_DEAMON) - { + case DO_DEAMON_FG: { + if( operation == DO_DEAMON ) { int pid = fork(); - if(pid) - { + if( pid ) { // Redhat 9 requires _exit instead of exit here. _exit(0); } @@ -319,36 +289,32 @@ int main(int argc, char *argv[]) nice_value, config_path); client.main_loop(); - break; - } + break; } // Same thing without detachment - case DO_BRENDER: - { + case DO_BRENDER: { RenderFarmClient client(0, deamon_path, 20, config_path); client.main_loop(); - break; - } + break; } - case DO_BATCHRENDER: - { + case DO_BATCHRENDER: { BatchRenderThread *thread = new BatchRenderThread; thread->start_rendering(config_path, batch_path); - break; - } + break; } - case DO_GUI: - { + case DO_GUI: { int restart = 0, done = 0; while( !done ) { BC_WindowBase::get_resources()->vframe_shm = 0; MWindow mwindow; mwindow.create_objects(1, !filenames.total, config_path); CommandLineThread *thread = 0; + if( mwindow.preferences->perpetual_session && load_perpetual ) + mwindow.load_undo_data(); //SET_TRACE // load the initial files on seperate tracks // use a new thread so it doesn't block the GUI @@ -383,6 +349,8 @@ int main(int argc, char *argv[]) done = 1; mwindow.save_defaults(); + if( mwindow.preferences->perpetual_session ) + mwindow.save_undo_data(); //PRINT_TRACE filenames.remove_all_objects(); delete thread; @@ -400,14 +368,12 @@ int main(int argc, char *argv[]) av[ac++] = 0; execv(exe_path, av); } - } //SET_TRACE DISABLE_BUFFER - break; + break; } } filenames.remove_all_objects(); - delete EDL::id_lock; EDL::id_lock = 0; Units::finit(); return 0;