Commit graph

31236 commits

Author SHA1 Message Date
Robin Gareus
fb954f50d4
Prevent silentfile over-read #8563
Fixes negative read-count

```
Thread 45 (Thread 0x7fff9d79c640 (LWP 32440) "butler"):
#0 ?? () from /lib64/libc.so.6
#1 ARDOUR::SilentFileSource::read_unlocked (this=0x5555699f2160, dst=0x7fff9c5d8010, start=60547072, cnt=-47406) at ../libs/ardour/ardour/silentfilesource.h:58
#2 ARDOUR::AudioSource::read (this=0x5555699f2160, dst=0x7fff9c5d8010, start=60547072, cnt=262144) at ../libs/ardour/audiosource.cc:322
#3 ARDOUR::AudioRegion::read_from_sources (this=0x555570859780, srcs=std::vector of length 2, capacity 2 = {...}, limit=33675720, buf=0x7fff9c5d8010, position=60547072, cnt=262144, chan_n=0) at ../libs/ardour/audioregion.cc:747
#4 ARDOUR::AudioRegion::read_at (this=0x555570859780, buf=0x7fff9cdd9010, mixdown_buffer=0x7fff9c5d8010, gain_buffer=0x7fff677ff010, position=60547072, cnt=262144, chan_n=0) at ../libs/ardour/audioregion.cc:587
```
2021-02-05 16:06:55 +01:00
Robin Gareus
482507fabe
Add Lua bindings to modify plugin pin bypass/thru-map 2021-02-05 01:52:27 +01:00
Robin Gareus
634d325e5d
Prevent deadlock when disconnecting
The backend holds `_port_callback_mutex` while disconnecting ports.
In some cases disconnecting a port can drop the last reference
resulting in a port-deletion from the connection handler.
This in turn will eventually aquire the `_port_callback_mutex`
and deadlock.

This is now circumvented by using atomic operations instead of
taking a lock to set the `_port_change_flag`.

The flag is also used to trigger a latency update in some cases,
atomic is preferable to taking a lock to set this flag.

--

Full bt: https://paste.debian.net/1184056/
Short:

#1  in pthread_mutex_lock ()
#2  in ARDOUR::PortEngineSharedImpl::port_connect_add_remove_callback()
#3  in ARDOUR::BackendPort::~BackendPort()
#4  in ARDOUR::DummyPort::~DummyPort()
#6  in ARDOUR::DummyAudioPort::~DummyAudioPort()
#7  in boost::checked_delete<ARDOUR::BackendPort>(ARDOUR::BackendPort*)
#12 in boost::shared_ptr<ARDOUR::ProtoPort>::reset()
#13 in ARDOUR::Port::drop()
#14 in ARDOUR::Port::~Port()
#15 in ARDOUR::AudioPort::~AudioPort()
#17 in ARDOUR::AudioEngine::add_pending_port_deletion(ARDOUR::Port*)
#20 in boost::detail::sp_counted_base::release()
#37 in ARDOUR::PortManager::connect_callback() at libs/ardour/port_manager.cc:788
#38 in ARDOUR::DummyAudioBackend::main_process_thread() at libs/backends/dummy/dummy_audiobackend.cc:1018
2021-02-04 21:06:20 +01:00
Paul Davis
30da8c00b5 fix (??) issue with transport control (stop after locate with no audio tracks)
Unclear why previous code used !tfsm->rolling() rather than tfsm->stopped() but this
now works as intended
2021-02-04 11:07:28 -07:00
Robin Gareus
acfa04d700
Update Ctrl-surface MIDI port list when ports change
This is a better variant of bbb6851468, directly using
the GUI context without indirection.
2021-02-04 06:19:37 +01:00
Robin Gareus
ed5a9979ea
Retain "Virtual Keyboard" pretty name across engine restarts 2021-02-04 05:23:17 +01:00
Robin Gareus
3d44f39c09
Report failed connections when reconnecting ports
This is needed to update the GUI (mixer-strip I/O buttons)
when the engine is re-started with different I/O.

When Port::reconnect() cannot re-connect the port (e.g.
because the corresponding hardware port is missing), the IO object
needs o be notified -> PostDisconnect() -> IO::disconnect_check.

