remove unique track number from meterbridge
[ardour.git] / gtk2_ardour / ardour_ui.cc
index f75b054adda07a8136ac219ea6db42cd614a3cd7..77fab156bb52e48473f04cb35359da8496798ee4 100644 (file)
@@ -27,8 +27,6 @@
 #include <cerrno>
 #include <fstream>
 
-#include <boost/locale.hpp>
-
 #include <stdint.h>
 #include <fcntl.h>
 #include <signal.h>
@@ -155,6 +153,7 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[], const char* localedir)
          /* big clock */
 
        , big_clock (new AudioClock (X_("bigclock"), false, "big", true, true, false, false))
+       , video_timeline(0)
 
          /* start of private members */
 
@@ -215,6 +214,7 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[], const char* localedir)
 
        editor = 0;
        mixer = 0;
+       meterbridge = 0;
        editor = 0;
        engine = 0;
        _session_is_new = false;
@@ -511,6 +511,7 @@ ARDOUR_UI::~ARDOUR_UI ()
        delete keyboard;
        delete editor;
        delete mixer;
+       delete meterbridge;
 
        stop_video_server();
 }
@@ -902,6 +903,7 @@ If you still wish to quit, please use the\n\n\
        }
 
        delete ARDOUR_UI::instance()->video_timeline;
+       ARDOUR_UI::instance()->video_timeline = NULL;
        stop_video_server();
 
        /* Save state before deleting the session, as that causes some
@@ -3425,9 +3427,28 @@ ARDOUR_UI::start_video_server (Gtk::Window* float_window, bool popup_msg)
                        Config->set_video_advanced_setup(true);
                }
 
+               if (video_server_process) {
+                       delete video_server_process;
+               }
+
                video_server_process = new SystemExec(icsd_exec, argp);
-               video_server_process->start();
-               sleep(1);
+               if (video_server_process->start()) {
+                       warning << _("Cannot launch the video-server") << endmsg;
+                       continue;
+               }
+               int timeout = 120; // 6 sec
+               while (!ARDOUR_UI::instance()->video_timeline->check_server()) {
+                       usleep (50000);
+                       if (--timeout <= 0 || !video_server_process->is_running()) break;
+               }
+               if (timeout <= 0) {
+                       warning << _("Video-server was started but does not respond to requests...") << endmsg;
+               } else {
+                       if (!ARDOUR_UI::instance()->video_timeline->check_server_docroot()) {
+                               delete video_server_process;
+                               video_server_process = 0;
+                       }
+               }
        }
        return true;
 }
@@ -3457,8 +3478,12 @@ ARDOUR_UI::add_video (Gtk::Window* float_window)
        add_video_dialog->hide();
        if (r != RESPONSE_ACCEPT) { return; }
 
-       bool local_file;
+       bool local_file, orig_local_file;
        std::string path = add_video_dialog->file_name(local_file);
+
+       std::string orig_path = path;
+       orig_local_file = local_file;
+
        bool auto_set_session_fps = add_video_dialog->auto_set_session_fps();
 
        if (local_file && !Glib::file_test(path, Glib::FILE_TEST_EXISTS)) {
@@ -3517,6 +3542,11 @@ ARDOUR_UI::add_video (Gtk::Window* float_window)
                node->add_property (X_("Filename"), path);
                node->add_property (X_("AutoFPS"), auto_set_session_fps?X_("1"):X_("0"));
                node->add_property (X_("LocalFile"), local_file?X_("1"):X_("0"));
+               if (orig_local_file) {
+                       node->add_property (X_("OriginalVideoFile"), orig_path);
+               } else {
+                       node->remove_property (X_("OriginalVideoFile"));
+               }
                _session->add_extra_xml (*node);
                _session->set_dirty ();