13
0
Commit Graph

9274 Commits

Author SHA1 Message Date
eb6b4f4b15 fix crash on SystemExec::Terminate
if Terminated() connects in the same thread and deletes the class itself
the closure in interposer_thread() can fail.
2015-10-23 23:29:04 +02:00
311adde023 add ifdefs for LV2-1.0.0 compat 2015-10-23 18:58:55 +02:00
96c6da0804 Make mackie control view mode save bank for all modes.
Also moved duplicated code to one function.
2015-10-22 15:30:34 -07:00
55e8f6ac30 Enable i18n for info/error messages in MidiPatchManager 2015-10-22 11:51:03 -04:00
e93ba53309 Only parse additional Session midnam files on Session load
When loading a Session add the Session patchfiles directory to the
MidiPatchManager search path and only process/parse the files for that
directory rather than refreshing/reparsing all the files. Similarly for unload,
just unload the devices that are from the Session specific midnam files instead
of removing the path and refreshing/reparsing all the files.

This will not remove the "system" midnam files as they are always added first
and duplicates from the session patchfiles directory are ignored.
2015-10-22 11:51:03 -04:00
efc26a0490 Store the file path when constructing MidiNameDocument
This is so we can compare and see if we have already parsed the file
2015-10-22 11:51:03 -04:00
689862cafb Decouple Session from MidiPatchManager and reduce parsing of midnam xml files
The MidiPatchManager only requires a reference to the session to get the path
to the Session midnam directory so change it so that the path is passed to
MidiPatchManager::add_search_path on Session construction and removed on
Session Destruction. This will also make it easier to test and reduce compile
times etc.

For the common case where the Session doesn't have a Session specific midnam
patch files directory(for instance a new session) it won't cause a refresh and
reparsing of all the midnam files. This saves about 2 seconds to load a Session
on my machine(fast machine with SSD), or about half the time spent in the
Session constructor for a new session.

There is still going to be that initial cost of parsing the midnam files when
the first session is created after starting Ardour. Options to remove that
would be to parse the files asynchronously and or use a faster xml
parser(eventually), neither of which seem worth doing at this stage.

This change will cause a performance regression for the uncommon case where a
Session with Session specific midnam files is unloaded and then another Session
with Session specific midnam files is loaded as it will cause the common midnam
files in midi_patch_path to be parsed twice(unload and load).
2015-10-22 11:51:03 -04:00
3bd928591b Add PBD::Searchpath::contains method to check if a Searchpath contains a path 2015-10-22 11:51:03 -04:00
c07ea1bc73 Expose protected PBD::Searchpath API
I prefer to use these as they are more explicit than using the overloaded
operators.
2015-10-22 11:51:03 -04:00
76d43487da Don't parse midnam patch files contained in Session twice
MidiPatchManager::refresh already adds the patch files contained in the session
folder
2015-10-22 11:51:03 -04:00
ee9f369e38 Refactor common code in MidiPatchManager class into new method 2015-10-22 11:51:02 -04:00
9fd75e33fe Don't call MidiPatchManager::refresh when creating MidiPatchManager instance
Currently when loading a session for the first time MidiPatchManager::instance
creates the MidiPatchManager singleton which calls MPM::refresh and all the
midnam files are parsed etc. MPM::set_session is then immediately called and
all the MPM state that has just been set when parsing all the midnam files is
cleared and the parsing of all the files is performed again but this time with
any session specific midnam patch files.

MPM::instance and MPM::set_session consume about 55% of the time spent in the
Session ctor according to kcachegrind and removing the double call to refresh
brings Session construction time for a particular test session down from 7.5s
to 5.5s
2015-10-22 11:51:02 -04:00
3c4f899a4f Fix a small buffer issue which could sometimes prevent sessions from being able to load
In the function 'LV2Plugin::add_state()' the snprintf() call can easily print 19 or even 20 bytes - so a 16-byte buffer wasn't large enough.
2015-10-22 16:37:00 +01:00
5bdc869e49 remove invalid assertion - #6634
There is a highly unlikely case where the render thread can have zero
requests in the queue, but it is not supposed to be terminated.

 1) WaveView::queue_get_image(); 
wake up thread, *but* the thread does not start yet
 2) WaveView::cancel_my_render_request(); 
and now the thread starts.

