#include <cerrno>
#include <fstream>
-#include <boost/locale.hpp>
-
#include <stdint.h>
#include <fcntl.h>
#include <signal.h>
/* big clock */
, big_clock (new AudioClock (X_("bigclock"), false, "big", true, true, false, false))
+ , video_timeline(0)
/* start of private members */
editor = 0;
mixer = 0;
+ meterbridge = 0;
editor = 0;
engine = 0;
_session_is_new = false;
delete keyboard;
delete editor;
delete mixer;
+ delete meterbridge;
stop_video_server();
}
}
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
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;
}
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)) {
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 ();