Commit Graph

50 Commits

Author SHA1 Message Date
Robin Gareus 3355e753bf
Keep track of LV2 externalUI visibility
This allows Ardour to re-open previously shown plugins,
and toggle externalUI.

This worked in the distant past, before Ardour 3.3 introduced
the Ardour Window Manager.
2023-11-26 20:07:00 +01:00
Robin Gareus 0b48d421d5
Add LV2 header include compatibility (1/2) 2023-05-06 16:20:01 +02:00
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 1b261fab48
Remove unused LV2 ifdef 2/3
LV2 has been mandatory since 6.0 (04ccd328dc)
2020-09-15 17:35:04 +02:00
David Robillard 45026100aa LV2: Implement ui:requestValue feature 2020-03-17 16:55:35 +01:00
Robin Gareus 2ac90f5598
LV2: disable unofficial LV2UI_Request_Parameter
This API is not official, and the upcoming official API differs.
The source-code is left in-place since most of it will be
re-usable as-is, regardless.
2020-02-15 14:15:29 +01:00
Robin Gareus 0771717dd5
Remove unused variable 2020-01-09 18:21:48 +01:00
Robin Gareus 4050ca5633
Update GPL boilerplate and (C)
Copyright-holder and year information is extracted from git log.

git history begins in 2005. So (C) from 1998..2005 is lost. Also some
(C) assignment of commits where the committer didn't use --author.
2019-08-03 15:53:15 +02:00
Robin Gareus e297951b30 Extend LV2UI-Request-Parameter File/Path GUI
This is a bit of a playground implementation, the various `#if 0`
code-blocks should be removed.
2018-11-22 15:02:35 +01:00
Robin Gareus 07beca2852 Early prototype for _LV2UI_Request_Parameter extension 2018-11-21 02:27:18 +01:00
Robin Gareus b976bf8986 NO-OP whitespace & foratting of header files 2017-07-01 21:19:56 +02:00
Robin Gareus 5dd5bf0f70 notify LV2 GUIs about port-changes when loading presets 2015-10-28 04:06:14 +01:00
Paul Davis 0880a166c4 variable name change: make purpose of formerly named "_values" in LV2 plugin UI code more clear
And if this is wrong, then rename it again with the right one
2015-10-21 08:10:25 -04:00
Paul Davis ac008dac02 Clean up generic and LV2 plugin GUI to deal with ParameterChanged(Externally) alteration 2015-10-20 10:23:49 -04:00
Paul Davis 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
Paul Davis 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
Robin Gareus a0eeb80885 fix embedded plugin UI keyboard handling
When the GUI is opened the first time all is fine, focus is on the
embedded widget. However once a user presses one of the preset buttons
(Add, Save,...) there is no possibility to return focus to the
embedded widget. Ardour always 'sees' it as focus=GtkButton and passes
the event to the editor.
2015-02-21 03:16:04 +01:00
Robin Gareus 03c26762e6 update external plugin UI handling
amend to 4cdb018 and 1d972d0

override ui_closed() behavior for lv2ui:external
Keep UI around and do not re-instantiate, but simply show it again.
(this is against the original specs but was agreed upon by various
authors and the previous behavior or Ardour.)