1,2 are initiated by user actions from the GUI thread and are normally
orders of magnitude slower than scheduler-thread wakeup.
2015-10-22 12:20:42 +02:00
d31ac095e0 Add some newly introduced sources to our MSVC project (libardour) 2015-10-22 09:19:02 +01:00
André Nusser
67f557b1f4 Add overwrite option to save_template. (default = false)
Before it could not overwrite.
2015-10-21 23:28:44 -04:00
e4570242f3 fix automation update at transport stop when in automation Play mode 2015-10-21 23:06:40 -04:00
d4227faaee fix mute automation in Play automation state 2015-10-21 23:06:05 -04:00
8d3a8ca913 Add AutomationControl::set_value_unchecked() and AutomationControl::writable() and use them.
Classes derived from AutomationControl now check ::writable() in their ::set_value() methods to ensure that they
do not attempt to overwrite data sent to them while automation playback is underway.
2015-10-21 22:31:35 -04:00
6ca3a1593e add commentary and clean up blank lines 2015-10-21 22:31:35 -04:00
ea95bef27b variable name change: percent is 0..100, 0..1.0 is a fraction 2015-10-21 08:09:40 -04:00
6e7ca06f63 ensure that mutator function for CONFIG_VARIABLE_SPECIAL is used when assigning initial value during construction 2015-10-21 07:53:26 -04:00
7a453d2329 Make sure Mackie Control view modes start with route 1 except Mixer mode goes to last position. 2015-10-20 19:31:04 -07:00
81f6ad0d0c Added "Selected" view mode to Mackie Control. 2015-10-20 18:54:56 -07:00
f84798ff75 Fix crash in new CoreaudioSource code (on invalid file) 2015-10-21 03:12:45 +02:00
6ec32a70c1 fix AudioUnit parameter listening to work with new ParameterChangedExternally semantics 2015-10-20 10:25:36 -04:00
f806f059b3 rename Plugin::ParameterChanged to ParameterChangedExternally to reflect its intent, and clean up the libardour side of result.
The signal exists to notify listeners that something outside of the host's control (e.g. a plugin's own GUI for AU or VST)
has modified a plugin parameter. Previous code had strange feedback loops and ambiguous semantics.
2015-10-20 10:23:49 -04:00
7804a524dc Revert "rename ParameterChanged signal in Plugin to ParameterChangedExternally to reflect its intent, and clean up the result."
This reverts commit 336b2eb9a4.
2015-10-20 10:23:49 -04:00
740c4dd134 possible fix for invalid cleanup space calc on win32. 2015-10-20 15:50:00 +02:00
af3ffc8610 NOOP, re-indent 2015-10-20 15:49:59 +02:00
52e75f5a45 remove cruft 2015-10-20 15:49:59 +02:00
336b2eb9a4 rename ParameterChanged signal in Plugin to ParameterChangedExternally to reflect its intent, and clean up the result.
The signal exists to notify listeners that something outside of the host's control (e.g. a plugin's own GUI for AU or VST)
has modified a plugin parameter. Previous code had strange feedback loops and ambiguous semantics.

Significant modification of LV2 GUI updating was required.

Still to be tested for feedback loop issues: AudioUnits
2015-10-20 09:07:58 -04:00
f1a6d7816d remove unused "copy modifier hint" 2015-10-20 11:12:36 +02:00
nick_m
9df1232feb Legatize::name () reflects its type. Fixes confusing undo record name. 2015-10-20 00:53:30 +11:00
nick_m
9511c9c86f Add tooltips to user config preferences. clean up combo ordering. 2015-10-20 00:53:30 +11:00
nick_m
4dcd22fadf Update ContrilList debug output. 2015-10-20 00:53:29 +11:00
nick_m
cc7de475f2 Amend last connit - don't use a bool to represent a double. 2015-10-20 00:53:28 +11:00
nick_m
ff2f934977 Fix incorrect initial point when recording toggled automation. 2015-10-20 00:53:28 +11:00
nick_m
ffed94d89b Automation - more toggled controller twiddling. 2015-10-20 00:53:28 +11:00
nick_m
1648000108 Automation - fix occasional inverted bool state after write. 2015-10-20 00:53:28 +11:00
nick_m
9c102fa8d2 Make automation record undo per pass rather than per touch. 2015-10-20 00:53:28 +11:00
nick_m
877b258c74 Toggled automation fixes.
- don't attempt to insert two points on toggle.
	- remove forced touch->write mode change on toggle
	- initial state still wrong, but works much better overall.
2015-10-20 00:53:27 +11:00
nick_m
17294ab9ec Make control point selection more consistent.
- disallow simultaneous events via ControlList::editor_add ()
	- clicking on an automation line selects the points that define it.
	- don't 'flash' a region selection when using mousedraw mode.
	- cp click selection resembles region selection.
	- region gain points respect snap modifier (a la automation points).
2015-10-20 00:53:27 +11:00
03df442d0e remove cruft 2015-10-19 15:44:46 +02:00
48f91c6ef4 Add Audio Tracks and Busses too. 2015-10-18 19:55:56 -07:00
0185c9f25a Added Midi Tracks View mode. 2015-10-18 18:13:16 -07:00
6ff50d2140 fix OS X system detection (amend 66704ee) 2015-10-18 23:19:52 +02:00
38efd580b2 libs/* changes use new AppleUtility Library 2015-10-18 23:03:13 +02:00
66704eefcb alternative new version of the AppleUtility library 2015-10-18 23:03:13 +02:00
f7e3117c3b Only display Trim for tracks that have Trim. On the way:
-fixed flip mode.
	-fixed no controlable for vpot or fader
2015-10-18 07:38:40 -07:00