While the port-manager re-establishes and re-connects port,
port_manager->running() == false, and Port::get_connections()
returns the Port::_connections set (not actual engine connections).
So _connections.clear() has to be called synchronize it with
the actual engine connection state.
2021-02-04 04:41:22 +01:00
Robin Gareus
25ab3b14c9
Don't run input meters (unused in Ardour 6) 2021-02-04 03:03:13 +01:00
Robin Gareus
162b6426d7
Fix fader font-size
This partially reverts 2abf9c66a4. The layout
of faders widgets is not persistent and re-created as needed.
2021-02-03 20:14:22 +01:00
Robin Gareus
f01ece1bd7 AU: Fix variable I/O instruments
Refactoring in 7ec10f7771 assumed that
audio inputs are always present.
2021-02-03 15:33:07 +01:00
Robin Gareus
b50a6fbe17
Fix LV2 boolean Atom values size #8558
As per lv2/atom.lv2/atom.h
LV2_Atom_Bool is-a LV2_Atom_Int, which uses int32_t
2021-02-02 22:41:57 +01:00
Robin Gareus
4f87d59576
Reduce InternalReturn inheritance
InternalReturn makes no use of Return or IOProcessor methods
or members. It is a truly independent Processor.
2021-02-01 23:49:49 +01:00
Robin Gareus
7d3d64512c
Hide hidden ports in port-matrix 2021-02-01 23:49:39 +01:00
Robin Gareus
7888d85750
Tweak icon-tool output image 2021-01-30 23:24:03 +01:00
Robin Gareus
e511ee968e
Yet another C++11ism 2021-01-30 23:23:35 +01:00
Robin Gareus
9c2bb240af
Fix icon tool for gcc-10 2021-01-30 16:47:44 +01:00
Robin Gareus
74566fc006
Add "+" icon 2021-01-30 16:47:44 +01:00
John Emmas
79c6f4a3ab Some older versions of std::map can be touchy about us trying to erase a const_iterator 2021-01-30 14:05:31 +00:00
John Emmas
bf75df3790 Add/remove source(s) in our MSVC project (gtk2_ardour) 2021-01-30 14:00:39 +00:00
John Emmas
66d63dde89 A few extra changes needed to support the latest version of libpthread for Windows 2021-01-30 13:59:22 +00:00
John Emmas
b496a71d2e Some preliminary changes needed to support building with VS2019
(these get me about as far as 'libardour' )
2021-01-30 13:55:25 +00:00
Robin Gareus
24e0391679
Fix C++11'ism 2021-01-30 05:01:33 +01:00
Robin Gareus
2e5ba08286
Add signal to indicate any track rec-arm change 2021-01-30 02:38:54 +01:00
Robin Gareus
518f307e00
Share IO selector window for a given route
Previously it was possible to open the multiple IOSelectorWindows
from multiple locations: editor-mixer, mixer, track/bus inspector,
track header context menu, etc. for the same port.
2021-01-30 02:38:44 +01:00
Robin Gareus
3e7b2bb3f5
Separate IO connection button into dedicated class 2021-01-30 02:38:39 +01:00
Robin Gareus
33088c728a
Clean up AudioClock font API
see also previous commit 2abf9c66a4
2021-01-30 02:23:59 +01:00
Robin Gareus
2abf9c66a4
Fix size-request that rely on Pango::Layout
A Pango::Layout created by Gtk::Widget::get_pango_context ()
does not have any font set. The Font is inherited from the
layout's context.

The actual font is set when the layout is used in
on_expose_event() via get_window ()->create_cairo_context ().

In some cases we rely on the font-size to calculate the widget's
size before rendering. At this point in time there is no drawing
context from which to inherit the style.

Furthermore, even after a call to `ensure_style()` in the c'tor
of a Widget get_font() simply returns the default value.

All Widgets that rely an Pango::Layout font size during
size-requests have to explicitly set the font.

