Commit graph

187 commits

Author SHA1 Message Date
Johannes Mueller
f7452c2a3a Addressing #7371: don't trigger session->undo() from non-GUI-thread
When triggering Session::undo() or Session::redo() from a
non-GUI-thread (e.g. from a surface protocol) Ardour crashes if setting a
CairoWidget dirty due to a ENSURE_GUI_THREAD assertion. (see #7371)

By triggering undo by BasicUI::access_action() rather than by Session::undo()
we ensure that the GUI thread will finally call Session::undo().

So more like a workaround ... but better than crashing :)
2017-07-01 01:04:44 +02:00
Tim Mayberry
4d927c6bd4 Use braces in BasicUI::jump_by_bars() 2017-05-23 09:13:27 +10:00
Tim Mayberry
7fe188ec92 Use braces in BasicUI::jump_by_seconds() 2017-05-23 09:13:27 +10:00
Tim Mayberry
df185e575e Use correct variable in BasicUI::jump_by_seconds 2017-05-23 09:13:27 +10:00
John Emmas
b9bbea7174 It might not be obvious why... but 'ARDOUR::ControlProtocol::name()' needs to be a virtual function
Basically, libardour is calling functions from libardour_cp and vice versa. For example, libardour needs 'ARDOUR::ControlProtocol::name()' whereas ardour_cp needs 'ARDOUR::Route::soloed()' and various others. Ordinarily, this would require each library to get built before the other one! :-(

To get around this (in MSVC at least) one of the libraries must be forced to use late binding (e.g. by declaring its functions as 'virtual'). It looks like this is already being done for most of the other functions from 'ARDOUR::ControlProtocol', so let's do it for this function too...
2017-05-15 14:46:34 +01:00
Paul Davis
7021d02782 don't actually use a method from libardourcp inside libardour; use a PBD::Signal to avoid linker issues 2017-05-12 17:49:09 +01:00
Paul Davis
eb3f50e15c change the way ControlProtocols (control surfaces) are notified and handle Stripable selection changes
The Editor continues to notify them, but via a direct call to ControlProtocolManager, not a signal.
The CP Manager calls the ControlProtocol static method to set up static data structures holding
selection info for all surfaces and then notifies each surface/protocol that selection has changed.
2017-05-12 14:51:39 +01:00
Tim Mayberry
8144b197c0 Use XMLNode::get/set_property API in ARDOUR::ControlProtocol class 2017-04-19 09:36:54 +10:00
Tim Mayberry
63296285be Add missing header include to ControlProtocol class source file 2017-04-19 09:36:47 +10:00
Ben Loftis
6b8be8fa71 Fix set-*-from-edit-range actions, when accessed from control surfaces. 2017-04-01 09:57:06 -05:00
Len Ovens
f69808b372 BasicUI moved toggle_click,toggle_roll and stop_forget from menu action to session calls 2017-03-19 23:09:45 -07:00
Len Ovens
1af7e97fd0 basic_ui send midi_panic directly to session rather than through GUI 2017-03-19 07:27:24 -07:00
Len Ovens
caae0546a7 OSC fix toggle_monitor_mute/dim/mono in basic_ui 2017-03-18 14:14:02 -07:00
Paul Davis
f1e6cc50b0 Revert "libs: debug output for faderport/editor mixer strip sync"
This reverts commit 6fb91b1ac2.
2017-02-25 19:56:51 +01:00
Paul Davis
6fb91b1ac2 libs: debug output for faderport/editor mixer strip sync 2017-02-24 23:10:03 +01:00
Robin Gareus
9d8829f5bf Remove direct calls to set solo_control()
Changing solo-state needs to be done in rt-context to atomically
propagate solo/mute.

set_control() queues a rt-event, later Session::rt_set_control() calls
Session::update_route_solo_state() to propagate solo/mute.
2017-02-17 03:58:51 +01:00
Paul Davis
e75c713e5e make the leftmost mixer stripable API at least work as advertised 2017-02-01 11:57:37 +01:00
Paul Davis
0f4530af0d add new API to ControlProtocol to allow GUI to specify left-most mixer strip
Subject To Change. Mileage May Vary. Offer Not Good In All Territories.
2017-02-01 11:46:42 +01:00
Paul Davis
220fbbe0d8 fix another action name in BasicUI after Editor=>Control migration 2017-01-28 18:51:03 +01:00
Paul Davis
e92c169275 fix action names in BasicUI after Editor=>Control migration 2017-01-28 18:51:03 +01:00
Paul Davis
6dbe3a1e3b post-rebase fixes 2016-09-27 14:59:30 -05:00
Paul Davis
d7a16786fc change API for BasicUI::goto_start() to use optional roll-after arg 2016-09-27 14:59:29 -05:00
Paul Davis
ac9b5f872d add method (taken from GTK GUI) to goto_nth_marker() to BasicUI 2016-09-27 14:59:29 -05:00
Paul Davis
0e5ac13a04 use new shared cancel_all_solo() in Mackie code 2016-09-27 14:59:29 -05:00
Paul Davis
40dd604dbc add correct implementation for cancel all solo to BasicUI 2016-09-27 14:59:29 -05:00
John Emmas
0ff233d234 Update our MSVC project files to generate the most recent Ardour session file format (ver 5) rather than the older v3 format 2016-08-30 07:15:00 +01:00
Paul Davis
cf52d6e4b4 enough with umpteen "i18n.h" files. Consolidate on pbd/i18n.h 2016-07-14 14:45:23 -04:00
Paul Davis
77a8da9010 set ControlProtocol::_first_selected_stripable at the right time only 2016-07-06 20:58:33 -04:00
Paul Davis
cf9706974c a few post-rebase cleanups 2016-07-06 14:03:24 -04:00
Paul Davis
2047ee527c restore/extend/simplify ControlProtocol API to allow tracking of selection 2016-07-06 13:39:10 -04:00
Paul Davis
eed3ea5047 remove a bunch of code that will no longer be used 2016-07-06 13:38:13 -04:00
Paul Davis
291aec468f use session stripable selection API
and remove old ControlProtocol signals to talk to GUI etc.
2016-07-04 12:45:53 -04:00
Paul Davis
3eaa6c0389 remove certain ControlProtocol signals related to stripable selection
includes change to Mackie support so that strips listen for PropertyChange
on the stripables they represent, no global selection change used anymore.
2016-06-10 13:57:18 -04:00
Paul Davis
f03f2e5c3f use new record safe control in surface support 2016-05-31 15:30:45 -04:00
Paul Davis
08f01085de remove now-redundant control protocol route-selection signals 2016-05-31 15:30:43 -04:00
Paul Davis
c438ba2b6e remove no-longer-used TrackSelectionChanged signal from ControlProtocol 2016-05-31 15:30:43 -04:00
Paul Davis
dd57a83793 add Stripable analogs for Route signals and methods in ControlProtocol
These will go away once all surfaces have migrated to Stripables
2016-05-31 15:30:42 -04:00
Paul Davis
e0ff70cf86 first vaguely working version using PresentationInfo
remote control ID and "order keys" have been removed.
2016-05-31 15:30:42 -04:00
Paul Davis
653ae4acd6 universal change in the design of the way Route/Track controls are designed and used. The controls now own their own state, rather than proxy for state in their owners.
Massive changes all over the code to accomodate this. Many things are not finished. Consider this a backup safety commit
2016-05-31 15:30:40 -04:00
Paul Davis
aee283f056 use redesigned Route and VCA object architecture/API 2016-05-31 15:30:39 -04:00
nick_m
34c9ac9dd7 Tempo ramps - rename bbt_time() -> bbt_at_frame(), frame_time() -> frame_at_bbt() 2016-05-27 23:38:17 +10:00
John Emmas
b0200b23f2 Accommodate the fact that 'msvc_resources.rc.in' got moved to a new path 2016-05-21 10:33:18 +01:00
Paul Davis
ae7cc64377 copy-n-paste the ARDOUR_UI toggle-roll code into BasicUI (for Faderport and others) 2016-05-09 08:17:23 -04:00
Paul Davis
8b52b69810 make BasicUI (for control surfaces) loop toggle work like the GUI 2016-04-30 10:54:40 -04:00
John Emmas
40aa4cfe06 Modify our MSVC projects to build liblua as a DLL rather than a static lib 2016-04-04 16:40:20 +01:00
Robin Gareus
ba78359129 prepare for update to waf 1.8
uselib is no longer implicit (inherited by .use). This is still incomplete,
some uselibs for non-linux variants may be missing.

bld.is_defined("HAVE_XXX") also no longer works and will have to be
changed (I think to bld.env["HAVE_XXX"]) in countless places.
2016-02-28 21:16:44 +01:00
John Emmas
d3634c5779 Accommodate 'lua' search paths in various projects where they're needed
(i.e. so that MSVC can find header files from lua).
2016-02-27 16:29:55 +00:00
Paul Davis
ff2c3dbc81 control surfaces: fix BaseUI method for disabling record enable 2016-02-02 09:03:41 -05:00
Ben Loftis
3332633d19 Editing from a control surface must have the ability to ignore mouse location.
Add mark_in and mark_out actions that explicitly use the playhead as the edit location.
2016-01-28 13:46:33 -06:00
Paul Davis
2005891d40 use route gain control, not amp->gain() 2016-01-25 11:48:43 -05:00