13
0
Commit Graph

11003 Commits

Author SHA1 Message Date
bc434841d2 fix gtk "child->parent == NULL" asserts 2013-08-08 15:26:19 -04:00
35703cb3fc properly handle port removal in route.
bug:
 - add midi track
 - add additional midi port
 - remove additional midi port
 - press play
 -> crash

because..

ARDOUR::MidiTrack::roll's route_buffer still has 2 midi-channels. This is
because processor_max_streams was not updated (no plugins added/removed)
fill_buffers_with_input() eventually asserts when trying to get the 2nd
(nonexistant) midi port via ARDOUR::PortSet::nth_midi_port() in
 ARDOUR::PortSet::port().
2013-08-08 15:26:19 -04:00
53d98b4db9 fix "other" port-group tab
Separate port-bundles for each jack client in the connection manager.

Previously, apps were only listed as separate bundles if the
ports were gathered at different times. ie one app shows up after
the other (and if no complete re-scan was triggered)

Fixes issue reported by Fons Adriaensen.
2013-08-08 15:26:19 -04:00
Michael Fisher
5155a36002 Send and Read MIDI Positions the right way 2013-08-08 15:26:19 -04:00
5e1cfcc7ed on session-load: skip output-change-handler until IOs are restored
fixes loading a session with tracks that have more input-ports
than output-ports.

the problem:

input -ports are added first, when added, IO::ensure_port() emits
IOChange::ConfigurationChanged which in turn triggers the route to
allocate corresponding output ports.

Due to this callback the output-ports were created before the actual
output-port-configuration and plugin-configuration from the
session-state was parsed and set.
2013-08-08 15:26:19 -04:00
f84504222e disallow invalid port-removal
do not allow port-removal if the port would be re-added immediately
after that again because the main-delivery actually needs it.

As a side effect this prevents this crash:

 * create a stereo-track, then remove one output
  -> unhandled exception "AudioEngine::PortRegistrationFailure&"

 The problem:
 - the port is removed from the RCU ports list,
   but Port::drop() (which calls jack_port_unregister) is only called
   from the Port's destructor at some later time.
   (because a reference to the port still exists elsewhere)
 - the jack-port is not yet removed.
 - meanwhile Delivery::configure_io comes along and notices that
   there are more audio-buffers than ports and tries to re-register the port.
 - but the port still exists in jack, so it fails and throws an exception
   ...which is not handled.