kx:external-ui are cleaned up after ui_closed().
2013-08-29 13:05:11 +02:00
Robin Gareus 1d972d05c5 add LV2 support for kx:external-ui#
the ABI of http://kxstudio.sf.net/ns/lv2ext/external-ui# is identical to
http://lv2plug.in/ns/extensions/ui#external
It just adds a distinction between #Host and #Widget for cosmetic reasons.
Sadly some newer plugins are released with only support for kxstudio URI :(
2013-08-25 16:21:18 +02:00
Robin Gareus 3ca63cc38c fix gtk "child->parent == NULL" asserts 2013-08-03 13:45:27 +02:00
Robin Gareus 4e3aee3548 LV2: Send messages from one UI to all replicated instances.
Addresses issue mentioned in previous commit.

git-svn-id: svn://localhost/ardour2/branches/3.0@13149 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-08-28 15:42:42 +00:00
David Robillard 7b7140f5ed Create and realize LV2 UI container before instantiating (required for proper embedding in some situations).
git-svn-id: svn://localhost/ardour2/branches/3.0@13140 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-08-21 19:29:19 +00:00
David Robillard d99311d21b Implement ui:portIndex and ui:touch features.
Touch should allow custom plugin UIs to work properly with automation as the
generic UI does.  IIRC this was requested for mixbus, however, no current
plugin UI I am aware of implements it, so it is completely untested.


git-svn-id: svn://localhost/ardour2/branches/3.0@11888 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-04-11 04:53:47 +00:00
David Robillard 1716dc0ce6 Update to latest LV2 atom extension.
Implement proper support for fixed size LV2 plugin UIs.


git-svn-id: svn://localhost/ardour2/branches/3.0@11757 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-03-25 17:17:40 +00:00
Carl Hetherington 0e5abb0e4b Make lv2ui_instantiate and lv2ui_free a little more symmetrical, so that there aren't GTK errors on reopening a LV2 plugin UI because of trying to repack already packed widgets (#4733).
git-svn-id: svn://localhost/ardour2/branches/3.0@11589 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-03-04 21:45:51 +00:00
David Robillard 1e6694f41a Use FastScreenUpdate for UI message updating, and only if plugin has message output ports.
git-svn-id: svn://localhost/ardour2/branches/3.0@11521 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-02-25 20:43:14 +00:00
David Robillard c65b95f6d3 Tidy.
git-svn-id: svn://localhost/ardour2/branches/3.0@11520 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-02-25 09:19:03 +00:00
David Robillard 4d7810dee8 Full round-trip message communication between LV2 UIs and plugins.
Still a little bit rough around the edges, but it works.  This can be tested
with the eg-sampler plugin from LV2 svn (whose UI can load different samples).


git-svn-id: svn://localhost/ardour2/branches/3.0@11519 d708f5d6-7413-0410-9779-e7cbd77b26cf
2012-02-25 08:43:23 +00:00
David Robillard ed626628b5 Delete trailing whitespace
git-svn-id: svn://localhost/ardour2/branches/3.0@9656 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-06-01 17:00:29 +00:00
David Robillard d367b210f4 Create and destroy (non-external) LV2 plugin UIs as window is shown/hidden.
Fixes ticket #4067 (not to mention avoids having every UI that has ever been shown loaded in memory until exit time...)


git-svn-id: svn://localhost/ardour2/branches/3.0@9638 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-05-31 02:00:16 +00:00
David Robillard 4e49c56361 Completely localist use of SLV2 to lv2_plugin.cc and lv2_plugin_ui.cc.
git-svn-id: svn://localhost/ardour2/branches/3.0@9514 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-05-14 21:05:26 +00:00
David Robillard 06e8b6452d Fix external UIs (e.g. Calf git).
git-svn-id: svn://localhost/ardour2/branches/3.0@9442 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-04-28 15:36:51 +00:00
David Robillard e54a8f8437 Update for new Suil API.
git-svn-id: svn://localhost/ardour2/branches/3.0@9437 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-04-28 01:52:51 +00:00
David Robillard c37722f7dc Use new Suil and SLV2 APIs for LV2 plugin UIs.
Add lv2_ui.h (required by lv2_external_ui.h).


git-svn-id: svn://localhost/ardour2/branches/3.0@9406 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-04-22 08:08:37 +00:00
David Robillard b1697a75ac Fix LV2 UI related memory errors with new SLV2.
git-svn-id: svn://localhost/ardour2/branches/3.0@9150 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-03-14 21:02:51 +00:00
David Robillard ca9a816d30 Update for new SLV2 UI API.
git-svn-id: svn://localhost/ardour2/branches/3.0@9108 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-03-08 20:14:45 +00:00
Carl Hetherington fb2ef7cb9a Call PluginControl when a LV2 GUI control changes, rather than calling the plugin directly. Fixes problems with ganged mono plugins on multi-channel tracks.
git-svn-id: svn://localhost/ardour2/branches/3.0@9076 d708f5d6-7413-0410-9779-e7cbd77b26cf
2011-03-04 23:14:16 +00:00
Carl Hetherington 5f4bdb233a Clean up plugin preset handling a bit.
git-svn-id: svn://localhost/ardour2/branches/3.0@8301 d708f5d6-7413-0410-9779-e7cbd77b26cf
2010-12-19 23:11:01 +00:00
Paul Davis da8eec7a83 remove Glib::ustring from gtk2_ardour
git-svn-id: svn://localhost/ardour2/branches/3.0@7774 d708f5d6-7413-0410-9779-e7cbd77b26cf
2010-09-14 16:51:02 +00:00
Paul Davis aae367b63c use new syntax for connecting to backend signals that enforces explicit connection scope, plus a few other related matters
git-svn-id: svn://localhost/ardour2/branches/3.0@6376 d708f5d6-7413-0410-9779-e7cbd77b26cf
2009-12-19 20:26:31 +00:00
David Robillard e5258d4ed1 Fix angle bracket project-local include paths.
git-svn-id: svn://localhost/ardour2/branches/3.0@5975 d708f5d6-7413-0410-9779-e7cbd77b26cf
2009-10-30 00:21:40 +00:00
David Robillard bb9cc45cd2 Strip trailing whitespace and fix other whitespace errors (e.g. space/tab mixing). Whitespace changes only.
Vimmers, try let c_space_errors = 1 in your .vimrc to highlight this kind of stuff in red.  I don't know the emacs equivalent...


git-svn-id: svn://localhost/ardour2/branches/3.0@5773 d708f5d6-7413-0410-9779-e7cbd77b26cf
2009-10-14 16:10:01 +00:00
Paul Davis 37779a45c9 LV2 external UI patch from nedko via 2.X and a couple of .rej's
git-svn-id: svn://localhost/ardour2/branches/3.0@5702 d708f5d6-7413-0410-9779-e7cbd77b26cf
2009-10-01 16:28:02 +00:00
Paul Davis 88beef2e93 merge pre- and post-fader processor boxes; start removing Placement (not finished) ; add -DWAF_BUILD and use per-directory foobar-config.h to correctly pick up configure-time settings like HAVE_OGG ; check for libgiomm (part of upgrade to newer gtk stack); 32 bit marker reload fix from 2.X; audiounit IO config cache fix from 2.X; multi-add route template fix from 2.X; plugin GUI delete fix from 2.X; solo button labels are A or P for listen mode
git-svn-id: svn://localhost/ardour2/branches/3.0@5344 d708f5d6-7413-0410-9779-e7cbd77b26cf
2009-07-13 00:26:28 +00:00
David Robillard 8491953e20 Fix LV2 compilation.
git-svn-id: svn://localhost/ardour2/branches/3.0@5030 d708f5d6-7413-0410-9779-e7cbd77b26cf
2009-05-03 19:53:09 +00:00
David Robillard e0aaed6d65 *** NEW CODING POLICY ***
All #include statements that include a header that is a part of a library
bundled with ardour MUST use quotes, not angle brackets.

Do this:

#include "ardour/types.h"

NOT this:

#include <ardour/types.h>

Rationale:

This is best practice in general, to ensure we include the local version
and not the system version.  That quotes mean "local" (in some sense)
and angle brackets mean "system" (in some sense) is a ubiquitous
convention and IIRC right in the C spec somewhere.

More pragmatically, this is required by (my) waf (stuff) for dependencies
to work correctly.  That is:

!!! FAILURE TO DO THIS CAN RESULT IN BROKEN BUILDS !!!

Failure to comply is punishable by death by torture. :)

P.S. It's not that dramatic in all cases, but this (in combination with some
GCC flags specific to the include type) is the best way I have found to be
absolutely 100% positive the local ones are being used (and we definitely
want to be absolutely 100% positive on that one).


git-svn-id: svn://localhost/ardour2/branches/3.0@4655 d708f5d6-7413-0410-9779-e7cbd77b26cf
2009-02-25 18:26:51 +00:00
David Robillard ad9913538e Apply LV2 GUI parameter update patch from kfoltman.
git-svn-id: svn://localhost/ardour2/branches/3.0@4407 d708f5d6-7413-0410-9779-e7cbd77b26cf
2009-01-14 15:47:58 +00:00
David Robillard 7f66b71539 Apply LV2 changes from 2.0.
Completely and utterly untested.


git-svn-id: svn://localhost/ardour2/branches/3.0@4178 d708f5d6-7413-0410-9779-e7cbd77b26cf
2008-11-14 22:14:15 +00:00
Paul Davis c86210a9d5 merge 2.0-ongoing into 3.0 @ 3581 - 3710
git-svn-id: svn://localhost/ardour2/branches/3.0@3712 d708f5d6-7413-0410-9779-e7cbd77b26cf
2008-09-10 21:27:39 +00:00