Commit Graph

15 Commits

Author SHA1 Message Date
Paul Davis b35518e212 switch from boost::{shared,weak}_ptr to std::{shared,weak}_ptr
This is mostly a simple lexical search+replace but the absence of operator< for
std::weak_ptr<T> leads to some complications, particularly with Evoral::Sequence
and ExportPortChannel.
2023-03-24 14:19:15 -06:00
Robin Gareus 9cbf3ae4ad
Who needs PIs for Plugin GUIs?
Use abstract base class for plugin UIs wherever possible
2022-04-14 16:35:03 +02:00
Robin Gareus 9f3fba6988
VST3: Prevent recursive endless resizing
Skip call to onSize() when the plugin's size already matches.

https://github.com/Ardour/ardour/pull/599
https://github.com/juce-framework/JUCE/pull/867
https://discourse.ardour.org/t/sonobus-vst3-gui-hogs-cpu-only-when-ran-inside-ardour-on-linux-but-not-windows/105573
2021-03-11 18:19:21 +01:00
Cameron c075d3a026
prevent registering multiple identical file descriptors
fix indentation

fix more indentation
2021-02-26 15:47:40 +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 bbc54873ae
VST3: GUI d'tor re-order
We have to call close_view(), which calls IPlugView::removed()
before destroying the parent widget.

Previously ~VST3PluginUI() was called after the derived class
destroyed the owned private `_gui_widget`, `_ns_view` or x11 parent.

On windows that may lead to the hwnd of the window becoming invalid
before the call to ::removed().
2020-12-14 19:29:53 +01:00
Robin Gareus 7e2bb01ff1
VST3: ignore GUI size allocations before realizing the view
This fixes crashes with some VST3s when calling `onSize()` before
attaching thew view (e.g. Reason Rack Plug on macOS).
2020-11-19 23:12:52 +01:00
Robin Gareus b7c9917467
VST3: Fix initial GUI display and window-size 2020-09-23 18:14:57 +02:00
Robin Gareus b8028f1239
VST3: fix initial display of custom plugin UI 2020-09-23 17:57:53 +02:00
Robin Gareus 2288279e57
No-OP: prefer constants from API header 2020-09-22 22:17:09 +02:00
Robin Gareus 48037dc545
Prevent concurrent use of VST3X11Runloop
In theory the GUI is single threaded and registration of
events happens only when a plugin GUI is constructed or
destroyed (which happens in the GUI thread).

Except it seems that if a plugin uses reference counting,
un-registration can happen later.
2020-09-21 21:18:50 +02:00
Robin Gareus 67b1481c12
VST3: work-around endless/recursive resize requests
Some plugins correct their own size when resized which can lead
to endlessly growing GUIs. In particular this issue exists
if Ardour's plugin-toolbar forces a plugin to grow in size to fill
the allocated space. While the plugin aims for fixed aspect-ratio.

This will need a proper solution involving VST's checkSizeConstraint,
however GTK+2 does not have an appropriate API...
2020-09-18 02:11:25 +02:00
Robin Gareus 1759ba96b6
VST3: Plugin GUI support 2020-09-17 00:10:21 +02:00