From ca1d58c254a217285522daa1d12bc047e0089d3f Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Wed, 10 Apr 2013 23:40:23 +0200 Subject: [PATCH 01/18] vtl: remove inadvertently committed CURLERRORDEBUG --- gtk2_ardour/video_image_frame.cc | 1 - 1 file changed, 1 deletion(-) diff --git a/gtk2_ardour/video_image_frame.cc b/gtk2_ardour/video_image_frame.cc index cc964c7e43..4c8203f5a2 100644 --- a/gtk2_ardour/video_image_frame.cc +++ b/gtk2_ardour/video_image_frame.cc @@ -347,7 +347,6 @@ extern "C" { curl_easy_setopt(curl, CURLOPT_USERAGENT, ARDOUR_USER_AGENT); curl_easy_setopt(curl, CURLOPT_TIMEOUT, ARDOUR_CURL_TIMEOUT); curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1); -#define CURLERRORDEBUG /* XXX */ #ifdef CURLERRORDEBUG char curlerror[CURL_ERROR_SIZE] = ""; curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, curlerror); From b7c617b0578ec7e8d75dcd604c316459d6ac0708 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Wed, 10 Apr 2013 23:41:44 +0200 Subject: [PATCH 02/18] possible fix for #5441 -- ardour hangs on shutdown (trying to stop harvid/xjadeo) --- gtk2_ardour/system_exec.cc | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/gtk2_ardour/system_exec.cc b/gtk2_ardour/system_exec.cc index 3af660ef77..309f38b4da 100644 --- a/gtk2_ardour/system_exec.cc +++ b/gtk2_ardour/system_exec.cc @@ -32,6 +32,7 @@ #include #include #include +#include #endif #include "system_exec.h" @@ -293,6 +294,10 @@ SystemExec::output_interposer() { DWORD bytesRead = 0; char data[BUFSIZ]; +#if 0 // untested code to set up nonblocking + unsigned long l = 1; + ioctlsocket(stdoutP[0], FIONBIO, &l); +#endif while(1) { #if 0 // for non-blocking pipes.. DWORD bytesAvail = 0; @@ -411,14 +416,15 @@ SystemExec::terminate () ::pthread_mutex_lock(&write_lock); close_stdin(); if (pid) { - ::usleep(100000); + ::usleep(50000); + sched_yield(); wait(WNOHANG); } if (pid) { - ::fprintf(stderr, "Child process is running. trying SIGTERM\n"); ::kill(pid, SIGTERM); ::usleep(50000); + sched_yield(); wait(WNOHANG); } if (pid) { @@ -482,7 +488,7 @@ SystemExec::start (int stderr_mode) ::close(pok[1]); char buf; for ( ;; ) { - int n = ::read(pok[0], &buf, 1 ); + ssize_t n = ::read(pok[0], &buf, 1 ); if ( n==1 ) { /* child process returned from execve */ pid=0; @@ -602,7 +608,11 @@ SystemExec::output_interposer() { int rfd=pout[0]; char buf[BUFSIZ]; - size_t r; + ssize_t r; + unsigned long l = 1; + + ioctl(rfd, FIONBIO, &l); // set non-blocking I/O + for (;fcntl(rfd, F_GETFL)!=-1;) { r = read(rfd, buf, sizeof(buf)); if (r < 0 && (errno == EINTR || errno == EAGAIN)) { From 66ee2c8e597ca9a07d614cf56b4002e5303e3645 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Thu, 11 Apr 2013 19:49:29 +0200 Subject: [PATCH 03/18] enable videotimeline by default --- gtk2_ardour/add_video_dialog.cc | 4 -- gtk2_ardour/add_video_dialog.h | 4 -- gtk2_ardour/ardour.menus.in | 16 +------- gtk2_ardour/ardour_ui.cc | 24 +++--------- gtk2_ardour/ardour_ui.h | 12 +----- gtk2_ardour/ardour_ui_dialogs.cc | 8 +--- gtk2_ardour/ardour_ui_ed.cc | 2 - gtk2_ardour/ardour_ui_options.cc | 2 - gtk2_ardour/canvas_vars.h | 2 - gtk2_ardour/editor.cc | 11 +----- gtk2_ardour/editor.h | 10 +---- gtk2_ardour/editor_actions.cc | 13 +------ gtk2_ardour/editor_canvas.cc | 11 ------ gtk2_ardour/editor_canvas_events.cc | 2 - gtk2_ardour/editor_drag.cc | 27 ++------------ gtk2_ardour/editor_drag.h | 3 -- gtk2_ardour/editor_items.h | 2 - gtk2_ardour/editor_mouse.cc | 4 -- gtk2_ardour/editor_ops.cc | 3 -- gtk2_ardour/editor_rulers.cc | 15 -------- gtk2_ardour/editor_selection.cc | 7 +--- gtk2_ardour/editor_videotimeline.cc | 3 -- gtk2_ardour/export_video_dialog.cc | 4 -- gtk2_ardour/export_video_dialog.h | 4 -- gtk2_ardour/export_video_infobox.cc | 11 ------ gtk2_ardour/export_video_infobox.h | 4 -- gtk2_ardour/public_editor.h | 4 -- gtk2_ardour/rc_option_editor.cc | 4 -- gtk2_ardour/region_view.cc | 4 -- gtk2_ardour/session_option_editor.cc | 2 - gtk2_ardour/system_exec.cc | 4 -- gtk2_ardour/system_exec.h | 3 -- gtk2_ardour/transcode_ffmpeg.cc | 4 -- gtk2_ardour/transcode_ffmpeg.h | 3 -- gtk2_ardour/transcode_video_dialog.cc | 4 -- gtk2_ardour/transcode_video_dialog.h | 4 -- gtk2_ardour/utils_videotl.cc | 4 -- gtk2_ardour/utils_videotl.h | 3 -- gtk2_ardour/video_image_frame.cc | 4 -- gtk2_ardour/video_image_frame.h | 4 -- gtk2_ardour/video_monitor.cc | 3 -- gtk2_ardour/video_monitor.h | 4 -- gtk2_ardour/video_server_dialog.cc | 4 -- gtk2_ardour/video_server_dialog.h | 4 -- gtk2_ardour/video_timeline.cc | 4 -- gtk2_ardour/video_timeline.h | 4 -- gtk2_ardour/wscript | 35 ++++++++---------- libs/ardour/ardour/directory_names.h | 2 - libs/ardour/ardour/rc_configuration_vars.h | 3 +- libs/ardour/ardour/region.h | 8 ---- .../ardour/session_configuration_vars.h | 2 - libs/ardour/ardour/session_directory.h | 2 - libs/ardour/directory_names.cc | 2 - libs/ardour/region.cc | 37 +++---------------- libs/ardour/session_directory.cc | 2 - wscript | 6 --- 56 files changed, 43 insertions(+), 338 deletions(-) diff --git a/gtk2_ardour/add_video_dialog.cc b/gtk2_ardour/add_video_dialog.cc index 7490042222..395e16142c 100644 --- a/gtk2_ardour/add_video_dialog.cc +++ b/gtk2_ardour/add_video_dialog.cc @@ -17,8 +17,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -#ifdef WITH_VIDEOTIMELINE - #include #include @@ -684,5 +682,3 @@ AddVideoDialog::request_preview(std::string u) preview_image->set(imgbuf); preview_image->show(); } - -#endif /* WITH_VIDEOTIMELINE */ diff --git a/gtk2_ardour/add_video_dialog.h b/gtk2_ardour/add_video_dialog.h index 985d64e4cc..1d91383c85 100644 --- a/gtk2_ardour/add_video_dialog.h +++ b/gtk2_ardour/add_video_dialog.h @@ -17,8 +17,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -#ifdef WITH_VIDEOTIMELINE - #ifndef __gtk_ardour_add_video_dialog_h__ #define __gtk_ardour_add_video_dialog_h__ @@ -109,5 +107,3 @@ class AddVideoDialog : public ArdourDialog }; #endif /* __gtk_ardour_add_video_dialog_h__ */ - -#endif /* WITH_VIDEOTIMELINE */ diff --git a/gtk2_ardour/ardour.menus.in b/gtk2_ardour/ardour.menus.in index e50f62cfbb..10881a0fb0 100644 --- a/gtk2_ardour/ardour.menus.in +++ b/gtk2_ardour/ardour.menus.in @@ -34,16 +34,14 @@ -#ifdef WITH_VIDEOTIMELINE + -#endif + -#ifdef WITH_VIDEOTIMELINE -#endif @@ -283,9 +281,7 @@ -#ifdef WITH_VIDEOTIMELINE -#endif @@ -437,7 +433,6 @@ -#ifdef WITH_VIDEOTIMELINE @@ -451,7 +446,6 @@ -#endif @@ -526,10 +520,8 @@ -#ifdef WITH_VIDEOTIMELINE -#endif @@ -560,10 +552,8 @@ -#ifdef WITH_VIDEOTIMELINE -#endif @@ -659,9 +649,7 @@ -#ifdef WITH_VIDEOTIMELINE -#endif diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index b7cccbfaa5..eebd35aefb 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -116,12 +116,10 @@ typedef uint64_t microseconds_t; #include "time_axis_view_item.h" #include "utils.h" #include "window_proxy.h" -#ifdef WITH_VIDEOTIMELINE #include "video_server_dialog.h" #include "add_video_dialog.h" #include "transcode_video_dialog.h" -#include "system_exec.h" /* to launch video-server */ -#endif +#include "system_exec.h" #include "i18n.h" @@ -201,10 +199,8 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[], const char* localedir) session_selector_window = 0; last_key_press_time = 0; add_route_dialog = 0; -#ifdef WITH_VIDEOTIMELINE add_video_dialog = 0; video_server_process = 0; -#endif route_params = 0; bundle_manager = 0; rc_option_editor = 0; @@ -471,10 +467,10 @@ ARDOUR_UI::~ARDOUR_UI () delete editor; delete mixer; delete add_route_dialog; -#ifdef WITH_VIDEOTIMELINE - if (add_video_dialog) delete add_video_dialog; + if (add_video_dialog) { + delete add_video_dialog; + } stop_video_server(); -#endif } void @@ -835,9 +831,7 @@ void ARDOUR_UI::finish() { if (_session) { -#ifdef WITH_VIDEOTIMELINE ARDOUR_UI::instance()->video_timeline->sync_session_state(); -#endif if (_session->dirty()) { vector actions; @@ -873,10 +867,8 @@ If you still wish to quit, please use the\n\n\ point_zero_one_second_connection.disconnect(); } -#ifdef WITH_VIDEOTIMELINE delete ARDOUR_UI::instance()->video_timeline; stop_video_server(); -#endif /* Save state before deleting the session, as that causes some windows to be destroyed before their visible state can be @@ -2552,11 +2544,11 @@ ARDOUR_UI::get_session_parameters (bool quit_on_cancel, bool should_be_new, stri * treat a non-dirty session this way, so that it stays visible * as we bring up the new session dialog. */ -#ifdef WITH_VIDEOTIMELINE + if (_session && ARDOUR_UI::instance()->video_timeline) { ARDOUR_UI::instance()->video_timeline->sync_session_state(); } -#endif + if (_session && _session->dirty()) { if (unload_session (false)) { /* unload cancelled by user */ @@ -3332,7 +3324,6 @@ ARDOUR_UI::add_route (Gtk::Window* float_window) /* idle connection will end at scope end */ } -#ifdef WITH_VIDEOTIMELINE void ARDOUR_UI::stop_video_server (bool ask_confirm) { @@ -3573,7 +3564,6 @@ ARDOUR_UI::flush_videotimeline_cache (bool localcacheonly) } editor->queue_visual_videotimeline_update(); } -#endif XMLNode* ARDOUR_UI::mixer_settings () const @@ -3843,9 +3833,7 @@ ARDOUR_UI::update_transport_clocks (framepos_t pos) if (big_clock_window->get()) { big_clock->set (pos); } -#ifdef WITH_VIDEOTIMELINE ARDOUR_UI::instance()->video_timeline->manual_seek_video_monitor(pos); -#endif } diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h index 40b71cea78..6300a352d5 100644 --- a/gtk2_ardour/ardour_ui.h +++ b/gtk2_ardour/ardour_ui.h @@ -65,9 +65,7 @@ #include "ardour/plugin.h" #include "ardour/session_handle.h" -#ifdef WITH_VIDEOTIMELINE #include "video_timeline.h" -#endif #include "ardour_dialog.h" #include "ardour_button.h" @@ -80,11 +78,9 @@ class About; class AddRouteDialog; -#ifdef WITH_VIDEOTIMELINE class AddVideoDialog; class VideoTimeLine; class SystemExec; -#endif class ArdourStartup; class ArdourKeyboard; class AudioClock; @@ -213,9 +209,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr TimeInfoBox* time_info_box; -#ifdef WITH_VIDEOTIMELINE VideoTimeLine *video_timeline; -#endif void store_clock_modes (); void restore_clock_modes (); @@ -226,14 +220,13 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr void add_route (Gtk::Window* float_window); void add_routes_part_two (); void add_routes_thread (); -#ifdef WITH_VIDEOTIMELINE + void add_video (Gtk::Window* float_window); void remove_video (); void start_video_server_menu (Gtk::Window* float_window); bool start_video_server (Gtk::Window* float_window, bool popup_msg); void stop_video_server (bool ask_confirm=false); void flush_videotimeline_cache (bool localcacheonly=false); -#endif void session_add_audio_track ( int input_channels, @@ -630,11 +623,10 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr AddRouteDialog *add_route_dialog; -#ifdef WITH_VIDEOTIMELINE /* video dialog */ + AddVideoDialog *add_video_dialog; SystemExec *video_server_process; -#endif /* Keyboard Handling */ diff --git a/gtk2_ardour/ardour_ui_dialogs.cc b/gtk2_ardour/ardour_ui_dialogs.cc index 0cfe341211..256a1a593e 100644 --- a/gtk2_ardour/ardour_ui_dialogs.cc +++ b/gtk2_ardour/ardour_ui_dialogs.cc @@ -121,9 +121,7 @@ ARDOUR_UI::set_session (Session *s) secondary_clock->set_session (s); big_clock->set_session (s); time_info_box->set_session (s); -#ifdef WITH_VIDEOTIMELINE video_timeline->set_session (s); -#endif /* sensitize menu bar options that are now valid */ @@ -215,11 +213,10 @@ ARDOUR_UI::set_session (Session *s) int ARDOUR_UI::unload_session (bool hide_stuff) { -#ifdef WITH_VIDEOTIMELINE if (_session) { ARDOUR_UI::instance()->video_timeline->sync_session_state(); } -#endif + if (_session && _session->dirty()) { std::vector actions; actions.push_back (_("Don't close")); @@ -250,9 +247,8 @@ ARDOUR_UI::unload_session (bool hide_stuff) ActionManager::set_sensitive (ActionManager::session_sensitive_actions, false); rec_button.set_sensitive (false); -#ifdef WITH_VIDEOTIMELINE + ARDOUR_UI::instance()->video_timeline->close_session(); -#endif stop_blinking (); stop_clocking (); diff --git a/gtk2_ardour/ardour_ui_ed.cc b/gtk2_ardour/ardour_ui_ed.cc index 3685233efa..2d279385ae 100644 --- a/gtk2_ardour/ardour_ui_ed.cc +++ b/gtk2_ardour/ardour_ui_ed.cc @@ -132,7 +132,6 @@ ARDOUR_UI::install_actions () ActionManager::session_sensitive_actions.push_back (act); ActionManager::write_sensitive_actions.push_back (act); -#ifdef WITH_VIDEOTIMELINE act = ActionManager::register_action (main_actions, X_("OpenVideo"), _("Open Video"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::add_video), (Gtk::Window*) 0)); ActionManager::session_sensitive_actions.push_back (act); @@ -142,7 +141,6 @@ ARDOUR_UI::install_actions () act = ActionManager::register_action (main_actions, X_("ExportVideo"), _("Export To Video File"), sigc::mem_fun (*editor, &PublicEditor::export_video)); ActionManager::session_sensitive_actions.push_back (act); -#endif #ifdef WITH_CMT diff --git a/gtk2_ardour/ardour_ui_options.cc b/gtk2_ardour/ardour_ui_options.cc index 9b7f8fb178..8cb1376522 100644 --- a/gtk2_ardour/ardour_ui_options.cc +++ b/gtk2_ardour/ardour_ui_options.cc @@ -382,9 +382,7 @@ ARDOUR_UI::parameter_changed (std::string p) synchronize_sync_source_and_video_pullup (); reset_main_clocks (); -#ifdef WITH_VIDEOTIMELINE editor->queue_visual_videotimeline_update(); -#endif } else if (p == "sync-source") { diff --git a/gtk2_ardour/canvas_vars.h b/gtk2_ardour/canvas_vars.h index 33a48f3ec6..97e58ddb62 100644 --- a/gtk2_ardour/canvas_vars.h +++ b/gtk2_ardour/canvas_vars.h @@ -151,9 +151,7 @@ CANVAS_VARIABLE(canvasvar_TrimHandleLocked, "trim handle locked") CANVAS_VARIABLE(canvasvar_TrimHandle, "trim handle") CANVAS_VARIABLE(canvasvar_VerboseCanvasCursor, "verbose canvas cursor") CANVAS_VARIABLE(canvasvar_VestigialFrame, "vestigial frame") -#ifdef WITH_VIDEOTIMELINE CANVAS_VARIABLE(canvasvar_VideoBar, "video timeline bar") -#endif CANVAS_VARIABLE(canvasvar_FrameBase, "region base") CANVAS_VARIABLE(canvasvar_CoveredRegion, "region area covered by another region") CANVAS_VARIABLE(canvasvar_WaveForm, "waveform outline") diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc index f2acaca749..b7cc7b9f27 100644 --- a/gtk2_ardour/editor.cc +++ b/gtk2_ardour/editor.cc @@ -246,9 +246,7 @@ Editor::Editor () , range_mark_label (_("Range Markers")) , transport_mark_label (_("Loop/Punch Ranges")) , cd_mark_label (_("CD Markers")) -#ifdef WITH_VIDEOTIMELINE , videotl_label (_("Video Timeline")) -#endif , edit_packer (4, 4, true) /* the values here don't matter: layout widgets @@ -440,7 +438,6 @@ Editor::Editor () cd_mark_label.hide(); cd_mark_label.set_no_show_all(); -#ifdef WITH_VIDEOTIMELINE videotl_bar_height = 4; videotl_label.set_name ("EditorRulerLabel"); videotl_label.set_size_request (-1, (int)timebar_height * videotl_bar_height); @@ -448,7 +445,6 @@ Editor::Editor () videotl_label.set_padding (5,0); videotl_label.hide(); videotl_label.set_no_show_all(); -#endif range_mark_label.set_name ("EditorRulerLabel"); range_mark_label.set_size_request (-1, (int)timebar_height); @@ -4293,7 +4289,6 @@ Editor::set_frames_per_unit (double fpu) instant_save (); } -#ifdef WITH_VIDEOTIMELINE void Editor::queue_visual_videotimeline_update () { @@ -4306,7 +4301,6 @@ Editor::queue_visual_videotimeline_update () */ ensure_visual_change_idle_handler (); } -#endif void Editor::ensure_visual_change_idle_handler () @@ -4358,11 +4352,9 @@ Editor::idle_visual_changer () update_tempo_based_rulers (current_bbt_points_begin, current_bbt_points_end); } -#ifdef WITH_VIDEOTIMELINE if (p & VisualChange::ZoomLevel) { update_video_timeline(); } -#endif if (p & VisualChange::TimeOrigin) { set_horizontal_position (pending_visual_change.time_origin / frames_per_unit); @@ -4377,11 +4369,10 @@ Editor::idle_visual_changer () update_fixed_rulers (); redisplay_tempo (true); } -#ifdef WITH_VIDEOTIMELINE + if (!(p & VisualChange::ZoomLevel)) { update_video_timeline(); } -#endif _summary->set_overlays_dirty (); diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h index 676b4f1830..910df94c26 100644 --- a/gtk2_ardour/editor.h +++ b/gtk2_ardour/editor.h @@ -783,9 +783,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD ruler_time_range_marker = 7, ruler_time_transport_marker = 8, ruler_time_cd_marker = 9, -#ifdef WITH_VIDEOTIMELINE ruler_video_timeline = 10, -#endif }; static GtkCustomMetric ruler_metrics[4]; @@ -921,7 +919,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD Gtk::Label transport_mark_label; Gtk::Label cd_mark_label; -#ifdef WITH_VIDEOTIMELINE + /* videtimline related actions */ ArdourCanvas::SimpleRect* videotl_bar; Gtk::Label videotl_label; ArdourCanvas::Group* videotl_bar_group; @@ -945,7 +943,6 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD int get_videotl_bar_height () const { return videotl_bar_height; } void export_video (); void toggle_region_video_lock (); -#endif Gtk::VBox time_button_vbox; Gtk::HBox time_button_hbox; @@ -1456,7 +1453,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD bool canvas_range_marker_bar_event (GdkEvent* event, ArdourCanvas::Item*); bool canvas_transport_marker_bar_event (GdkEvent* event, ArdourCanvas::Item*); bool canvas_cd_marker_bar_event (GdkEvent* event, ArdourCanvas::Item*); -#ifdef WITH_VIDEOTIMELINE + bool canvas_videotl_bar_event (GdkEvent* event, ArdourCanvas::Item*); void update_video_timeline (bool flush = false); void set_video_timeline_height (const int); @@ -1465,7 +1462,6 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD void set_video_timeline_locked (const bool); void queue_visual_videotimeline_update (); void embed_audio_from_video (std::string, framepos_t n = 0); -#endif bool canvas_imageframe_item_view_event(GdkEvent* event, ArdourCanvas::Item*,ImageFrameView*); bool canvas_imageframe_view_event(GdkEvent* event, ArdourCanvas::Item*,ImageFrameTimeAxis*); @@ -2183,9 +2179,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD friend class RegionCreateDrag; friend class RegionMotionDrag; friend class RegionInsertDrag; -#ifdef WITH_VIDEOTIMELINE friend class VideoTimeLineDrag; -#endif friend class EditorSummary; friend class EditorGroupTabs; diff --git a/gtk2_ardour/editor_actions.cc b/gtk2_ardour/editor_actions.cc index fb6cd7df81..fefb0c6dd6 100644 --- a/gtk2_ardour/editor_actions.cc +++ b/gtk2_ardour/editor_actions.cc @@ -543,7 +543,6 @@ Editor::register_actions () ruler_samples_action = Glib::RefPtr::cast_static (ActionManager::register_toggle_action (ruler_actions, X_("toggle-samples-ruler"), _("Samples"), sigc::bind (sigc::mem_fun(*this, &Editor::toggle_ruler_visibility), ruler_metric_samples))); ruler_timecode_action = Glib::RefPtr::cast_static (ActionManager::register_toggle_action (ruler_actions, X_("toggle-timecode-ruler"), _("Timecode"), sigc::bind (sigc::mem_fun(*this, &Editor::toggle_ruler_visibility), ruler_metric_timecode))); ruler_minsec_action = Glib::RefPtr::cast_static (ActionManager::register_toggle_action (ruler_actions, X_("toggle-minsec-ruler"), _("Min:Sec"), sigc::bind (sigc::mem_fun(*this, &Editor::toggle_ruler_visibility), ruler_metric_minsec))); -#ifdef WITH_VIDEOTIMELINE ActionManager::register_action (editor_menu_actions, X_("VideoMonitorMenu"), _("Video Monitor")); @@ -558,8 +557,6 @@ Editor::register_actions () xjadeo_letterbox_action = Glib::RefPtr::cast_static (ActionManager::register_toggle_action (editor_actions, X_("toggle-vmon-letterbox"), _("Letterbox"), sigc::bind (sigc::mem_fun (*this, &Editor::set_xjadeo_viewoption), (int) 6))); xjadeo_zoom_100 = reg_sens (editor_actions, "zoom-vmon-100", _("Original Size"), sigc::bind (sigc::mem_fun (*this, &Editor::set_xjadeo_viewoption), (int) 7)); -#endif - /* set defaults here */ no_ruler_shown_update = true; @@ -569,7 +566,7 @@ Editor::register_actions () ruler_range_action->set_active (true); ruler_loop_punch_action->set_active (true); ruler_loop_punch_action->set_active (true); -#ifdef WITH_VIDEOTIMELINE + ruler_video_action->set_active (false); xjadeo_proc_action->set_active (false); xjadeo_proc_action->set_sensitive (false); @@ -586,7 +583,7 @@ Editor::register_actions () xjadeo_letterbox_action->set_active (false); xjadeo_letterbox_action->set_sensitive (false); xjadeo_zoom_100->set_sensitive (false); -#endif + if (Profile->get_sae()) { ruler_bbt_action->set_active (true); ruler_cd_marker_action->set_active (false); @@ -742,11 +739,9 @@ Editor::toggle_ruler_visibility (RulerType rt) case ruler_time_cd_marker: action = "toggle-cd-marker-ruler"; break; -#ifdef WITH_VIDEOTIMELINE case ruler_video_timeline: action = "toggle-video-ruler"; break; -#endif } Glib::RefPtr act = ActionManager::get_action (X_("Rulers"), action); @@ -778,7 +773,6 @@ Editor::set_group_tabs () } } -#ifdef WITH_VIDEOTIMELINE void Editor::set_xjadeo_sensitive (bool onoff) { @@ -896,7 +890,6 @@ Editor::set_xjadeo_viewoption (int what) ARDOUR_UI::instance()->video_timeline->control_video_monitor(what, 0); } } -#endif void Editor::toggle_measure_visibility () @@ -1734,9 +1727,7 @@ Editor::register_region_actions () /* Toggle `locked' status of selected regions */ toggle_reg_sens (_region_actions, "toggle-region-lock", _("Lock"), sigc::mem_fun(*this, &Editor::toggle_region_lock)); -#ifdef WITH_VIDEOTIMELINE toggle_reg_sens (_region_actions, "toggle-region-video-lock", _("Lock to Video"), sigc::mem_fun(*this, &Editor::toggle_region_video_lock)); -#endif toggle_reg_sens ( _region_actions, diff --git a/gtk2_ardour/editor_canvas.cc b/gtk2_ardour/editor_canvas.cc index 8be0e61a7b..c4b07eb738 100644 --- a/gtk2_ardour/editor_canvas.cc +++ b/gtk2_ardour/editor_canvas.cc @@ -188,7 +188,6 @@ Editor::initialize_canvas () cd_marker_bar->property_outline_pixels() = 1; cd_marker_bar->property_outline_what() = 0x8; -#ifdef WITH_VIDEOTIMELINE videotl_bar_group = new ArdourCanvas::Group (*track_canvas->root ()); if (Profile->get_sae()) { videotl_bar = new ArdourCanvas::SimpleRect (*videotl_bar_group, 0.0, 0.0, phys_width, (timebar_height * videotl_bar_height - 1)); @@ -199,7 +198,6 @@ Editor::initialize_canvas () } videotl_bar->property_outline_what() = (0x1 | 0x8); ARDOUR_UI::instance()->video_timeline = new VideoTimeLine(this, videotl_bar_group, (timebar_height * videotl_bar_height)); -#endif timebar_group = new ArdourCanvas::Group (*track_canvas->root(), 0.0, 0.0); cursor_group = new ArdourCanvas::Group (*track_canvas->root(), 0.0, 0.0); @@ -210,9 +208,7 @@ Editor::initialize_canvas () transport_marker_group = new ArdourCanvas::Group (*timebar_group, 0.0, timebar_height * 2.0); marker_group = new ArdourCanvas::Group (*timebar_group, 0.0, timebar_height); cd_marker_group = new ArdourCanvas::Group (*timebar_group, 0.0, 0.0); -#ifdef WITH_VIDEOTIMELINE videotl_group = new ArdourCanvas::Group (*timebar_group, 0.0, 0.0); -#endif cd_marker_bar_drag_rect = new ArdourCanvas::SimpleRect (*cd_marker_group, 0.0, 0.0, 100, timebar_height); cd_marker_bar_drag_rect->property_outline_pixels() = 0; @@ -257,10 +253,7 @@ Editor::initialize_canvas () meter_bar->signal_event().connect (sigc::bind (sigc::mem_fun (*this, &Editor::canvas_meter_bar_event), meter_bar)); marker_bar->signal_event().connect (sigc::bind (sigc::mem_fun (*this, &Editor::canvas_marker_bar_event), marker_bar)); cd_marker_bar->signal_event().connect (sigc::bind (sigc::mem_fun (*this, &Editor::canvas_cd_marker_bar_event), cd_marker_bar)); -#ifdef WITH_VIDEOTIMELINE videotl_bar_group->signal_event().connect (sigc::bind (sigc::mem_fun (*this, &Editor::canvas_videotl_bar_event), videotl_bar)); - //videotl_bar->signal_event().connect (sigc::bind (sigc::mem_fun (*this, &Editor::canvas_videotl_bar_event), videotl_bar)); -#endif range_marker_bar->signal_event().connect (sigc::bind (sigc::mem_fun (*this, &Editor::canvas_range_marker_bar_event), range_marker_bar)); transport_marker_bar->signal_event().connect (sigc::bind (sigc::mem_fun (*this, &Editor::canvas_transport_marker_bar_event), transport_marker_bar)); @@ -843,9 +836,7 @@ Editor::set_horizontal_position (double p) _summary->set_overlays_dirty (); } -#ifdef WITH_VIDEOTIMELINE update_video_timeline(); -#endif HorizontalPositionChanged (); /* EMIT SIGNAL */ @@ -896,10 +887,8 @@ Editor::color_handler() cd_marker_bar->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_CDMarkerBar.get(); cd_marker_bar->property_outline_color_rgba() = ARDOUR_UI::config()->canvasvar_MarkerBarSeparator.get(); -#ifdef WITH_VIDEOTIMELINE videotl_bar->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_VideoBar.get(); videotl_bar->property_outline_color_rgba() = ARDOUR_UI::config()->canvasvar_MarkerBarSeparator.get(); -#endif range_marker_bar->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_RangeMarkerBar.get(); range_marker_bar->property_outline_color_rgba() = ARDOUR_UI::config()->canvasvar_MarkerBarSeparator.get(); diff --git a/gtk2_ardour/editor_canvas_events.cc b/gtk2_ardour/editor_canvas_events.cc index e76b4ce8ee..4c49dd1a9b 100644 --- a/gtk2_ardour/editor_canvas_events.cc +++ b/gtk2_ardour/editor_canvas_events.cc @@ -948,13 +948,11 @@ Editor::canvas_cd_marker_bar_event (GdkEvent *event, ArdourCanvas::Item* item) return typed_event (item, event, CdMarkerBarItem); } -#ifdef WITH_VIDEOTIMELINE bool Editor::canvas_videotl_bar_event (GdkEvent *event, ArdourCanvas::Item* item) { return typed_event (item, event, VideoBarItem); } -#endif bool Editor::canvas_tempo_marker_event (GdkEvent *event, ArdourCanvas::Item* item, TempoMarker* /*marker*/) diff --git a/gtk2_ardour/editor_drag.cc b/gtk2_ardour/editor_drag.cc index 1713fe58c0..8f992266e7 100644 --- a/gtk2_ardour/editor_drag.cc +++ b/gtk2_ardour/editor_drag.cc @@ -659,11 +659,7 @@ RegionMotionDrag::motion (GdkEvent* event, bool first_move) RegionView* rv = i->view; - if (rv->region()->locked() -#ifdef WITH_VIDEOTIMELINE - || rv->region()->video_locked() -#endif - ) { + if (rv->region()->locked() || rv->region()->video_locked()) { continue; } @@ -934,11 +930,7 @@ RegionMoveDrag::finished_copy (bool const changed_position, bool const /*changed /* insert the regions into their new playlists */ for (list::const_iterator i = _views.begin(); i != _views.end(); ++i) { - if (i->view->region()->locked() -#ifdef WITH_VIDEOTIMELINE - || i->view->region()->video_locked() -#endif - ) { + if (i->view->region()->locked() || i->view->region()->video_locked()) { continue; } @@ -1017,11 +1009,7 @@ RegionMoveDrag::finished_no_copy ( RouteTimeAxisView* const dest_rtv = dynamic_cast (_time_axis_views[i->time_axis_view]); double const dest_layer = i->layer; - if (rv->region()->locked() -#ifdef WITH_VIDEOTIMELINE - || rv->region()->video_locked() -#endif - ) { + if (rv->region()->locked() || rv->region()->video_locked()) { ++i; continue; } @@ -1610,8 +1598,6 @@ NoteResizeDrag::aborted (bool) } } -#ifdef WITH_VIDEOTIMELINE - AVDraggingView::AVDraggingView (RegionView* v) : view (v) { @@ -1623,16 +1609,12 @@ VideoTimeLineDrag::VideoTimeLineDrag (Editor* e, ArdourCanvas::Item* i) { DEBUG_TRACE (DEBUG::Drags, "New VideoTimeLineDrag\n"); - /* create a list of regions to move along */ -#if 1 /* all reagions -- with video_locked() */ RegionSelection rs; TrackViewList empty; empty.clear(); _editor->get_regions_after(rs, (framepos_t) 0, empty); std::list views = rs.by_layer(); -#else /* selected regions -- with video_locked() */ - std::list views = _editor->selection->regions.by_layer(); -#endif + for (list::iterator i = views.begin(); i != views.end(); ++i) { RegionView* rv = (*i); if (!rv->region()->video_locked()) { @@ -1776,7 +1758,6 @@ VideoTimeLineDrag::aborted (bool) i->view->region()->set_position(i->initial_position); } } -#endif TrimDrag::TrimDrag (Editor* e, ArdourCanvas::Item* i, RegionView* p, list const & v, bool preserve_fade_anchor) : RegionDrag (e, i, p, v) diff --git a/gtk2_ardour/editor_drag.h b/gtk2_ardour/editor_drag.h index 9e9f263d76..6267956ed7 100644 --- a/gtk2_ardour/editor_drag.h +++ b/gtk2_ardour/editor_drag.h @@ -505,7 +505,6 @@ private: double _cumulative_dx; }; -#ifdef WITH_VIDEOTIMELINE /** Container for details about audio regions being dragged along with video */ class AVDraggingView { @@ -518,7 +517,6 @@ public: /** Drag of video offset */ class VideoTimeLineDrag : public Drag - //TODO , public sigc::trackable { public: VideoTimeLineDrag (Editor *e, ArdourCanvas::Item *i); @@ -544,7 +542,6 @@ private: ARDOUR::frameoffset_t _startdrag_video_offset; ARDOUR::frameoffset_t _max_backwards_drag; }; -#endif /** Drag to trim region(s) */ class TrimDrag : public RegionDrag diff --git a/gtk2_ardour/editor_items.h b/gtk2_ardour/editor_items.h index 39b6310a67..303bddb103 100644 --- a/gtk2_ardour/editor_items.h +++ b/gtk2_ardour/editor_items.h @@ -28,9 +28,7 @@ enum ItemType { MarkerBarItem, RangeMarkerBarItem, CdMarkerBarItem, -#ifdef WITH_VIDEOTIMELINE VideoBarItem, -#endif TransportMarkerBarItem, SelectionItem, ControlPointItem, diff --git a/gtk2_ardour/editor_mouse.cc b/gtk2_ardour/editor_mouse.cc index 8709a0fcfe..b42a009415 100644 --- a/gtk2_ardour/editor_mouse.cc +++ b/gtk2_ardour/editor_mouse.cc @@ -737,12 +737,10 @@ Editor::button_press_handler_1 (ArdourCanvas::Item* item, GdkEvent* event, ItemT } } -#ifdef WITH_VIDEOTIMELINE case VideoBarItem: _drags->set (new VideoTimeLineDrag (this, item), event); return true; break; -#endif case MarkerBarItem: case TempoBarItem: @@ -1554,9 +1552,7 @@ Editor::button_release_handler (ArdourCanvas::Item* item, GdkEvent* event, ItemT case CdMarkerBarItem: case TempoBarItem: case MeterBarItem: -#ifdef WITH_VIDEOTIMELINE case VideoBarItem: -#endif popup_ruler_menu (where, item_type); break; diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc index 9797c0ef7e..8cd025eaf8 100644 --- a/gtk2_ardour/editor_ops.cc +++ b/gtk2_ardour/editor_ops.cc @@ -5052,7 +5052,6 @@ Editor::toggle_region_lock () _session->commit_reversible_command (); } -#ifdef WITH_VIDEOTIMELINE void Editor::toggle_region_video_lock () { @@ -5076,8 +5075,6 @@ Editor::toggle_region_video_lock () _session->commit_reversible_command (); } -#endif - void Editor::toggle_region_lock_style () diff --git a/gtk2_ardour/editor_rulers.cc b/gtk2_ardour/editor_rulers.cc index 76152208c3..2752f96553 100644 --- a/gtk2_ardour/editor_rulers.cc +++ b/gtk2_ardour/editor_rulers.cc @@ -131,9 +131,7 @@ Editor::initialize_rulers () lab_children.push_back (Element(transport_mark_label, PACK_SHRINK, PACK_START)); lab_children.push_back (Element(cd_mark_label, PACK_SHRINK, PACK_START)); lab_children.push_back (Element(mark_label, PACK_SHRINK, PACK_START)); -#ifdef WITH_VIDEOTIMELINE lab_children.push_back (Element(videotl_label, PACK_SHRINK, PACK_START)); -#endif ruler_lab_children.push_back (Element(minsec_label, PACK_SHRINK, PACK_START)); ruler_children.insert (canvaspos, Element(*minsec_ruler, PACK_SHRINK, PACK_START)); @@ -371,7 +369,6 @@ Editor::popup_ruler_menu (framepos_t where, ItemType t) ruler_items.push_back (SeparatorElem ()); break; -#ifdef WITH_VIDEOTIMELINE case VideoBarItem: ruler_items.push_back (MenuElem (_("Timeline height"))); static_cast(&ruler_items.back())->set_sensitive(false); @@ -395,7 +392,6 @@ Editor::popup_ruler_menu (framepos_t where, ItemType t) ruler_items.push_back (SeparatorElem ()); break; -#endif default: break; @@ -447,12 +443,10 @@ Editor::popup_ruler_menu (framepos_t where, ItemType t) if (action) { ruler_items.push_back (MenuElem (*action->create_menu_item())); } -#ifdef WITH_VIDEOTIMELINE action = ActionManager::get_action ("Rulers", "toggle-video-ruler"); if (action) { ruler_items.push_back (MenuElem (*action->create_menu_item())); } -#endif editor_ruler_menu->popup (1, gtk_get_current_event_time()); @@ -474,9 +468,7 @@ Editor::store_ruler_visibility () node->add_property (X_("rangemarker"), ruler_range_action->get_active() ? "yes": "no"); node->add_property (X_("transportmarker"), ruler_loop_punch_action->get_active() ? "yes": "no"); node->add_property (X_("cdmarker"), ruler_cd_marker_action->get_active() ? "yes": "no"); -#ifdef WITH_VIDEOTIMELINE node->add_property (X_("videotl"), ruler_video_action->get_active() ? "yes": "no"); -#endif _session->add_extra_xml (*node); _session->set_dirty (); @@ -577,7 +569,6 @@ Editor::restore_ruler_visibility () } } -#ifdef WITH_VIDEOTIMELINE if ((prop = node->property ("videotl")) != 0) { if (string_is_affirmative (prop->value())) { ruler_video_action->set_active (true); @@ -585,7 +576,6 @@ Editor::restore_ruler_visibility () ruler_video_action->set_active (false); } } -#endif } @@ -652,9 +642,7 @@ Editor::update_ruler_visibility () transport_mark_label.hide(); cd_mark_label.hide(); mark_label.hide(); - #ifdef WITH_VIDEOTIMELINE videotl_label.hide(); - #endif #endif if (ruler_meter_action->get_active()) { old_unit_pos = meter_group->property_y(); @@ -787,8 +775,6 @@ Editor::update_ruler_visibility () mark_label.hide(); } -#ifdef WITH_VIDEOTIMELINE - if (ruler_video_action->get_active()) { old_unit_pos = videotl_group->property_y(); if (tbpos != old_unit_pos) { @@ -811,7 +797,6 @@ Editor::update_ruler_visibility () videotl_label.hide(); update_video_timeline(true); } -#endif gdouble old_canvas_timebars_vsize = canvas_timebars_vsize; canvas_timebars_vsize = (timebar_height * visible_timebars) - 1; diff --git a/gtk2_ardour/editor_selection.cc b/gtk2_ardour/editor_selection.cc index fbe46a1ae9..e19afe375c 100644 --- a/gtk2_ardour/editor_selection.cc +++ b/gtk2_ardour/editor_selection.cc @@ -1047,10 +1047,8 @@ Editor::sensitize_the_right_region_actions () bool have_midi = false; bool have_locked = false; bool have_unlocked = false; -#ifdef WITH_VIDEOTIMELINE bool have_video_locked = false; bool have_video_unlocked = false; -#endif bool have_position_lock_style_audio = false; bool have_position_lock_style_music = false; bool have_muted = false; @@ -1092,13 +1090,12 @@ Editor::sensitize_the_right_region_actions () } else { have_unlocked = true; } -#ifdef WITH_VIDEOTIMELINE + if (r->video_locked()) { have_video_locked = true; } else { have_video_unlocked = true; } -#endif if (r->position_lock_style() == MusicTime) { have_position_lock_style_music = true; @@ -1223,13 +1220,11 @@ Editor::sensitize_the_right_region_actions () // a->set_inconsistent (); } -#ifdef WITH_VIDEOTIMELINE a = Glib::RefPtr::cast_dynamic (_region_actions->get_action("toggle-region-video-lock")); a->set_active (have_video_locked && !have_video_unlocked); if (have_video_locked && have_video_unlocked) { // a->set_inconsistent (); } -#endif a = Glib::RefPtr::cast_dynamic (_region_actions->get_action("toggle-region-lock-style")); a->set_active (have_position_lock_style_music && !have_position_lock_style_audio); diff --git a/gtk2_ardour/editor_videotimeline.cc b/gtk2_ardour/editor_videotimeline.cc index 564e3016e7..fa42211d19 100644 --- a/gtk2_ardour/editor_videotimeline.cc +++ b/gtk2_ardour/editor_videotimeline.cc @@ -17,7 +17,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -#ifdef WITH_VIDEOTIMELINE #include @@ -140,5 +139,3 @@ Editor::export_video () } #endif } - -#endif /* WITH_VIDEOTIMELINE */ diff --git a/gtk2_ardour/export_video_dialog.cc b/gtk2_ardour/export_video_dialog.cc index 03b64cfbe3..417f793f3a 100644 --- a/gtk2_ardour/export_video_dialog.cc +++ b/gtk2_ardour/export_video_dialog.cc @@ -17,8 +17,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -#ifdef WITH_VIDEOTIMELINE - #include #include #include @@ -966,5 +964,3 @@ ExportVideoDialog::open_invid_dialog () } } } - -#endif /* WITH_VIDEOTIMELINE */ diff --git a/gtk2_ardour/export_video_dialog.h b/gtk2_ardour/export_video_dialog.h index 72376512d1..2594c2073b 100644 --- a/gtk2_ardour/export_video_dialog.h +++ b/gtk2_ardour/export_video_dialog.h @@ -17,8 +17,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -#ifdef WITH_VIDEOTIMELINE - #ifndef __gtk_ardour_export_video_dialog_h__ #define __gtk_ardour_export_video_dialog_h__ @@ -125,5 +123,3 @@ class ExportVideoDialog : public ArdourDialog , public PBD::ScopedConnectionList }; #endif /* __gtk_ardour_export_video_dialog_h__ */ - -#endif /* WITH_VIDEOTIMELINE */ diff --git a/gtk2_ardour/export_video_infobox.cc b/gtk2_ardour/export_video_infobox.cc index ab2363838e..a7508702c2 100644 --- a/gtk2_ardour/export_video_infobox.cc +++ b/gtk2_ardour/export_video_infobox.cc @@ -17,8 +17,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -#ifdef WITH_VIDEOTIMELINE - #include "ardour/session.h" #include "export_video_infobox.h" #include "i18n.h" @@ -65,12 +63,3 @@ ExportVideoInfobox::ExportVideoInfobox (Session* s) ExportVideoInfobox::~ExportVideoInfobox () { } -/* -void -ExportVideoInfobox::on_show () -{ - Dialog::on_show (); -} -*/ - -#endif /* WITH_VIDEOTIMELINE */ diff --git a/gtk2_ardour/export_video_infobox.h b/gtk2_ardour/export_video_infobox.h index 20944b934c..6bd6c64533 100644 --- a/gtk2_ardour/export_video_infobox.h +++ b/gtk2_ardour/export_video_infobox.h @@ -17,8 +17,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -#ifdef WITH_VIDEOTIMELINE - #ifndef __gtk_ardour_export_video_infobox_h__ #define __gtk_ardour_export_video_infobox_h__ @@ -45,5 +43,3 @@ class ExportVideoInfobox : public ArdourDialog }; #endif /* __gtk_ardour_export_video_infobox_h__ */ - -#endif /* WITH_VIDEOTIMELINE */ diff --git a/gtk2_ardour/public_editor.h b/gtk2_ardour/public_editor.h index ce21b8a40d..c5bf8a006b 100644 --- a/gtk2_ardour/public_editor.h +++ b/gtk2_ardour/public_editor.h @@ -292,7 +292,6 @@ class PublicEditor : public Gtk::Window, public PBD::StatefulDestructible { virtual framecnt_t get_nudge_distance (framepos_t pos, framecnt_t& next) = 0; virtual Evoral::MusicalTime get_grid_type_as_beats (bool& success, framepos_t position) = 0; -#ifdef WITH_VIDEOTIMELINE virtual void queue_visual_videotimeline_update () = 0; virtual void toggle_ruler_video (bool) = 0; virtual void toggle_xjadeo_proc (int) = 0; @@ -302,7 +301,6 @@ class PublicEditor : public Gtk::Window, public PBD::StatefulDestructible { virtual void set_video_timeline_height (const int h) = 0; virtual void embed_audio_from_video (std::string, framepos_t n = 0) = 0; virtual void export_video () = 0; -#endif #ifdef WITH_CMT virtual void connect_to_image_compositor() = 0; @@ -348,9 +346,7 @@ class PublicEditor : public Gtk::Window, public PBD::StatefulDestructible { virtual bool canvas_feature_line_event (GdkEvent* event, ArdourCanvas::Item*, RegionView*) = 0; virtual bool canvas_stream_view_event (GdkEvent* event, ArdourCanvas::Item*, RouteTimeAxisView*) = 0; virtual bool canvas_marker_event (GdkEvent* event, ArdourCanvas::Item*, Marker*) = 0; -#ifdef WITH_VIDEOTIMELINE virtual bool canvas_videotl_bar_event (GdkEvent* event, ArdourCanvas::Item*) = 0; -#endif virtual bool canvas_zoom_rect_event (GdkEvent* event, ArdourCanvas::Item*) = 0; virtual bool canvas_tempo_marker_event (GdkEvent* event, ArdourCanvas::Item*, TempoMarker*) = 0; virtual bool canvas_meter_marker_event (GdkEvent* event, ArdourCanvas::Item*, MeterMarker*) = 0; diff --git a/gtk2_ardour/rc_option_editor.cc b/gtk2_ardour/rc_option_editor.cc index 2a79772bb9..676ebf8332 100644 --- a/gtk2_ardour/rc_option_editor.cc +++ b/gtk2_ardour/rc_option_editor.cc @@ -809,7 +809,6 @@ private: PBD::ScopedConnection protocol_status_connection; }; -#ifdef WITH_VIDEOTIMELINE class VideoTimelineOptions : public OptionEditorBox { public: @@ -927,7 +926,6 @@ private: CheckButton _show_video_server_dialog_button; CheckButton _video_advanced_setup_button; }; -#endif /** A class which allows control of visibility of some editor components usign * a VisibilityGroup. The caller should pass in a `dummy' VisibilityGroup @@ -1832,10 +1830,8 @@ RCOptionEditor::RCOptionEditor () add_option (_("User interaction"), rm); -#ifdef WITH_VIDEOTIMELINE /* VIDEO Timeline */ add_option (_("Video"), new VideoTimelineOptions (_rc_config)); -#endif /* INTERFACE */ diff --git a/gtk2_ardour/region_view.cc b/gtk2_ardour/region_view.cc index dd99a5237b..3f20353ee5 100644 --- a/gtk2_ardour/region_view.cc +++ b/gtk2_ardour/region_view.cc @@ -386,12 +386,10 @@ RegionView::region_changed (const PropertyChange& what_changed) if (what_changed.contains (ARDOUR::Properties::locked)) { region_locked (); } -#ifdef WITH_VIDEOTIMELINE if (what_changed.contains (ARDOUR::Properties::locked)) { /* name will show locked status */ region_renamed (); } -#endif } void @@ -584,12 +582,10 @@ RegionView::make_name () const str += '{'; str += _region->name(); str += '}'; -#ifdef WITH_VIDEOTIMELINE } else if (_region->video_locked()) { str += '['; str += _region->name(); str += ']'; -#endif } else { str = _region->name(); } diff --git a/gtk2_ardour/session_option_editor.cc b/gtk2_ardour/session_option_editor.cc index 229d376255..17f909a08a 100644 --- a/gtk2_ardour/session_option_editor.cc +++ b/gtk2_ardour/session_option_editor.cc @@ -79,7 +79,6 @@ SessionOptionEditor::SessionOptionEditor (Session* s) add_option (_("Timecode"), _vpu); -#ifdef WITH_VIDEOTIMELINE add_option (_("Sync"), new BoolOption ( "use-video-file-fps", _("Use Video File's FPS Instead of Timecode Value for Timeline and Video Monitor."), @@ -93,7 +92,6 @@ SessionOptionEditor::SessionOptionEditor (Session* s) sigc::mem_fun (*_session_config, &SessionConfiguration::get_videotimeline_pullup), sigc::mem_fun (*_session_config, &SessionConfiguration::set_videotimeline_pullup) )); -#endif add_option (_("Timecode"), new OptionEditorHeading (_("Ext Timecode Offsets"))); diff --git a/gtk2_ardour/system_exec.cc b/gtk2_ardour/system_exec.cc index 309f38b4da..1f178a6c68 100644 --- a/gtk2_ardour/system_exec.cc +++ b/gtk2_ardour/system_exec.cc @@ -17,8 +17,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -#ifdef WITH_VIDEOTIMELINE - #include #include #include @@ -673,5 +671,3 @@ SystemExec::write_to_stdin(std::string d, size_t len) } #endif // end UNIX process - -#endif /* WITH_VIDEOTIMELINE */ diff --git a/gtk2_ardour/system_exec.h b/gtk2_ardour/system_exec.h index 35123d4ccf..cf8518f547 100644 --- a/gtk2_ardour/system_exec.h +++ b/gtk2_ardour/system_exec.h @@ -17,8 +17,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -#ifdef WITH_VIDEOTIMELINE - #ifndef __ardour_system_exec_h__ #define __ardour_system_exec_h__ @@ -201,4 +199,3 @@ class SystemExec }; #endif /* __ardour_system_exec_h__ */ -#endif /* WITH_VIDEOTIMELINE */ diff --git a/gtk2_ardour/transcode_ffmpeg.cc b/gtk2_ardour/transcode_ffmpeg.cc index 854b7def22..9cbc40564c 100644 --- a/gtk2_ardour/transcode_ffmpeg.cc +++ b/gtk2_ardour/transcode_ffmpeg.cc @@ -17,8 +17,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -#ifdef WITH_VIDEOTIMELINE - #include #include #include @@ -563,5 +561,3 @@ TranscodeFfmpeg::ffmpegparse_v (std::string d, size_t /* s */) Progress(f, m_duration); /* EMIT SIGNAL */ } } - -#endif /* WITH_VIDEOTIMELINE */ diff --git a/gtk2_ardour/transcode_ffmpeg.h b/gtk2_ardour/transcode_ffmpeg.h index b809719f01..932bfe051b 100644 --- a/gtk2_ardour/transcode_ffmpeg.h +++ b/gtk2_ardour/transcode_ffmpeg.h @@ -17,8 +17,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -#ifdef WITH_VIDEOTIMELINE - #ifndef __ardour_transcode_ffmpeg_h__ #define __ardour_transcode_ffmpeg_h__ @@ -164,4 +162,3 @@ class TranscodeFfmpeg : public sigc::trackable }; #endif /* __ardour_transcode_ffmpeg_h__ */ -#endif /* WITH_VIDEOTIMELINE */ diff --git a/gtk2_ardour/transcode_video_dialog.cc b/gtk2_ardour/transcode_video_dialog.cc index 5a29d129ae..5ac73a581b 100644 --- a/gtk2_ardour/transcode_video_dialog.cc +++ b/gtk2_ardour/transcode_video_dialog.cc @@ -17,8 +17,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -#ifdef WITH_VIDEOTIMELINE - #include #include #include @@ -512,5 +510,3 @@ TranscodeVideoDialog::import_option() { int i = video_combo.get_active_row_number(); return static_cast(i); } - -#endif /* WITH_VIDEOTIMELINE */ diff --git a/gtk2_ardour/transcode_video_dialog.h b/gtk2_ardour/transcode_video_dialog.h index 981079b3a8..eb2808e560 100644 --- a/gtk2_ardour/transcode_video_dialog.h +++ b/gtk2_ardour/transcode_video_dialog.h @@ -17,8 +17,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -#ifdef WITH_VIDEOTIMELINE - #ifndef __gtk_ardour_transcode_video_dialog_h__ #define __gtk_ardour_transcode_video_dialog_h__ @@ -106,5 +104,3 @@ class TranscodeVideoDialog : public ArdourDialog , public PBD::ScopedConnectionL }; #endif /* __gtk_ardour_transcode_video_dialog_h__ */ - -#endif /* WITH_VIDEOTIMELINE */ diff --git a/gtk2_ardour/utils_videotl.cc b/gtk2_ardour/utils_videotl.cc index 93d5444902..b90abf7fb8 100644 --- a/gtk2_ardour/utils_videotl.cc +++ b/gtk2_ardour/utils_videotl.cc @@ -17,8 +17,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -#ifdef WITH_VIDEOTIMELINE - #include #include #include @@ -316,5 +314,3 @@ video_draw_cross (Glib::RefPtr img) if (n_channels>3) p[3] = 255; } } - -#endif /* WITH_VIDEOTIMELINE */ diff --git a/gtk2_ardour/utils_videotl.h b/gtk2_ardour/utils_videotl.h index 08ab429e4c..913af2ab55 100644 --- a/gtk2_ardour/utils_videotl.h +++ b/gtk2_ardour/utils_videotl.h @@ -17,7 +17,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -#ifdef WITH_VIDEOTIMELINE /** @file utils_videotl.h * @brief common functions used for video-file im/export */ @@ -55,5 +54,3 @@ bool video_query_info ( ); #endif /* __gtk_ardour_video_utils_h__ */ - -#endif /* WITH_VIDEOTIMELINE */ diff --git a/gtk2_ardour/video_image_frame.cc b/gtk2_ardour/video_image_frame.cc index 4c8203f5a2..fda3d4e96c 100644 --- a/gtk2_ardour/video_image_frame.cc +++ b/gtk2_ardour/video_image_frame.cc @@ -17,8 +17,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -#ifdef WITH_VIDEOTIMELINE - #include #include "ardour/tempo.h" @@ -370,5 +368,3 @@ extern "C" { } } /* end extern "C" */ - -#endif /* WITH_VIDEOTIMELINE */ diff --git a/gtk2_ardour/video_image_frame.h b/gtk2_ardour/video_image_frame.h index 2f384c3d8e..feeab37039 100644 --- a/gtk2_ardour/video_image_frame.h +++ b/gtk2_ardour/video_image_frame.h @@ -17,8 +17,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -#ifdef WITH_VIDEOTIMELINE - #ifndef __ardour_video_image_frame_h__ #define __ardour_video_image_frame_h__ @@ -112,5 +110,3 @@ extern "C" { } #endif /* __ardour_video_image_frame_h__ */ - -#endif /* WITH_VIDEOTIMELINE */ diff --git a/gtk2_ardour/video_monitor.cc b/gtk2_ardour/video_monitor.cc index 9bcd244cf0..550dd46816 100644 --- a/gtk2_ardour/video_monitor.cc +++ b/gtk2_ardour/video_monitor.cc @@ -17,8 +17,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -#ifdef WITH_VIDEOTIMELINE - #include "pbd/file_utils.h" #include "gui_thread.h" #include "ardour_ui.h" @@ -517,4 +515,3 @@ VideoMonitor::xjadeo_sync_setup () sync_by_manual_seek = my_manual_seek; } } -#endif /* WITH_VIDEOTIMELINE */ diff --git a/gtk2_ardour/video_monitor.h b/gtk2_ardour/video_monitor.h index 0f954e9cd5..59b90f5e46 100644 --- a/gtk2_ardour/video_monitor.h +++ b/gtk2_ardour/video_monitor.h @@ -17,8 +17,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -#ifdef WITH_VIDEOTIMELINE - #ifndef __ardour_video_monitor_h__ #define __ardour_video_monitor_h__ @@ -114,5 +112,3 @@ class VideoMonitor : public sigc::trackable , public ARDOUR::SessionHandlePtr, p }; #endif /* __ardour_video_monitor_h__ */ - -#endif /* WITH_VIDEOTIMELINE */ diff --git a/gtk2_ardour/video_server_dialog.cc b/gtk2_ardour/video_server_dialog.cc index ca70c11a0f..5ee4c02844 100644 --- a/gtk2_ardour/video_server_dialog.cc +++ b/gtk2_ardour/video_server_dialog.cc @@ -17,8 +17,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -#ifdef WITH_VIDEOTIMELINE - #include #include @@ -216,5 +214,3 @@ std::string VideoServerDialog::get_docroot () { return docroot_entry.get_text(); } - -#endif /* WITH_VIDEOTIMELINE */ diff --git a/gtk2_ardour/video_server_dialog.h b/gtk2_ardour/video_server_dialog.h index fae0f06390..12635d9dca 100644 --- a/gtk2_ardour/video_server_dialog.h +++ b/gtk2_ardour/video_server_dialog.h @@ -17,8 +17,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -#ifdef WITH_VIDEOTIMELINE - #ifndef __gtk_ardour_video_server_dialog_h__ #define __gtk_ardour_video_server_dialog_h__ @@ -68,5 +66,3 @@ class VideoServerDialog : public ArdourDialog }; #endif /* __gtk_ardour_video_server_dialog_h__ */ - -#endif /* WITH_VIDEOTIMELINE */ diff --git a/gtk2_ardour/video_timeline.cc b/gtk2_ardour/video_timeline.cc index 2953fd8277..d8913f27aa 100644 --- a/gtk2_ardour/video_timeline.cc +++ b/gtk2_ardour/video_timeline.cc @@ -17,8 +17,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -#ifdef WITH_VIDEOTIMELINE - #include #include #include "ardour/tempo.h" @@ -803,5 +801,3 @@ VideoTimeLine::manual_seek_video_monitor (framepos_t pos) if (!vmonitor->synced_by_manual_seeks()) { return; } vmonitor->manual_seek(pos, false, GOFFSET); // XXX -> set offset in xjadeo } - -#endif /* WITH_VIDEOTIMELINE */ diff --git a/gtk2_ardour/video_timeline.h b/gtk2_ardour/video_timeline.h index b80faa3b27..3f7b7742d6 100644 --- a/gtk2_ardour/video_timeline.h +++ b/gtk2_ardour/video_timeline.h @@ -17,8 +17,6 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ -#ifdef WITH_VIDEOTIMELINE - #ifndef __ardour_video_timeline_h__ #define __ardour_video_timeline_h__ @@ -143,5 +141,3 @@ class VideoTimeLine : public sigc::trackable, public ARDOUR::SessionHandlePtr, p }; #endif /* __ardour_video_timeline_h__ */ - -#endif /* WITH_VIDEOTIMELINE */ diff --git a/gtk2_ardour/wscript b/gtk2_ardour/wscript index d8dcf6d21f..02e163e3ee 100644 --- a/gtk2_ardour/wscript +++ b/gtk2_ardour/wscript @@ -242,7 +242,20 @@ gtk2_ardour_sources = [ 'visibility_group.cc', 'volume_controller.cc', 'waveview.cc', - 'window_proxy.cc' + 'window_proxy.cc', +# video-timeline related sources: + 'video_image_frame.cc', + 'add_video_dialog.cc', + 'editor_videotimeline.cc', + 'video_timeline.cc', + 'system_exec.cc', + 'video_monitor.cc', + 'transcode_ffmpeg.cc', + 'transcode_video_dialog.cc', + 'video_server_dialog.cc', + 'utils_videotl.cc', + 'export_video_dialog.cc', + 'export_video_infobox.cc' ] def options(opt): @@ -419,22 +432,6 @@ def build(bld): ] obj.includes += ['../libs'] - if bld.env['VIDEOTIMELINE']: - obj.source += [ - 'video_image_frame.cc', - 'add_video_dialog.cc', - 'editor_videotimeline.cc', - 'video_timeline.cc', - 'system_exec.cc', - 'video_monitor.cc', - 'transcode_ffmpeg.cc', - 'transcode_video_dialog.cc', - 'video_server_dialog.cc', - 'utils_videotl.cc', - 'export_video_dialog.cc', - 'export_video_infobox.cc' - ] - if bld.is_defined('HAVE_SUIL'): obj.source += [ 'lv2_plugin_ui.cc' ] obj.use += [ 'SUIL' ] @@ -655,8 +652,6 @@ def build(bld): else: menus_argv = [ '-E', '-P' ] - if bld.env['VIDEOTIMELINE']: - menus_argv.append ('-DWITH_VIDEOTIMELINE') obj = bld(features = 'command-output') obj.command = 'cpp' obj.command_is_external = True @@ -664,7 +659,7 @@ def build(bld): obj.argv = menus_argv obj.stdin = 'ardour.menus.in' obj.stdout = 'ardour.menus' - obj.dep_vars = ['GTKOSX', 'VIDEOTIMELINE'] + obj.dep_vars = ['GTKOSX'] bld.install_files(os.path.join(bld.env['SYSCONFDIR'], 'ardour3'), 'ardour.menus') diff --git a/libs/ardour/ardour/directory_names.h b/libs/ardour/ardour/directory_names.h index 1f9c48eba3..9f7c778d33 100644 --- a/libs/ardour/ardour/directory_names.h +++ b/libs/ardour/ardour/directory_names.h @@ -27,9 +27,7 @@ extern const char* const old_sound_dir_name; extern const char* const sound_dir_name; extern const char* const midi_dir_name; extern const char* const midi_patch_dir_name; -#ifdef WITH_VIDEOTIMELINE extern const char* const video_dir_name; -#endif extern const char* const dead_dir_name; extern const char* const interchange_dir_name; extern const char* const peak_dir_name; diff --git a/libs/ardour/ardour/rc_configuration_vars.h b/libs/ardour/ardour/rc_configuration_vars.h index f1a7e9c428..f19f8fe808 100644 --- a/libs/ardour/ardour/rc_configuration_vars.h +++ b/libs/ardour/ardour/rc_configuration_vars.h @@ -216,10 +216,9 @@ CONFIG_VARIABLE (std::string, reference_manual_url, "reference-manual-url", "htt CONFIG_VARIABLE (std::string, updates_url, "updates-url", "http://ardour.org/whatsnew.html") CONFIG_VARIABLE (std::string, donate_url, "donate-url", "http://ardour.org/donate") -#ifdef WITH_VIDEOTIMELINE +/* video timeline configuration */ CONFIG_VARIABLE (bool, video_advanced_setup, "video-advanced-setup", false) CONFIG_VARIABLE (std::string, video_server_url, "video-server-url", "http://localhost:1554") CONFIG_VARIABLE (std::string, video_server_docroot, "video-server-docroot", "/") CONFIG_VARIABLE (bool, show_video_export_info, "show-video-export-info", true) CONFIG_VARIABLE (bool, show_video_server_dialog, "show-video-server-dialog", false) -#endif diff --git a/libs/ardour/ardour/region.h b/libs/ardour/ardour/region.h index eaa23cc8f6..3ee829ed12 100644 --- a/libs/ardour/ardour/region.h +++ b/libs/ardour/ardour/region.h @@ -45,9 +45,7 @@ namespace Properties { extern PBD::PropertyDescriptor muted; extern PBD::PropertyDescriptor opaque; extern PBD::PropertyDescriptor locked; -#ifdef WITH_VIDEOTIMELINE extern PBD::PropertyDescriptor video_locked; -#endif extern PBD::PropertyDescriptor automatic; extern PBD::PropertyDescriptor whole_file; extern PBD::PropertyDescriptor import; @@ -166,9 +164,7 @@ class Region bool opaque () const { return _opaque; } bool locked () const { return _locked; } bool position_locked () const { return _position_locked; } -#ifdef WITH_VIDEOTIMELINE bool video_locked () const { return _video_locked; } -#endif bool valid_transients () const { return _valid_transients; } bool automatic () const { return _automatic; } bool whole_file () const { return _whole_file; } @@ -246,9 +242,7 @@ class Region void set_automatic (bool yn); void set_opaque (bool yn); void set_locked (bool yn); -#ifdef WITH_VIDEOTIMELINE void set_video_locked (bool yn); -#endif void set_position_locked (bool yn); int apply (Filter &, Progress* progress = 0); @@ -401,9 +395,7 @@ class Region PBD::Property _muted; PBD::Property _opaque; PBD::Property _locked; -#ifdef WITH_VIDEOTIMELINE PBD::Property _video_locked; -#endif PBD::Property _automatic; PBD::Property _whole_file; PBD::Property _import; diff --git a/libs/ardour/ardour/session_configuration_vars.h b/libs/ardour/ardour/session_configuration_vars.h index cce4bf86d7..9def8f3aad 100644 --- a/libs/ardour/ardour/session_configuration_vars.h +++ b/libs/ardour/ardour/session_configuration_vars.h @@ -55,7 +55,5 @@ CONFIG_VARIABLE (std::string, timecode_generator_offset, "timecode-generator-off CONFIG_VARIABLE (bool, glue_new_markers_to_bars_and_beats, "glue-new-markers-to-bars-and-beats", false) CONFIG_VARIABLE (bool, midi_copy_is_fork, "midi-copy-is-fork", false) CONFIG_VARIABLE (bool, glue_new_regions_to_bars_and_beats, "glue-new-regions-to-bars-and-beats", false) -#ifdef WITH_VIDEOTIMELINE CONFIG_VARIABLE (bool, use_video_file_fps, "use-video-file-fps", false) CONFIG_VARIABLE (bool, videotimeline_pullup, "videotimeline-pullup", true) -#endif diff --git a/libs/ardour/ardour/session_directory.h b/libs/ardour/ardour/session_directory.h index 72bc731a01..a4c372d6ed 100644 --- a/libs/ardour/ardour/session_directory.h +++ b/libs/ardour/ardour/session_directory.h @@ -85,13 +85,11 @@ public: */ const std::string peak_path () const; -#ifdef WITH_VIDEOTIMELINE /** * @return The absolute path to the directory in which all * video files are stored for a session. */ const std::string video_path () const; -#endif /** * @return The absolute path to the directory that source diff --git a/libs/ardour/directory_names.cc b/libs/ardour/directory_names.cc index b500fdc193..0632c6f8f2 100644 --- a/libs/ardour/directory_names.cc +++ b/libs/ardour/directory_names.cc @@ -27,9 +27,7 @@ const char* const old_sound_dir_name = X_("sounds"); const char* const sound_dir_name = X_("audiofiles"); const char* const midi_dir_name = X_("midifiles"); const char* const midi_patch_dir_name = X_("patchfiles"); -#ifdef WITH_VIDEOTIMELINE const char* const video_dir_name = X_("videofiles"); -#endif const char* const peak_dir_name = X_("peaks"); const char* const dead_dir_name = X_("dead"); const char* const interchange_dir_name = X_("interchange"); diff --git a/libs/ardour/region.cc b/libs/ardour/region.cc index cc57e774c8..706dda4a0a 100644 --- a/libs/ardour/region.cc +++ b/libs/ardour/region.cc @@ -49,9 +49,7 @@ namespace ARDOUR { PBD::PropertyDescriptor muted; PBD::PropertyDescriptor opaque; PBD::PropertyDescriptor locked; -#ifdef WITH_VIDEOTIMELINE PBD::PropertyDescriptor video_locked; -#endif PBD::PropertyDescriptor automatic; PBD::PropertyDescriptor whole_file; PBD::PropertyDescriptor import; @@ -87,10 +85,8 @@ Region::make_property_quarks () DEBUG_TRACE (DEBUG::Properties, string_compose ("quark for opaque = %1\n", Properties::opaque.property_id)); Properties::locked.property_id = g_quark_from_static_string (X_("locked")); DEBUG_TRACE (DEBUG::Properties, string_compose ("quark for locked = %1\n", Properties::locked.property_id)); -#ifdef WITH_VIDEOTIMELINE Properties::video_locked.property_id = g_quark_from_static_string (X_("video-locked")); DEBUG_TRACE (DEBUG::Properties, string_compose ("quark for video-locked = %1\n", Properties::video_locked.property_id)); -#endif Properties::automatic.property_id = g_quark_from_static_string (X_("automatic")); DEBUG_TRACE (DEBUG::Properties, string_compose ("quark for automatic = %1\n", Properties::automatic.property_id)); Properties::whole_file.property_id = g_quark_from_static_string (X_("whole-file")); @@ -143,9 +139,7 @@ Region::register_properties () add_property (_muted); add_property (_opaque); add_property (_locked); -#ifdef WITH_VIDEOTIMELINE add_property (_video_locked); -#endif add_property (_automatic); add_property (_whole_file); add_property (_import); @@ -167,13 +161,6 @@ Region::register_properties () add_property (_position_lock_style); add_property (_layering_index); } -#ifdef WITH_VIDEOTIMELINE -#define VTLSTATE , _video_locked (Properties::video_locked, false) -#define VTLCSTATE , _video_locked (Properties::video_locked, other->_video_locked) -#else -#define VTLSTATE -#define VTLCSTATE -#endif #define REGION_DEFAULT_STATE(s,l) \ _sync_marked (Properties::sync_marked, false) \ @@ -187,7 +174,7 @@ Region::register_properties () , _muted (Properties::muted, false) \ , _opaque (Properties::opaque, true) \ , _locked (Properties::locked, false) \ - VTLSTATE \ + , _video_locked (Properties::video_locked, false) \ , _automatic (Properties::automatic, false) \ , _whole_file (Properties::whole_file, false) \ , _import (Properties::import, false) \ @@ -213,7 +200,7 @@ Region::register_properties () , _muted (Properties::muted, other->_muted) \ , _opaque (Properties::opaque, other->_opaque) \ , _locked (Properties::locked, other->_locked) \ - VTLCSTATE \ + , _video_locked (Properties::video_locked, other->_video_locked) \ , _automatic (Properties::automatic, other->_automatic) \ , _whole_file (Properties::whole_file, other->_whole_file) \ , _import (Properties::import, other->_import) \ @@ -646,11 +633,7 @@ Region::recompute_position_from_lock_style () void Region::nudge_position (frameoffset_t n) { - if (locked() -#ifdef WITH_VIDEOTIMELINE - || video_locked() -#endif - ) { + if (locked() || video_locked()) { return; } @@ -691,11 +674,7 @@ Region::set_ancestral_data (framepos_t s, framecnt_t l, float st, float sh) void Region::set_start (framepos_t pos) { - if (locked() || position_locked() -#ifdef WITH_VIDEOTIMELINE - || video_locked() -#endif - ) { + if (locked() || position_locked() || video_locked()) { return; } /* This just sets the start, nothing else. It effectively shifts @@ -721,11 +700,7 @@ Region::set_start (framepos_t pos) void Region::trim_start (framepos_t new_position) { - if (locked() || position_locked() -#ifdef WITH_VIDEOTIMELINE - || video_locked() -#endif - ) { + if (locked() || position_locked() || video_locked()) { return; } @@ -1010,7 +985,6 @@ Region::set_locked (bool yn) } } -#ifdef WITH_VIDEOTIMELINE void Region::set_video_locked (bool yn) { @@ -1019,7 +993,6 @@ Region::set_video_locked (bool yn) send_change (Properties::video_locked); } } -#endif void Region::set_position_locked (bool yn) diff --git a/libs/ardour/session_directory.cc b/libs/ardour/session_directory.cc index 61b313f6b3..9d0be414da 100644 --- a/libs/ardour/session_directory.cc +++ b/libs/ardour/session_directory.cc @@ -145,13 +145,11 @@ SessionDirectory::midi_patch_path () const return Glib::build_filename (sources_root(), midi_patch_dir_name); } -#ifdef WITH_VIDEOTIMELINE const std::string SessionDirectory::video_path () const { return Glib::build_filename (sources_root(), video_dir_name); } -#endif const std::string SessionDirectory::peak_path () const diff --git a/wscript b/wscript index 433f1a6f3c..99e4a9ccc4 100644 --- a/wscript +++ b/wscript @@ -409,8 +409,6 @@ def options(opt): help='Build internal libs as shared libraries') opt.add_option('--internal-static-libs', action='store_false', dest='internal_shared_libs', help='Build internal libs as static libraries') - opt.add_option('--videotimeline', action='store_true', default=False, dest='videotimeline', - help='Compile with support for video-timeline') opt.add_option('--lv2', action='store_true', default=True, dest='lv2', help='Compile with support for LV2 (if Lilv+Suil is available)') opt.add_option('--no-lv2', action='store_false', dest='lv2', @@ -632,9 +630,6 @@ def configure(conf): conf.env['BUILD_TESTS'] = opts.build_tests #if opts.tranzport: # conf.env['TRANZPORT'] = 1 - if opts.videotimeline: - conf.define('WITH_VIDEOTIMELINE',1) - conf.env['VIDEOTIMELINE'] = 1 if opts.windows_vst: conf.define('WINDOWS_VST_SUPPORT', 1) conf.env['WINDOWS_VST_SUPPORT'] = True @@ -713,7 +708,6 @@ const char* const ardour_config_info = "\\n\\ # write_config_text('Tranzport', opts.tranzport) write_config_text('Unit tests', conf.env['BUILD_TESTS']) write_config_text('Universal binary', opts.universal) - write_config_text('Videotimeline', opts.videotimeline) write_config_text('Generic x86 CPU', opts.generic) write_config_text('Windows VST support', opts.windows_vst) write_config_text('Wiimote support', conf.is_defined('BUILD_WIIMOTE')) From e17f75b351356279778e4ea4adbb6c0d544ba755 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Mon, 15 Apr 2013 15:50:08 +0200 Subject: [PATCH 04/18] option to ignore feedback detection - /i know what i'm doing/ mode. This currently only has effect if the loop connection is made/unmade while the option was set/unset. Toggling the option itself won't trigger a graph re-order --- gtk2_ardour/rc_option_editor.cc | 8 ++++++++ libs/ardour/ardour/rc_configuration_vars.h | 1 + libs/ardour/session.cc | 5 +++-- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/gtk2_ardour/rc_option_editor.cc b/gtk2_ardour/rc_option_editor.cc index 676ebf8332..bbb0a277fa 100644 --- a/gtk2_ardour/rc_option_editor.cc +++ b/gtk2_ardour/rc_option_editor.cc @@ -1512,6 +1512,14 @@ RCOptionEditor::RCOptionEditor () add_option (_("Audio"), oac); + add_option (_("Audio"), + new BoolOption ( + "ignore-feedback-loops", + _("Ignore Feedback Loops"), + sigc::mem_fun (*_rc_config, &RCConfiguration::get_ignore_feedback_loops), + sigc::mem_fun (*_rc_config, &RCConfiguration::set_ignore_feedback_loops) + )); + add_option (_("Audio"), new OptionEditorHeading (_("Denormals"))); add_option (_("Audio"), diff --git a/libs/ardour/ardour/rc_configuration_vars.h b/libs/ardour/ardour/rc_configuration_vars.h index f19f8fe808..5b094afefc 100644 --- a/libs/ardour/ardour/rc_configuration_vars.h +++ b/libs/ardour/ardour/rc_configuration_vars.h @@ -192,6 +192,7 @@ CONFIG_VARIABLE (bool, sound_midi_notes, "sound-midi-notes", false) CONFIG_VARIABLE (bool, use_plugin_own_gui, "use-plugin-own-gui", true) CONFIG_VARIABLE (uint32_t, max_recent_sessions, "max-recent-sessions", 10) CONFIG_VARIABLE (double, automation_thinning_factor, "automation-thinning-factor", 20.0) +CONFIG_VARIABLE (bool, ignore_feedback_loops, "ignore-feedback-loops", false) /* denormal management */ diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc index 6fe51961d2..394fa73079 100644 --- a/libs/ardour/session.cc +++ b/libs/ardour/session.cc @@ -1522,7 +1522,7 @@ Session::resort_routes_using (boost::shared_ptr r) /* Attempt a topological sort of the route graph */ boost::shared_ptr sorted_routes = topological_sort (r, edges); - if (sorted_routes) { + if (Config->get_ignore_feedback_loops() || sorted_routes) { /* We got a satisfactory topological sort, so there is no feedback; use this new graph. @@ -1553,8 +1553,9 @@ Session::resort_routes_using (boost::shared_ptr r) #endif SuccessfulGraphSort (); /* EMIT SIGNAL */ + } - } else { + if (!sorted_routes) { /* The topological sort failed, so we have a problem. Tell everyone and stick to the old graph; this will continue to be processed, so until the feedback is fixed, what is played back will not quite From 90a4d0166292b8e7335db33f80334a03561ce5da Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Mon, 15 Apr 2013 16:02:57 +0200 Subject: [PATCH 05/18] Revert "option to ignore feedback detection - /i know what i'm doing/ mode." This reverts commit e17f75b351356279778e4ea4adbb6c0d544ba755. --- gtk2_ardour/rc_option_editor.cc | 8 -------- libs/ardour/ardour/rc_configuration_vars.h | 1 - libs/ardour/session.cc | 5 ++--- 3 files changed, 2 insertions(+), 12 deletions(-) diff --git a/gtk2_ardour/rc_option_editor.cc b/gtk2_ardour/rc_option_editor.cc index bbb0a277fa..676ebf8332 100644 --- a/gtk2_ardour/rc_option_editor.cc +++ b/gtk2_ardour/rc_option_editor.cc @@ -1512,14 +1512,6 @@ RCOptionEditor::RCOptionEditor () add_option (_("Audio"), oac); - add_option (_("Audio"), - new BoolOption ( - "ignore-feedback-loops", - _("Ignore Feedback Loops"), - sigc::mem_fun (*_rc_config, &RCConfiguration::get_ignore_feedback_loops), - sigc::mem_fun (*_rc_config, &RCConfiguration::set_ignore_feedback_loops) - )); - add_option (_("Audio"), new OptionEditorHeading (_("Denormals"))); add_option (_("Audio"), diff --git a/libs/ardour/ardour/rc_configuration_vars.h b/libs/ardour/ardour/rc_configuration_vars.h index 5b094afefc..f19f8fe808 100644 --- a/libs/ardour/ardour/rc_configuration_vars.h +++ b/libs/ardour/ardour/rc_configuration_vars.h @@ -192,7 +192,6 @@ CONFIG_VARIABLE (bool, sound_midi_notes, "sound-midi-notes", false) CONFIG_VARIABLE (bool, use_plugin_own_gui, "use-plugin-own-gui", true) CONFIG_VARIABLE (uint32_t, max_recent_sessions, "max-recent-sessions", 10) CONFIG_VARIABLE (double, automation_thinning_factor, "automation-thinning-factor", 20.0) -CONFIG_VARIABLE (bool, ignore_feedback_loops, "ignore-feedback-loops", false) /* denormal management */ diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc index 394fa73079..6fe51961d2 100644 --- a/libs/ardour/session.cc +++ b/libs/ardour/session.cc @@ -1522,7 +1522,7 @@ Session::resort_routes_using (boost::shared_ptr r) /* Attempt a topological sort of the route graph */ boost::shared_ptr sorted_routes = topological_sort (r, edges); - if (Config->get_ignore_feedback_loops() || sorted_routes) { + if (sorted_routes) { /* We got a satisfactory topological sort, so there is no feedback; use this new graph. @@ -1553,9 +1553,8 @@ Session::resort_routes_using (boost::shared_ptr r) #endif SuccessfulGraphSort (); /* EMIT SIGNAL */ - } - if (!sorted_routes) { + } else { /* The topological sort failed, so we have a problem. Tell everyone and stick to the old graph; this will continue to be processed, so until the feedback is fixed, what is played back will not quite From 7bb24872e532cc1c0067bc3a8fcf7e4ec7f52beb Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Tue, 16 Apr 2013 21:53:38 +0200 Subject: [PATCH 06/18] update linux packaging script to include xjadeo & harvid --- tools/linux_packaging/build | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/tools/linux_packaging/build b/tools/linux_packaging/build index b332365407..9f70f95eb2 100755 --- a/tools/linux_packaging/build +++ b/tools/linux_packaging/build @@ -530,9 +530,13 @@ done if test x$WITH_HARVID != x ; then cd $APPBIN - HARVID_VERSION=$(curl http://ardour.org/files/video-tools/latest_version_numer.txt) + HARVID_VERSION=$(curl http://ardour.org/files/video-tools/harvid_version.txt) curl -L http://ardour.org/files/video-tools/harvid-${MULTIARCH}-${HARVID_VERSION}.tgz \ | tar -x -z --exclude=README --exclude=harvid.1 --strip-components=1 || exit 1 + XJADEO_VERSION=$(curl http://ardour.org/files/video-tools/xjadeo_version.txt) + curl -L http://ardour.org/files/video-tools/xjadeo-${MULTIARCH}-${XJADEO_VERSION}.tgz \ + | tar -x -z --exclude=README --exclude=xjadeo.1 --strip-components=1 || exit 1 + mv xjadeo xjremote cd - fi From d1c4910f13bcc58fc897b164542d89c0e0b13677 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Sat, 20 Apr 2013 14:31:11 +0200 Subject: [PATCH 07/18] add script to install video-tools --- tools/videotimeline/install_video_tools.sh | 105 +++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100755 tools/videotimeline/install_video_tools.sh diff --git a/tools/videotimeline/install_video_tools.sh b/tools/videotimeline/install_video_tools.sh new file mode 100755 index 0000000000..28d31f748c --- /dev/null +++ b/tools/videotimeline/install_video_tools.sh @@ -0,0 +1,105 @@ +#!/bin/sh +TARGETDIR="$1" + +if test -z "$(which curl)"; then + echo "This script requires 'curl' - please install it" >&2 + exit 1 +fi + +checkdir () { + DUT="$1" + CHECKPATH="${2:-yes}" + ECHO="${3:-echo}" + + if test -z "$DUT"; then + echo "-1" + return + fi + + if test ! -d "$DUT"; then + $ECHO "ERROR: '$DUT' is not a directory'"; >&2 + echo "-1" + return + fi + + if test ! -w "$DUT"; then + $ECHO "ERROR: no write permissions for '$DUT'" >&2 + echo "-1" + return + fi + + echo $PATH | grep -q "$DUT" + if test $? != 0; then + if test "$CHECKPATH" != "yes"; then + $ECHO "WARNING: '$DUT' is not in \$PATH" >&2 + else + $ECHO "ERROR: '$DUT' is not in \$PATH" >&2 + echo "-1" + return + fi + fi + + echo 0 +} + +while test $(checkdir "$TARGETDIR" no) != 0 ; do + + ARDOUR=$(ls -td /opt/Ardour* 2>/dev/null | head -n 1) + if test -n "${ARDOUR}" -a $(checkdir "${ARDOUR}/bin" no true) = 0; then + echo -n "found ardour installation in '${ARDOUR}/bin'. Install there? [Y|n] " + read a; + if test "$a" != "n" -a "$a" != "N"; then + TARGETDIR="${ARDOUR}/bin" + continue + fi + fi + + if test $(checkdir "/usr/bin" yes true) = 0; then + echo -n "Can write to '/usr/bin' Install there? [Y|n] " + read a; + if test "$a" != "n" -a "$a" != "N"; then + TARGETDIR="/usr/bin" + continue + fi + fi + + if test $(checkdir "${HOME}/bin" yes true) = 0; then + echo -n "Found '${HOME}/bin' in PATH. Install there? [Y|n] " + read a; + if test "$a" != "n" -a "$a" != "N"; then + TARGETDIR="${HOME}/bin" + continue + fi + fi + + if test $(checkdir "/usr/local/bin" yes true) = 0; then + echo -n "Can write to '/usr/local/bin' Install there? [Y|n] " + read a; + if test "$a" != "n" -a "$a" != "N"; then + TARGETDIR="/usr/local/bin" + continue + fi + fi + + echo + echo "ERROR: Cannot find a suitable installation directory" >&2 + echo "run: $0 /install/path/bin" >&2 + echo "'/install/path/bin' must be an existing directory and should be in \$PATH" >&2 + exit 1 +done + +############################################################################### +### actual install procedure +echo "installing video-tools to '${TARGETDIR}'.." +exit +cd "$TARGETDIR" || exit 1 + +HARVID_VERSION=$(curl http://ardour.org/files/video-tools/harvid_version.txt) +curl -L http://ardour.org/files/video-tools/harvid-${MULTIARCH}-${HARVID_VERSION}.tgz \ + | tar -x -z --exclude=README --exclude=harvid.1 --strip-components=1 || exit 1 +XJADEO_VERSION=$(curl http://ardour.org/files/video-tools/xjadeo_version.txt) +curl -L http://ardour.org/files/video-tools/xjadeo-${MULTIARCH}-${XJADEO_VERSION}.tgz \ + | tar -x -z --exclude=README --exclude=xjadeo.1 --strip-components=1 || exit 1 +mv xjadeo xjremote + +echo "ardour video tools installed successfully" From a366fba7d0933a8f2d97d95fefcbcdc9692d2117 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Sat, 20 Apr 2013 14:52:18 +0200 Subject: [PATCH 08/18] refine video-tools installer: * arch/platform detection * curl progress-bar --- tools/videotimeline/install_video_tools.sh | 55 +++++++++++++++++++--- 1 file changed, 48 insertions(+), 7 deletions(-) diff --git a/tools/videotimeline/install_video_tools.sh b/tools/videotimeline/install_video_tools.sh index 28d31f748c..8ad900a99e 100755 --- a/tools/videotimeline/install_video_tools.sh +++ b/tools/videotimeline/install_video_tools.sh @@ -6,6 +6,42 @@ if test -z "$(which curl)"; then exit 1 fi +############################################################################### +### look-up architecture + +case $(uname -m) in + i[3456789]86|x86|i86pc) + echo "Architecture is x86" + MULTIARCH="i386" + ;; + x86_64|amd64|AMD64) + echo "Architecture is x86_64" + MULTIARCH="x86_64" + ;; + *) + echo + echo "ERROR: Unknown architecture `uname -m`" >&2 + exit 1 + ;; +esac + +case $(uname) in + Linux|linux) + MULTIARCH="${MULTIARCH}-linux-gnu" + ;; + *) + echo + echo "ERROR: Platform `uname` is not supported by this script" >&2 + exit 1 + ;; +esac + +echo "Multiarch triplet is '$MULTIARCH'" + + +############################################################################### +### install target directory + checkdir () { DUT="$1" CHECKPATH="${2:-yes}" @@ -90,16 +126,21 @@ done ############################################################################### ### actual install procedure -echo "installing video-tools to '${TARGETDIR}'.." -exit + +echo "installing video-tools to '${TARGETDIR}'." cd "$TARGETDIR" || exit 1 -HARVID_VERSION=$(curl http://ardour.org/files/video-tools/harvid_version.txt) -curl -L http://ardour.org/files/video-tools/harvid-${MULTIARCH}-${HARVID_VERSION}.tgz \ +HARVID_VERSION=$(curl -s http://ardour.org/files/video-tools/harvid_version.txt) +echo "Downloading harvid-${MULTIARCH}-${HARVID_VERSION}." +curl -L --progress-bar \ + http://ardour.org/files/video-tools/harvid-${MULTIARCH}-${HARVID_VERSION}.tgz \ | tar -x -z --exclude=README --exclude=harvid.1 --strip-components=1 || exit 1 -XJADEO_VERSION=$(curl http://ardour.org/files/video-tools/xjadeo_version.txt) -curl -L http://ardour.org/files/video-tools/xjadeo-${MULTIARCH}-${XJADEO_VERSION}.tgz \ + +XJADEO_VERSION=$(curl -s http://ardour.org/files/video-tools/xjadeo_version.txt) +echo "Downloading xjadeo-${MULTIARCH}-${XJADEO_VERSION}." +curl -L --progress-bar \ + http://ardour.org/files/video-tools/xjadeo-${MULTIARCH}-${XJADEO_VERSION}.tgz \ | tar -x -z --exclude=README --exclude=xjadeo.1 --strip-components=1 || exit 1 mv xjadeo xjremote -echo "ardour video tools installed successfully" +echo "ardour video tools installed successfully." From db34831b183d511d76ea1f29606e1933e5ad4caf Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Fri, 26 Apr 2013 14:12:52 -0400 Subject: [PATCH 09/18] redesign toggling of editor/mixer stacking to use Gtkmm2ext::VisibilityTracker --- gtk2_ardour/ardour.menus.in | 2 +- gtk2_ardour/ardour_ui.h | 2 +- gtk2_ardour/ardour_ui_dependents.cc | 50 +++++++++++++++---- gtk2_ardour/ardour_ui_ed.cc | 2 +- gtk2_ardour/editor.cc | 3 +- gtk2_ardour/editor.h | 3 +- gtk2_ardour/mixer_ui.cc | 1 + gtk2_ardour/mixer_ui.h | 4 +- gtk2_ardour/mnemonic-us.bindings.in | 2 +- libs/gtkmm2ext/gtkmm2ext/visibility_tracker.h | 4 ++ libs/gtkmm2ext/visibility_tracker.cc | 19 ++++++- 11 files changed, 73 insertions(+), 19 deletions(-) diff --git a/gtk2_ardour/ardour.menus.in b/gtk2_ardour/ardour.menus.in index 10881a0fb0..0279384fb5 100644 --- a/gtk2_ardour/ardour.menus.in +++ b/gtk2_ardour/ardour.menus.in @@ -506,7 +506,7 @@ - + diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h index 6300a352d5..a326669ec3 100644 --- a/gtk2_ardour/ardour_ui.h +++ b/gtk2_ardour/ardour_ui.h @@ -310,7 +310,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr void goto_editor_window (); void goto_mixer_window (); void toggle_mixer_window (); - void toggle_mixer_on_top (); + void toggle_editor_mixer (); int setup_windows (); void setup_transport (); diff --git a/gtk2_ardour/ardour_ui_dependents.cc b/gtk2_ardour/ardour_ui_dependents.cc index b9b0cdb6a2..7438fab9f0 100644 --- a/gtk2_ardour/ardour_ui_dependents.cc +++ b/gtk2_ardour/ardour_ui_dependents.cc @@ -150,21 +150,49 @@ ARDOUR_UI::toggle_mixer_window () } void -ARDOUR_UI::toggle_mixer_on_top () +ARDOUR_UI::toggle_editor_mixer () { + if (editor && mixer) { - if (gtk_window_is_active(Mixer_UI::instance()->gobj())) { + if (editor->get_screen() != mixer->get_screen()) { + // different screens, so don't do anything + return; + } + + /* See if they are obscuring each other */ + + gint ex, ey, ew, eh; + gint mx, my, mw, mh; + + editor->get_position (ex, ey); + editor->get_size (ew, eh); + + mixer->get_position (mx, my); + mixer->get_size (mw, mh); + + GdkRectangle e; + GdkRectangle m; + GdkRectangle r; + + e.x = ex; + e.y = ey; + e.width = ew; + e.height = eh; + + m.x = mx; + m.y = my; + m.width = mw; + m.height = mh; + + if (!gdk_rectangle_intersect (&e, &m, &r)) { + /* they do not intersect so do not toggle */ + return; + } + } + + if (mixer && mixer->fully_visible()) { goto_editor_window (); } else { - Glib::RefPtr act = ActionManager::get_action (X_("Common"), X_("toggle-mixer")); - if (act) { - Glib::RefPtr tact = Glib::RefPtr::cast_dynamic (act); - - /* Toggle the mixer to `visible' if required */ - if (!tact->get_active ()) { - tact->set_active (true); - } - } goto_mixer_window (); } } diff --git a/gtk2_ardour/ardour_ui_ed.cc b/gtk2_ardour/ardour_ui_ed.cc index 2d279385ae..66335bb55b 100644 --- a/gtk2_ardour/ardour_ui_ed.cc +++ b/gtk2_ardour/ardour_ui_ed.cc @@ -239,7 +239,7 @@ ARDOUR_UI::install_actions () ActionManager::session_sensitive_actions.push_back (act); ActionManager::register_toggle_action (common_actions, X_("toggle-mixer"), S_("Window|Mixer"), sigc::mem_fun(*this, &ARDOUR_UI::toggle_mixer_window)); - ActionManager::register_action (common_actions, X_("toggle-mixer-on-top"), _("Mixer on Top"), sigc::mem_fun(*this, &ARDOUR_UI::toggle_mixer_on_top)); + ActionManager::register_action (common_actions, X_("toggle-editor-mixer"), _("Toggle Editor+Mixer"), sigc::mem_fun(*this, &ARDOUR_UI::toggle_editor_mixer)); ActionManager::register_toggle_action (common_actions, X_("ToggleRCOptionsEditor"), _("Preferences"), sigc::mem_fun(*this, &ARDOUR_UI::toggle_rc_options_window)); ActionManager::register_toggle_action (common_actions, X_("ToggleSessionOptionsEditor"), _("Properties"), sigc::mem_fun(*this, &ARDOUR_UI::toggle_session_options_window)); act = ActionManager::register_toggle_action (common_actions, X_("ToggleInspector"), _("Tracks and Busses"), sigc::mem_fun(*this, &ARDOUR_UI::toggle_route_params_window)); diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc index b7cc7b9f27..280f401fdf 100644 --- a/gtk2_ardour/editor.cc +++ b/gtk2_ardour/editor.cc @@ -233,7 +233,8 @@ pane_size_watcher (Paned* pane) } Editor::Editor () - : _join_object_range_state (JOIN_OBJECT_RANGE_NONE) + : VisibilityTracker (*((Gtk::Window*) this)) + , _join_object_range_state (JOIN_OBJECT_RANGE_NONE) /* time display buttons */ , minsec_label (_("Mins:Secs")) diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h index 910df94c26..1c246a3f3b 100644 --- a/gtk2_ardour/editor.h +++ b/gtk2_ardour/editor.h @@ -43,6 +43,7 @@ #include "gtkmm2ext/dndtreeview.h" #include "gtkmm2ext/stateful_button.h" #include "gtkmm2ext/bindings.h" +#include "gtkmm2ext/visibility_tracker.h" #include "pbd/stateful.h" #include "pbd/signals.h" @@ -146,7 +147,7 @@ class ImageFrameSocketHandler ; class TimeAxisViewItem ; /* */ -class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARDOUR::SessionHandlePtr +class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARDOUR::SessionHandlePtr, public Gtkmm2ext::VisibilityTracker { public: Editor (); diff --git a/gtk2_ardour/mixer_ui.cc b/gtk2_ardour/mixer_ui.cc index 74556c8eda..e3a97daa6f 100644 --- a/gtk2_ardour/mixer_ui.cc +++ b/gtk2_ardour/mixer_ui.cc @@ -83,6 +83,7 @@ Mixer_UI::instance () Mixer_UI::Mixer_UI () : Window (Gtk::WINDOW_TOPLEVEL) + , VisibilityTracker (*((Gtk::Window*) this)) , _visible (false) , no_track_list_redisplay (false) , in_group_row_change (false) diff --git a/gtk2_ardour/mixer_ui.h b/gtk2_ardour/mixer_ui.h index 2946d0ae59..8a293f7f9f 100644 --- a/gtk2_ardour/mixer_ui.h +++ b/gtk2_ardour/mixer_ui.h @@ -40,6 +40,8 @@ #include "ardour/types.h" #include "ardour/session_handle.h" +#include "gtkmm2ext/visibility_tracker.h" + #include "enums.h" #include "mixer_actor.h" @@ -53,7 +55,7 @@ class PluginSelector; class MixerGroupTabs; class MonitorSection; -class Mixer_UI : public Gtk::Window, public PBD::ScopedConnectionList, public ARDOUR::SessionHandlePtr, public MixerActor +class Mixer_UI : public Gtk::Window, public PBD::ScopedConnectionList, public ARDOUR::SessionHandlePtr, public MixerActor, public Gtkmm2ext::VisibilityTracker { public: static Mixer_UI* instance(); diff --git a/gtk2_ardour/mnemonic-us.bindings.in b/gtk2_ardour/mnemonic-us.bindings.in index 0f0415c983..ef596478fc 100644 --- a/gtk2_ardour/mnemonic-us.bindings.in +++ b/gtk2_ardour/mnemonic-us.bindings.in @@ -219,7 +219,7 @@ This mode provides many different operations on both regions and control points, @sess|Main/AddTrackBus|<@PRIMARY@><@TERTIARY@>n|add track(s) or bus(ses) @sess|Main/New|<@PRIMARY@>n|open a new session @rop|Region/toggle-region-mute|<@PRIMARY@>m|mute/unmute -@wvis|Common/toggle-mixer-on-top|<@WINDOW@>m|rotate editor \& mixer window +@wvis|Common/toggle-editor-mixer|<@WINDOW@>m|rotate editor \& mixer window ;; arrow keys, navigation etc. diff --git a/libs/gtkmm2ext/gtkmm2ext/visibility_tracker.h b/libs/gtkmm2ext/gtkmm2ext/visibility_tracker.h index 6415dd6d2b..f4ed62bb21 100644 --- a/libs/gtkmm2ext/gtkmm2ext/visibility_tracker.h +++ b/libs/gtkmm2ext/gtkmm2ext/visibility_tracker.h @@ -35,6 +35,10 @@ class VisibilityTracker { void cycle_visibility (); + bool fully_visible() const; + bool not_visible() const; + bool partially_visible() const; + private: Gtk::Window& window; GdkVisibilityState _visibility; diff --git a/libs/gtkmm2ext/visibility_tracker.cc b/libs/gtkmm2ext/visibility_tracker.cc index c0aabdfca6..d5a020d370 100644 --- a/libs/gtkmm2ext/visibility_tracker.cc +++ b/libs/gtkmm2ext/visibility_tracker.cc @@ -41,10 +41,27 @@ VisibilityTracker::handle_visibility_notify_event (GdkEventVisibility* ev) void VisibilityTracker::cycle_visibility () { - if (window.is_mapped() && (_visibility == GDK_VISIBILITY_UNOBSCURED)) { + if (fully_visible ()) { window.hide (); } else { window.present (); } } +bool +VisibilityTracker::fully_visible () const +{ + return window.is_mapped() && (_visibility == GDK_VISIBILITY_UNOBSCURED); +} + +bool +VisibilityTracker::not_visible () const +{ + return !window.is_mapped() || (_visibility == GDK_VISIBILITY_FULLY_OBSCURED); +} + +bool +VisibilityTracker::partially_visible () const +{ + return window.is_mapped() && (_visibility == GDK_VISIBILITY_PARTIAL); +} From 63b02a265a6d5e821198b5e3fcc1f6ba6d83a129 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Sun, 28 Apr 2013 20:31:25 -0400 Subject: [PATCH 10/18] Revert "fix LXVST support for plugins that make audioMaster callbacks from within effOpen (e.g. glitch)" This patch broke just about all other LVXST plugins. Glitch is doing something wrong, or there is more magic about VST that we have yet to understand. This reverts commit 56bc98f78bd3b1e5ba5c6ce902b2805d40a6cc53. --- libs/ardour/ardour/vst_plugin.h | 1 - libs/ardour/linux_vst_support.cc | 29 ++++++++++------------------- libs/ardour/lxvst_plugin.cc | 4 ++-- 3 files changed, 12 insertions(+), 22 deletions(-) diff --git a/libs/ardour/ardour/vst_plugin.h b/libs/ardour/ardour/vst_plugin.h index d9cfd87bad..7ca973cbb7 100644 --- a/libs/ardour/ardour/vst_plugin.h +++ b/libs/ardour/ardour/vst_plugin.h @@ -73,7 +73,6 @@ public: AEffect * plugin () const { return _plugin; } VSTState * state () const { return _state; } - void set_state (VSTState* s) { _state = s; } int set_state (XMLNode const &, int); diff --git a/libs/ardour/linux_vst_support.cc b/libs/ardour/linux_vst_support.cc index 9106d69009..99251f08e4 100644 --- a/libs/ardour/linux_vst_support.cc +++ b/libs/ardour/linux_vst_support.cc @@ -34,8 +34,6 @@ #include #include "ardour/linux_vst_support.h" -#include "ardour/vst_plugin.h" - #include "pbd/basename.h" #include "pbd/error.h" @@ -295,43 +293,36 @@ vstfx_unload (VSTHandle* fhandle) return 0; } -/** - Instantiates a VST plugin and also set _state of its plugin argument - */ +/*This instantiates a plugin*/ -VSTState* -vstfx_instantiate (VSTHandle* fhandle, audioMasterCallback amc, void *ptr) +VSTState * +vstfx_instantiate (VSTHandle* fhandle, audioMasterCallback amc, void* userptr) { VSTState* vstfx = vstfx_new (); - ARDOUR::VSTPlugin* plugin = reinterpret_cast (ptr); - if (fhandle == 0) { + if(fhandle == 0) + { vstfx_error( "** ERROR ** VSTFX : The handle was 0\n" ); return 0; } - if ((vstfx->plugin = fhandle->main_entry (amc)) == 0) { + if ((vstfx->plugin = fhandle->main_entry (amc)) == 0) + { vstfx_error ("** ERROR ** VSTFX : %s could not be instantiated :(\n", fhandle->name); free (vstfx); return 0; } vstfx->handle = fhandle; - vstfx->plugin->user = plugin; + vstfx->plugin->user = userptr; - if (vstfx->plugin->magic != kEffectMagic) { + if (vstfx->plugin->magic != kEffectMagic) + { vstfx_error ("** ERROR ** VSTFX : %s is not a VST plugin\n", fhandle->name); free (vstfx); return 0; } - - /* need to set this here because some plugins make audioMaster - * callbacks from within effOpen, and _state must be set for - * that to work. - */ - plugin->set_state (vstfx); - vstfx->plugin->dispatcher (vstfx->plugin, effOpen, 0, 0, 0, 0); /*May or May not need to 'switch the plugin on' here - unlikely diff --git a/libs/ardour/lxvst_plugin.cc b/libs/ardour/lxvst_plugin.cc index 80e6b9c286..6e30e0c443 100755 --- a/libs/ardour/lxvst_plugin.cc +++ b/libs/ardour/lxvst_plugin.cc @@ -32,7 +32,7 @@ LXVSTPlugin::LXVSTPlugin (AudioEngine& e, Session& session, VSTHandle* h) { /* Instantiate the plugin and return a VSTState* */ - if (vstfx_instantiate (_handle, Session::vst_callback, this) == 0) { + if ((_state = vstfx_instantiate (_handle, Session::vst_callback, this)) == 0) { throw failed_constructor(); } @@ -44,7 +44,7 @@ LXVSTPlugin::LXVSTPlugin (const LXVSTPlugin &other) { _handle = other._handle; - if (vstfx_instantiate (_handle, Session::vst_callback, this) == 0) { + if ((_state = vstfx_instantiate (_handle, Session::vst_callback, this)) == 0) { throw failed_constructor(); } _plugin = _state->plugin; From 03310a587c1157d2287c43f9f2aea97263606880 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Tue, 30 Apr 2013 03:28:11 +0200 Subject: [PATCH 11/18] zero/reset closed file-descriptors should fix issues with LinuxDSP plugins (X11 thread) & xjadeo --- gtk2_ardour/system_exec.cc | 51 +++++++++++++++++++------------------- 1 file changed, 26 insertions(+), 25 deletions(-) diff --git a/gtk2_ardour/system_exec.cc b/gtk2_ardour/system_exec.cc index 1f178a6c68..566c87dfbb 100644 --- a/gtk2_ardour/system_exec.cc +++ b/gtk2_ardour/system_exec.cc @@ -38,6 +38,8 @@ using namespace std; void * interposer_thread (void *arg); +static void close_fd (int* fd) { if (!fd) return; if (*fd >= 0) ::close (*fd); *fd = -1; } + SystemExec::SystemExec (std::string c, std::string a) : cmd(c) { @@ -483,18 +485,18 @@ SystemExec::start (int stderr_mode) pid=r; /* check if execve was successful. */ - ::close(pok[1]); + close_fd(&pok[1]); char buf; for ( ;; ) { ssize_t n = ::read(pok[0], &buf, 1 ); if ( n==1 ) { /* child process returned from execve */ pid=0; - ::close(pok[0]); - ::close(pin[1]); - ::close(pin[0]); - ::close(pout[1]); - ::close(pout[0]); + close_fd(&pok[0]); + close_fd(&pin[1]); + close_fd(&pin[0]); + close_fd(&pout[1]); + close_fd(&pout[0]); pin[1] = -1; return -3; } else if ( n==-1 ) { @@ -503,7 +505,7 @@ SystemExec::start (int stderr_mode) } break; } - ::close(pok[0]); + close_fd(&pok[0]); /* child started successfully */ #if 0 @@ -519,17 +521,17 @@ SystemExec::start (int stderr_mode) } if (r == 0) { /* 2nd child process - catch stdout */ - ::close(pin[1]); - ::close(pout[1]); + close_fd(&pin[1]); + close_fd(&pout[1]); output_interposer(); exit(0); } - ::close(pout[1]); - ::close(pin[0]); - ::close(pout[0]); + close_fd(&pout[1]); + close_fd(&pin[0]); + close_fd(&pout[0]); #else /* use pthread */ - ::close(pout[1]); - ::close(pin[0]); + close_fd(&pout[1]); + close_fd(&pin[0]); int rv = pthread_create(&thread_id_tt, NULL, interposer_thread, this); thread_active=true; @@ -543,15 +545,15 @@ SystemExec::start (int stderr_mode) } /* child process - exec external process */ - ::close(pok[0]); + close_fd(&pok[0]); ::fcntl(pok[1], F_SETFD, FD_CLOEXEC); - ::close(pin[1]); + close_fd(&pin[1]); if (pin[0] != STDIN_FILENO) { ::dup2(pin[0], STDIN_FILENO); } - ::close(pin[0]); - ::close(pout[0]); + close_fd(&pin[0]); + close_fd(&pout[0]); if (pout[1] != STDOUT_FILENO) { ::dup2(pout[1], STDOUT_FILENO); } @@ -569,7 +571,7 @@ SystemExec::start (int stderr_mode) } if (pout[1] != STDOUT_FILENO && pout[1] != STDERR_FILENO) { - ::close(pout[1]); + close_fd(&pout[1]); } if (nicelevel !=0) { @@ -596,7 +598,7 @@ SystemExec::start (int stderr_mode) /* if we reach here something went wrong.. */ char buf = 0; (void) ::write(pok[1], &buf, 1 ); - (void) ::close(pok[1]); + close_fd(&pok[1]); exit(-1); return -1; } @@ -631,11 +633,10 @@ void SystemExec::close_stdin() { if (pin[1]<0) return; - ::close(pin[0]); - ::close(pin[1]); - ::close(pout[0]); - ::close(pout[1]); - pin[1] = - 1; // mark as closed + close_fd(&pin[0]); + close_fd(&pin[1]); + close_fd(&pout[0]); + close_fd(&pout[1]); } int From c40accda42bd470b7083fba6fcbba0fe68e96bb6 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Tue, 30 Apr 2013 11:12:27 -0400 Subject: [PATCH 12/18] don't print stacktraces to the supplied ostream AND cerr - a remnant from debugging wierd problems with stacktrace() on paul's system --- libs/pbd/stacktrace.cc | 1 - 1 file changed, 1 deletion(-) diff --git a/libs/pbd/stacktrace.cc b/libs/pbd/stacktrace.cc index ca614509a5..805b9a2e84 100644 --- a/libs/pbd/stacktrace.cc +++ b/libs/pbd/stacktrace.cc @@ -85,7 +85,6 @@ PBD::stacktrace (std::ostream& out, int levels) for (i = 0; i < size && (levels == 0 || i < size_t(levels)); i++) { out << " " << demangle (strings[i]) << std::endl; - std::cerr << " " << demangle (strings[i]) << std::endl; } free (strings); From 07a5372eea6b70dd9f3224aa3aead904e2eef72c Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Tue, 30 Apr 2013 11:14:06 -0400 Subject: [PATCH 13/18] fixups for building on OS X where apple define silly macros --- gtk2_ardour/automation_controller.h | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/gtk2_ardour/automation_controller.h b/gtk2_ardour/automation_controller.h index 88e6d87e01..29635c8488 100644 --- a/gtk2_ardour/automation_controller.h +++ b/gtk2_ardour/automation_controller.h @@ -21,6 +21,13 @@ #ifndef __ardour_gtk_automation_controller_h__ #define __ardour_gtk_automation_controller_h__ +#ifdef YES +#undef YES +#endif +#ifdef NO +#undef NO +#endif + #include #include From d54a35a6718e4791ef57d0ad86dc2f41a1ec46a2 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Tue, 30 Apr 2013 11:15:23 -0400 Subject: [PATCH 14/18] cleanup AU GUI support, which was broken because prefheight and prefwidth were left unset after a cleanup attempt some months ago. add a few more tweaks based on current 2.x code and some tricks found elsewhere that dont' change behaviour but are just better --- gtk2_ardour/au_pluginui.h | 2 +- gtk2_ardour/au_pluginui.mm | 35 +++++++++++++++++++++-------------- gtk2_ardour/plugin_ui.cc | 10 ++++++++++ 3 files changed, 32 insertions(+), 15 deletions(-) diff --git a/gtk2_ardour/au_pluginui.h b/gtk2_ardour/au_pluginui.h index 6f90480457..cbf83d5d92 100644 --- a/gtk2_ardour/au_pluginui.h +++ b/gtk2_ardour/au_pluginui.h @@ -93,7 +93,7 @@ class AUPluginUI : public PlugUIBase, public Gtk::VBox int prefwidth; Gtk::HBox top_box; - Gtk::EventBox low_box; + Gtk::HBox low_box; Gtk::VBox vpacker; Gtk::Label automation_mode_label; Gtk::ComboBoxText automation_mode_selector; diff --git a/gtk2_ardour/au_pluginui.mm b/gtk2_ardour/au_pluginui.mm index f394e305c8..16d4e7e6fc 100644 --- a/gtk2_ardour/au_pluginui.mm +++ b/gtk2_ardour/au_pluginui.mm @@ -1,5 +1,3 @@ -#include - #undef Marker #define Marker FuckYouAppleAndYourLackOfNameSpaces @@ -170,13 +168,16 @@ AUPluginUI::AUPluginUI (boost::shared_ptr insert) top_box.show (); low_box.show (); - _activating_from_app = false; cocoa_parent = 0; - _notify = 0; cocoa_window = 0; - carbon_window = 0; + +#ifdef WITH_CARBBON + _activating_from_app = false; + _notify = 0; au_view = 0; editView = 0; + carbon_window = 0; +#endif /* prefer cocoa, fall back to cocoa, but use carbon if its there */ @@ -227,6 +228,7 @@ AUPluginUI::~AUPluginUI () bool AUPluginUI::test_carbon_view_support () { +#ifdef WITH_CARBON bool ret = false; carbon_descriptor.componentType = kAudioUnitCarbonViewComponentType; @@ -253,6 +255,9 @@ AUPluginUI::test_carbon_view_support () } return ret; +#else + return false; +#endif } bool @@ -282,7 +287,7 @@ AUPluginUI::plugin_class_valid (Class pluginClass) int AUPluginUI::create_cocoa_view () { - BOOL wasAbleToLoadCustomView = NO; + bool wasAbleToLoadCustomView = false; AudioUnitCocoaViewInfo* cocoaViewInfo = NULL; UInt32 numberOfClasses = 0; UInt32 dataSize; @@ -380,7 +385,7 @@ AUPluginUI::create_cocoa_view () free (cocoaViewInfo); } - wasAbleToLoadCustomView = YES; + wasAbleToLoadCustomView = true; } } @@ -390,14 +395,16 @@ AUPluginUI::create_cocoa_view () au->get_au())); au_view = [[AUGenericView alloc] initWithAudioUnit:*au->get_au()]; DEBUG_TRACE (DEBUG::AudioUnits, string_compose ("view created @ %1\n", au_view)); - [(AUGenericView *)au_view setShowsExpertParameters:YES]; + [(AUGenericView *)au_view setShowsExpertParameters:1]; } // Get the initial size of the new AU View's frame NSRect rect = [au_view frame]; + prefheight = rect.size.height; + prefwidth = rect.size.width; low_box.set_size_request (rect.size.width, rect.size.height); - + return 0; } @@ -409,7 +416,7 @@ AUPluginUI::cocoa_view_resized () NSSize oldContentSize= [window contentRectForFrameRect:[window frame]].size; NSSize newContentSize= [au_view frame].size; NSRect windowFrame= [window frame]; - + oldContentSize.height -= topsize.height; float dy = oldContentSize.height - newContentSize.height; @@ -427,7 +434,7 @@ AUPluginUI::cocoa_view_resized () NSUInteger old_auto_resize = [au_view autoresizingMask]; [au_view setAutoresizingMask:NSViewNotSizable]; - [window setFrame:windowFrame display:YES]; + [window setFrame:windowFrame display:1]; [au_view setAutoresizingMask:old_auto_resize]; [[NSNotificationCenter defaultCenter] addObserver:_notify @@ -603,7 +610,7 @@ AUPluginUI::parent_cocoa_window () return -1; } - [win setAutodisplay:YES]; // turn of GTK stuff for this window + [win setAutodisplay:1]; // turn of GTK stuff for this window Gtk::Container* toplevel = get_toplevel(); @@ -620,7 +627,7 @@ AUPluginUI::parent_cocoa_window () NSPoint origin = { 0, a.height }; [au_view setFrameOrigin:origin]; - [view addSubview:au_view positioned:NSWindowBelow relativeTo:nil]; + [view addSubview:au_view positioned:NSWindowBelow relativeTo:nil]; // watch for size changes of the view @@ -681,7 +688,7 @@ AUPluginUI::on_realize () NSWindow* win = get_nswindow (); if (win) { - [win setShowsResizeIndicator:NO]; + [win setShowsResizeIndicator:0]; } } diff --git a/gtk2_ardour/plugin_ui.cc b/gtk2_ardour/plugin_ui.cc index 2dd8741a13..5b281f33ab 100644 --- a/gtk2_ardour/plugin_ui.cc +++ b/gtk2_ardour/plugin_ui.cc @@ -226,6 +226,12 @@ PluginUIWindow::on_show () } if (_pluginui) { +#if defined (HAVE_AUDIOUNITS) && defined(GTKOSX) + if (pre_deactivate_x >= 0) { + move (pre_deactivate_x, pre_deactivate_y); + } +#endif + if (_pluginui->on_window_show (_title)) { Window::on_show (); } @@ -239,6 +245,10 @@ PluginUIWindow::on_show () void PluginUIWindow::on_hide () { +#if defined (HAVE_AUDIOUNITS) && defined(GTKOSX) + get_position (pre_deactivate_x, pre_deactivate_y); +#endif + Window::on_hide (); if (_pluginui) { From 0b8712268e4935e69fa5604407ee0f7753027fdd Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Tue, 30 Apr 2013 17:45:22 +0200 Subject: [PATCH 15/18] fix version detection in OSX build script --- tools/osx_packaging/osx_build | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/tools/osx_packaging/osx_build b/tools/osx_packaging/osx_build index d750674d36..af582ff3bf 100755 --- a/tools/osx_packaging/osx_build +++ b/tools/osx_packaging/osx_build @@ -62,9 +62,13 @@ while [ $# -gt 0 ] ; do esac done -#release_version=`grep -m 1 '[^A-Za-z_]OSX_VERSION = ' ../../wscript | cut -d' ' -f 3 | sed "s/'//g"` -release_version=3.0 -revision=`grep -m 1 'revision =' ../../libs/ardour/revision.cc | cut -d' ' -f 8 | sed 's/[^0-9]//g'` +if test -z "$PRODUCT_PKG_DIR" -o -z "$APPNAME"; then + echo "application or product-name was not specified" + exit 1 +fi + +release_version=`grep -m 1 '[^A-Za-z_]OSX_VERSION = ' ../../wscript | cut -d"'" -f2` +revision=`grep -m 1 'revision =' ../../libs/ardour/revision.cc | cut -d'"' -f 2 | sed 's/^.*-//g'` echo "Version is $release_version / $revision" info_string="$release_version/$revision built on `hostname` by `whoami` on `date`" echo "Info string is $info_string" From 63e4c37deffbedacf0a81359fd4615774c227556 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Tue, 30 Apr 2013 13:48:55 -0400 Subject: [PATCH 16/18] remove unnecessary sigc++ header --- gtk2_ardour/editor_markers.cc | 1 - 1 file changed, 1 deletion(-) diff --git a/gtk2_ardour/editor_markers.cc b/gtk2_ardour/editor_markers.cc index 070ce4bc6e..3bca0ad935 100644 --- a/gtk2_ardour/editor_markers.cc +++ b/gtk2_ardour/editor_markers.cc @@ -17,7 +17,6 @@ */ -#include #include #include From a9341bd5f03dad86161786c1f764471b23273601 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Tue, 30 Apr 2013 13:50:15 -0400 Subject: [PATCH 17/18] improve relationship between ArdourDialog and Splash on OS X, where window restacking doesn't really work the way we need it to. more complex than anticipated because it seems that destroying a Gtk::Dialog does not emit its hide() or unmap() or unmap_event() signals --- gtk2_ardour/ardour_dialog.cc | 16 +++++++++++++--- gtk2_ardour/ardour_dialog.h | 1 + gtk2_ardour/ardour_ui.cc | 6 ++++-- gtk2_ardour/splash.cc | 24 +++++++++++++++++++++++- 4 files changed, 41 insertions(+), 6 deletions(-) diff --git a/gtk2_ardour/ardour_dialog.cc b/gtk2_ardour/ardour_dialog.cc index c0e1708781..6775a70953 100644 --- a/gtk2_ardour/ardour_dialog.cc +++ b/gtk2_ardour/ardour_dialog.cc @@ -34,12 +34,14 @@ sigc::signal ArdourDialog::CloseAllDialogs; ArdourDialog::ArdourDialog (string title, bool modal, bool use_seperator) : Dialog (title, modal, use_seperator) + , _splash_pushed (false) { init (); } ArdourDialog::ArdourDialog (Gtk::Window& parent, string title, bool modal, bool use_seperator) : Dialog (title, parent, modal, use_seperator) + , _splash_pushed (false) { init (); set_position (Gtk::WIN_POS_CENTER_ON_PARENT); @@ -47,6 +49,13 @@ ArdourDialog::ArdourDialog (Gtk::Window& parent, string title, bool modal, bool ArdourDialog::~ArdourDialog () { + if (_splash_pushed) { + Splash* spl = Splash::instance(); + + if (spl) { + spl->pop_front(); + } + } } bool @@ -73,15 +82,16 @@ ArdourDialog::on_unmap () void ArdourDialog::on_show () { + Dialog::on_show (); + // never allow the splash screen to obscure any dialog Splash* spl = Splash::instance(); - if (spl) { + if (spl && spl->is_visible()) { spl->pop_back_for (*this); + _splash_pushed = true; } - - Dialog::on_show (); } void diff --git a/gtk2_ardour/ardour_dialog.h b/gtk2_ardour/ardour_dialog.h index 4f53662c23..1008f63000 100644 --- a/gtk2_ardour/ardour_dialog.h +++ b/gtk2_ardour/ardour_dialog.h @@ -46,6 +46,7 @@ class ArdourDialog : public Gtk::Dialog, public ARDOUR::SessionHandlePtr static void close_all_dialogs () { CloseAllDialogs(); } private: + bool _splash_pushed; void init (); static sigc::signal CloseAllDialogs; diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index eebd35aefb..7e972b8032 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -3771,12 +3771,14 @@ audio may be played at the wrong sample rate.\n"), desired, PROGRAM_NAME, actual image->show(); hbox->show(); - switch (dialog.run ()) { + switch (dialog.run()) { case RESPONSE_ACCEPT: return 0; default: - return 1; + break; } + + return 1; } diff --git a/gtk2_ardour/splash.cc b/gtk2_ardour/splash.cc index 0922ec75ba..99adff68e9 100644 --- a/gtk2_ardour/splash.cc +++ b/gtk2_ardour/splash.cc @@ -25,6 +25,10 @@ #include "ardour/ardour.h" #include "ardour/filesystem_paths.h" +#ifdef check +#undef check +#endif + #include "gui_thread.h" #include "splash.h" @@ -96,15 +100,33 @@ Splash::~Splash () void Splash::pop_back_for (Gtk::Window& win) { +#ifdef __APPLE__ + /* April 2013: window layering on OS X is a bit different to X Window. at present, + the "restack()" functionality in GDK will only operate on windows in the same + "level" (e.g. two normal top level windows, or two utility windows) and will not + work across them. The splashscreen is on its own "StatusWindowLevel" so restacking + is not going to work. + + So for OS X, we just hide ourselves. + */ + hide(); +#else set_keep_above (false); get_window()->restack (win.get_window(), false); - win.signal_hide().connect (sigc::mem_fun (*this, &Splash::pop_front)); +#endif } void Splash::pop_front () { + +#ifdef __APPLE__ + if (get_window()) { + show (); + } +#else set_keep_above (true); +#endif } void From 35842fd5eed8b28f2a89c5d88895351dc8511c76 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Tue, 30 Apr 2013 16:38:48 -0400 Subject: [PATCH 18/18] forward port recent mixbus change so that side-scroll is now shift-wheel and height adjustment is alt-wheel, rather than vice versa, to match OS X convention --- gtk2_ardour/editor_canvas_events.cc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/gtk2_ardour/editor_canvas_events.cc b/gtk2_ardour/editor_canvas_events.cc index 4c49dd1a9b..fd44ed3f2e 100644 --- a/gtk2_ardour/editor_canvas_events.cc +++ b/gtk2_ardour/editor_canvas_events.cc @@ -73,10 +73,10 @@ Editor::track_canvas_scroll (GdkEventScroll* ev) temporal_zoom_step (false); zoom_focus = temp_focus; return true; - } else if (Keyboard::modifier_state_equals (ev->state, Keyboard::SecondaryModifier)) { + } else if (Keyboard::modifier_state_equals (ev->state, Keyboard::TertiaryModifier)) { direction = GDK_SCROLL_LEFT; goto retry; - } else if (Keyboard::modifier_state_equals (ev->state, Keyboard::TertiaryModifier)) { + } else if (Keyboard::modifier_state_equals (ev->state, Keyboard::SecondaryModifier)) { if (!current_stepping_trackview) { step_timeout = Glib::signal_timeout().connect (sigc::mem_fun(*this, &Editor::track_height_step_timeout), 500); std::pair const p = trackview_by_y_position (ev->y + vertical_adjustment.get_value() - canvas_timebars_vsize); @@ -102,10 +102,10 @@ Editor::track_canvas_scroll (GdkEventScroll* ev) temporal_zoom_step (true); zoom_focus = temp_focus; return true; - } else if (Keyboard::modifier_state_equals (ev->state, Keyboard::SecondaryModifier)) { + } else if (Keyboard::modifier_state_equals (ev->state, Keyboard::TertiaryModifier)) { direction = GDK_SCROLL_RIGHT; goto retry; - } else if (Keyboard::modifier_state_equals (ev->state, Keyboard::TertiaryModifier)) { + } else if (Keyboard::modifier_state_equals (ev->state, Keyboard::SecondaryModifier)) { if (!current_stepping_trackview) { step_timeout = Glib::signal_timeout().connect (sigc::mem_fun(*this, &Editor::track_height_step_timeout), 500); std::pair const p = trackview_by_y_position (ev->y + vertical_adjustment.get_value() - canvas_timebars_vsize);