Credit Andrew - fix vorbis audio which was scratchy and ensure aging plugin does...
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / main.C
index 6e0b6d5e7422a3027b107139ef71e8dd52bf692c..b1f1fb6995c38537c5573bcd2b565ae414f41e6f 100644 (file)
@@ -1,6 +1,7 @@
 /*
  * CINELERRA
  * Copyright (C) 2010 Adam Williams <broadcast at earthling dot net>
+ * Copyright (C) 2003-2016 Cinelerra CV contributors
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -22,6 +23,7 @@
 #include "arraylist.h"
 #include "batchrender.h"
 #include "bcsignals.h"
+#include "cstrdup.h"
 #include "edl.h"
 #include "file.h"
 #include "filexml.h"
@@ -106,7 +108,8 @@ public:
 //PRINT_TRACE
                mwindow->gui->lock_window("main");
 //PRINT_TRACE
-               mwindow->load_filenames(filenames, LOADMODE_REPLACE);
+               mwindow->load_filenames(filenames,
+                       LOADMODE_REPLACE, LOADMODE_EDL_CLIP);
 //PRINT_TRACE
                if( filenames->size() == 1 )
                        mwindow->gui->mainmenu->add_load(filenames->get(0));
@@ -140,11 +143,21 @@ static float get_layout_scale()
        return scale;
 }
 
+/*******************************************************************
+* @mainpage
+* Cinelerra-GG is a professional video editor for Linux. It is timeline
+* based, supports hundreds of (de)coders, LADSPA and LV2 audio plugins,
+* FFMPEG audio/video plugins, plus built-in audio/video plugins.
+* Screen sizes up to 8K, any frame rate, extensive compositing features,
+* title generator and more.
+*
+********************************************************************/
 int main(int argc, char *argv[])
 {
 // handle command line arguments first
        srand(time(0));
        ArrayList<char*> filenames;
+       filenames.set_array_delete();
        FileSystem fs;
 
        time_t st; time(&st);
@@ -165,8 +178,9 @@ int main(int argc, char *argv[])
        batch_path[0] = 0;
        deamon_path[0] = 0;
        Units::init();
-
-       File::init_cin_path();
+       const char *lang = getenv("LANGUAGE");
+       if( lang ) lang = cstrdup(lang);
+       File::init_cin_env_vars();
        const char *locale_path = File::get_locale_path();
        const char *cin = File::get_cin();
 
@@ -295,9 +309,18 @@ int main(int argc, char *argv[])
 #ifndef COPYRIGHTTEXT2
 #define COPYRIGHTTEXT2 ""
 #endif
+#ifndef COPYRIGHTTEXT3
+#define COPYRIGHTTEXT3 ""
+#endif
+
                fprintf(stderr, "%s %s - %s\n%s",
                        PROGRAM_NAME,CINELERRA_VERSION, AboutPrefs::build_timestamp,
                        REPOMAINTXT COPYRIGHTTEXT1 COPYRIGHTTEXT2);
+               fprintf(stderr, "%s", COPYRIGHTTEXT3);
+               fprintf(stderr, "%s", COPYRIGHTTEXT4);
+               fprintf(stderr,"\n");
+               fprintf(stderr, "%s \n", AboutPrefs::ffmpeg_version);
+               fprintf(stderr,"\n");
                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 %s.\n\n",
@@ -361,7 +384,7 @@ int main(int argc, char *argv[])
                                MWindow mwindow;
                                mwindow.create_objects(1, !filenames.total, config_path);
                                CommandLineThread *thread  = 0;
-                               if( mwindow.preferences->perpetual_session && load_perpetual )
+                               if( load_perpetual )
                                        mwindow.load_undo_data();
 //SET_TRACE
 // load the initial files on seperate tracks
@@ -395,16 +418,18 @@ int main(int argc, char *argv[])
                                }
                                if( restart <= 0 )
                                        done = 1;
-
                                mwindow.save_defaults();
-                               if( mwindow.preferences->perpetual_session )
-                                       mwindow.save_undo_data();
+                               mwindow.save_undo_data();
 //PRINT_TRACE
                                filenames.remove_all_objects();
                                delete thread;
                        }
 
                        if( restart < 0 ) {
+                               if( lang ) // reset to cmdline state
+                                       setenv("LANGUAGE", lang, 1);
+                               else
+                                       unsetenv("LANGUAGE");
                                char exe_path[BCTEXTLEN];
                                int len = readlink("/proc/self/exe", exe_path, sizeof(exe_path)-1);
                                if( len < 0 ) break;
@@ -422,6 +447,7 @@ DISABLE_BUFFER
        }
 
        filenames.remove_all_objects();
+       delete [] lang;
        Units::finit();
        BC_WindowBase::finit_resources();