This fixes various overlarge buttons with the initial default layout.
2021-01-30 02:23:35 +01:00
Robin Gareus
d42b09f1d3
Remove cruft, there are no more diskstreams 2021-01-29 03:23:57 +01:00
Robin Gareus
dcb27a844a
Remove yet another unused variable 2021-01-29 02:58:33 +01:00
Robin Gareus
a985a3d184
Remove a variable that is never read 2021-01-29 02:58:33 +01:00
Robin Gareus
9b4d330285
Remove unused variable
`ignore_toggle` is never set to true.
2021-01-29 02:58:25 +01:00
John Emmas
42aef22e17 Add/remove source(s) in our MSVC project (gtkmm2ext) 2021-01-28 10:50:27 +00:00
Robin Gareus
42ac0f1d64
ArdourButton: Render text on pixel boundaries
This fixes some occasional blurry font display when text
was rendered to non-integer pixel positions.
2021-01-27 18:33:03 +01:00
Robin Gareus
6636bba6ae
Add missing file (amend 70ad205bc1) 2021-01-27 04:42:38 +01:00
Robin Gareus
e73d20c5a4
Close and save is possible without running engine
Since de99d7c528, Ardour sessions can be saved and
Ardour can be closed without a running engine.
2021-01-27 04:13:26 +01:00
Robin Gareus
d23798276a
Use CairoTheme API 2021-01-26 23:37:57 +01:00
Robin Gareus
70ad205bc1
Separate static widget theme into abstract class
This allow the style to be used in classed that are not
directly derived from Ardour's CairoWidget, notably
container widgets or plugin UIs.
2021-01-26 23:37:54 +01:00
Robin Gareus
046d7d01f5
Fix boost 1.74 + gcc 10.2 warnings
bind.hpp:36:1: note: ‘#pragma message: The practice of declaring the
Bind placeholders (_1, _2, ...) in the global namespace is deprecated.
Please use <boost/bind/bind.hpp> + using namespace boost::placeholders,
or define BOOST_BIND_GLOBAL_PLACEHOLDERS to retain the current behavior.
2021-01-26 01:54:37 +01:00
Robin Gareus
cf6e785ed3
Move Playlist GUI functions to RouteUI
This allows to re-use playlist editing in all RouteUI derivatives,
not just the main editor time axis header.

The change is mostly a NO-OP, simply moving methods from
RouteTimeAxisView (is-a RouteUI), to RouteUI.
2021-01-26 01:54:33 +01:00
Robin Gareus
e78de225d4
ArdourButton: LED-sized buttons w/o LED
This is useful for consistent layout in the recorder Window,
where Buttons are either push-buttons or LED toggle-buttons.
2021-01-25 19:18:56 +01:00
Robin Gareus
98847b115e
VST3: Allow multiple identical timer-handlers (#8550)
Also prefer `const_iterator`, following
```
iterator boost::unordered_map::erase(const_iterator position);
```
2021-01-25 02:27:46 +01:00
Robin Gareus
e568434300
Remove cruft from previous commit 2021-01-25 02:18:33 +01:00
Robin Gareus
35552abc4d
VST3: allow multiple fdes per plugin UI (#8550) 2021-01-25 02:14:26 +01:00
Robin Gareus
f0a89c4f1d
ALSA: allow to select clock-source when using multiple devices 2021-01-24 18:23:37 +01:00
Len Ovens
cd524f70dc OSC, strip and select share all main strip functions
Allow blocking strip commands for master or monitor
2021-01-23 21:18:32 -08:00
Len Ovens
a9f0f771c1 Reuse the same code for strip and select
Combine Maser and Monitor to reuse code

Started adding query functionality

	Added query functionality to all touchosc fixed commands
2021-01-23 21:17:46 -08:00
Robin Gareus
ed603ea8dd
Add Playlist::set_name() Lua binding & unique name check
Note: Previously only the GUI dialog to rename playlists
performed the test to check for unique playlist names.
2021-01-23 23:44:31 +01:00
Robin Gareus
e07e9eb2da
Fix typo in vst3-scanner --help text 2021-01-23 23:43:14 +01:00
Paul Davis
2e25148136 fix up previous commit, which contained API from nutempo2 branch 2021-01-22 10:50:16 -07:00
Robin Gareus
eed07770e1
Fix Faderport1 port-connection (amend bbb68514) 2021-01-22 18:46:17 +01:00