2013-08-08 15:26:19 -04:00
d7382d613c fix typos in display of error message about an LV2 plugin preset 2013-08-08 15:26:19 -04:00
Michael Fisher
71e2fbbcff Resolve duplicate symbol 'cocoa_open_uri' on OSX builds.
cocoa_open_uri.mm was being added to the source list
twice and also compiling twice. This patch enusres it is
only added once.
2013-08-08 15:26:19 -04:00
05be443152 keep port-matrix in sync when deleting ports. and fix segfault on session close with io-matrix visible 2013-08-08 15:26:19 -04:00
Michael Fisher
f4101b8c53 Midi clock housekeeping 2013-08-08 15:26:19 -04:00
Michael Fisher
f6ec3c42fc Make Session::send_song_position_pointer a no-op 2013-08-08 15:26:19 -04:00
Michael Fisher
ce85a4d847 Revamp clock processing so it uses an internal frame reference.
MidiClockTicker::Position managed by boost::scoped_ptr
2013-08-08 15:26:19 -04:00
Michael Fisher
46ee815459 WIP - Experimenting with an alternative clock generating algo
- Transport debug output (tracing where transport_frame
      is updated
2013-08-08 15:26:19 -04:00
Michael Fisher
9592359c70 Human readable printing of MIDI Position messages 2013-08-08 15:26:18 -04:00
Michael Fisher
d6480f15f9 - Send position data from internal position class
- Proper midi beat conversions for all time signatures
- Disable responding to Session::PositionChanged in place
  of Session::Located.
2013-08-08 15:26:18 -04:00
Michael Fisher
7d5102543c Test code removal... 2013-08-08 15:26:18 -04:00
Michael Fisher
0ed083730a MIDI Clock - Shuffling locate code (not actually used yet)
- Subscribe to Session::Locate to detect seeks
- Shuffle Mclk locating computations into a separate private class
2013-08-08 15:26:18 -04:00
Michael Fisher
9afb71eb5a Stop compiler warning about NSURL 2013-08-08 15:26:18 -04:00
9284835580 rework MIDI [processor|plugin] chain
* forward midi-data around plugins that have no MIDI-out
* allow to insert plugins with no MIDI-input at a point with one MIDI-channel

This works because excess ports (both plugin and route) remain
unconnected and use scratch-buffers.

Tested with LV2, LXVST and LADSPA.
(AU plugins with variable in/out retain the old behavior, no bypass)

fixes http://tracker.ardour.org/view.php?id=5630
2013-08-08 15:26:18 -04:00
36623b7b0a remove an identical odd namespacing typo 2013-08-08 15:26:18 -04:00
9376e436cd remove odd namespacing typo 2013-08-08 15:26:18 -04:00
3f423339bc add _ISOC9X_SOURCE define to compiler command line to provide uniform access to llabs() 2013-08-08 15:26:18 -04:00
4db277056f re-check meterbridge metric-area on route deletion
fixes http://tracker.ardour.org/view.php?id=5616#c15204
2013-08-08 15:26:18 -04:00
3e411ec4f6 use zeroed scratch buffers for "silent" plugin runs
Plugins rewrite the buffer data in-place and some plugins
can produce output even when fed with silence.

Hence, during a PluginInsert::silence() run a plugin can
inject data into the "silent" buffers which causes side-effects.

Kudos to Chris 'oofus' Goddard for finding this issue.
2013-08-08 15:26:18 -04:00
1700b30e4e tiny detail.. GUI-callback may try to check vmonitor->is_started() or issue a periodic seek update while it's going away 2013-08-08 15:26:18 -04:00
6b02d50d5e clean up some valgrid "Uninitialised value was created by a heap allocation" wanings 2013-08-08 15:26:18 -04:00
41aae4d685 correct error message 2013-08-08 15:26:18 -04:00
9aa348afce fix close_allv() sentinel 2013-08-08 15:26:18 -04:00
24b9f1ff8a valgrind ignore glib UTF8 warnings 2013-08-08 15:26:18 -04:00
f977b55cee initialize two more uninitialized vars.. 2013-08-08 15:26:18 -04:00
cc6a31c972 fix typo in c212c16eb 2013-08-08 15:26:18 -04:00
69c6ef1aa1 initialize some uninitialized values 2013-08-08 15:26:18 -04:00
ddf6029c86 catch assert() 2013-08-08 15:26:18 -04:00
a7c80c808d LV2 - use scratch buffers to scratch :) 2013-08-08 15:26:18 -04:00
9a8deb6ab4 another amend to 00f26394a9 2013-08-08 15:26:18 -04:00
9ef2a89ccd fix stupid copy/paste error in 00f26394a9 2013-08-08 15:26:18 -04:00
b6b614acac minimize meter-peak re-draw area 2013-08-08 15:26:18 -04:00
becee15370 RMS meter: remove unused peak-detection 2013-08-08 15:26:18 -04:00
15ac545601 adjust meterbridge label-heigh options 2013-08-08 15:26:18 -04:00
1fd2c857e3 add name-tooltips to the meterbridge meters 2013-08-08 15:26:17 -04:00
16ae154dff clean up 44fc92c3 (not a threading issue but sigc++ problem)
RouteUI is not sigc::trackable itself (only derived classes are)
RouteUI::~RouteUI() does not disconnect from signals on destruction.
2013-08-08 15:26:17 -04:00
f6ac5cadea use dedicated buffers for route (and track)
"scratch buffers are by definition scratch and their contents are undefined at all times"
"silent buffers are by definition all-zero and should not be used for real data"

But track & route were using those for actual data; plugins (which may run
in the same thread and may get the same buffers) use them for scratch thereby
overwriting real data.

In particular get_silent_buffers() (used by LadspaPlugin::connect_and_run)
clears the buffer which can holds real data:
e.g. via  Route::passthru_silence() -> plugin1 -> plugin2 (clears output of plugin1)
2013-08-08 15:26:17 -04:00
401bbe24c3 disconnect AuxSend connection when deleting bus
fixes crash:
 - add bus
 - aux-send a signal to that bus
 - delete bus
 - add another bus
 - aux-send a signal to "another bus"
 - click "Aux Send" button on "another bus"
 - crash
2013-08-08 15:26:17 -04:00
e92306459d Revert "fix issue with generator plugins and no-roll disk monitoring"
This reverts commit bd34ab04cd.
2013-08-08 15:26:17 -04:00
05ed31a980 fix issue with generator plugins and no-roll disk monitoring 2013-08-08 15:26:17 -04:00
Michael Fisher
406e69c57d Return an empty string instead of a bool 2013-08-08 15:26:17 -04:00
Michael Fisher
af148ff130 Cast param for std::time to a pointer of time_t
- bleeding clang (trunk 186535 v3.4) fails here
2013-08-08 15:26:17 -04:00
Michael Fisher
bfbc55a673 Proper OSX/CLANG/CXX11 support in stl_delete.h
- replaces fix in 066df0d218
- Check if _LIBCPP_VECTOR is defined for vector_delete.
  This is defined in libc++'s headers which Apple is using
  instead of libstdc++
2013-08-08 15:26:17 -04:00
Michael Fisher
14a7941b5d Housekeeping, code style 2013-08-08 15:26:17 -04:00
Michael Fisher
8541b81e31 Moving Mclk locating code to ticker.cc. Housekeeping 2013-08-08 15:26:17 -04:00