Commit graph

31245 commits

Author SHA1 Message Date
John Emmas
15f12bd3a9 A few minor changes to keep VS2019 happy 2021-02-09 10:52:37 +00:00
Robin Gareus
01bb38d99e
Add option to en/disable showing automation-lane on touch 2021-02-09 02:11:09 +01:00
Robin Gareus
bd8c26a059
Automatically show automation-lane when touching a control 2021-02-09 02:11:09 +01:00
Robin Gareus
7e74f9eb1e
Keep track of recently touched Controllable 2021-02-09 02:11:04 +01:00
Todd Naugle
b3f019b8b7 Use the program icon for the uninstaller on windows.
Otherwise the default nsis one is used.
2021-02-08 10:36:21 -06:00
Robin Gareus
e204095b71
Fix mixer initial group-tab display 2021-02-07 12:06:26 +01:00
Robin Gareus
2bf9014ba1
Fix crash when detaching Editor or Mixer w/o session
Mixer_UI::show_window(), Editor::use_own_window() use
`show_all()` and the fixup items that should be invisible.
This involves a call to `parameter_changed ("show-group-tabs");`
2021-02-07 00:09:20 +01:00
Paul Davis
b916a14e26 GUI toggle roll method does not set default speed
This allows the user to leave varispeed setting in place
2021-02-05 22:24:02 -07:00
Paul Davis
c2aad41e46 libardour: default speed requires transport *and* engine speed
Retain engine speed across stop/start/locate, so that it is
possible to run a loop at non-unity speed. User must
explicitly reset to 1.0 if default speeds are set to !1.0
2021-02-05 22:24:02 -07:00
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