Commit Graph

464 Commits

Author SHA1 Message Date
Robbert van der Helm 2f5d22ca17 Handle effMainsChanged on the main UI thread #75
This fixes EZdrummer not producing any sound, as the plugin presumably
schedules some task on the Win32 message loop to load its resources,
which won't happen if this is run from any other thread.
2021-01-05 23:04:18 +01:00
Robbert van der Helm 0e3b5af94e Fully implement IAudioPresentationLatency
Now we support all VST 3.1.0 interfaces.
2021-01-04 22:33:44 +01:00
Robbert van der Helm 9983f81875 Fully implement IComponentHandler2 2021-01-04 21:56:14 +01:00
Robbert van der Helm a997a7cd20 Add stubs for IComponentHandler2 2021-01-04 21:36:25 +01:00
Robbert van der Helm 5311c9ca6e Add logging for IHostApplication::createInstance 2021-01-04 16:50:19 +01:00
Robbert van der Helm 74c5728100 Get rid of old todos 2021-01-04 16:48:15 +01:00
Robbert van der Helm 4ec8b01bcc Completely run effEditIdle from a timer
Although it hasn't shown up, this will get rid of the possibility of
off-thread effEditIdle calls causing issues. And since we need some way
to run call this function while the event loop is running anyways, doing
it entirely from a timer similar to how hosts on Windows would do it
seems like the best solution.
2021-01-04 15:50:17 +01:00
Robbert van der Helm c554b9b4ab Use SW_MINIMIZE instead of SW_HIDE
Before deferring closing the editor. This still gets rid of that issue
in Wine's X11drv that would result in a double destroy, and it also gets
rid of a delay that would still occur in Carla.
2021-01-04 13:54:01 +01:00
Robbert van der Helm 8924124abb Fully implement IParameterFinder
With this we're at VST 3.0.2 support.
2021-01-03 23:46:13 +01:00
Robbert van der Helm 52d4fe2f08 Add a wrapper struct around IPlugView for casts 2021-01-03 23:43:51 +01:00
Robbert van der Helm 71eadff1ed Fix rare X11 error on editor closing
With the new deferred closing behaviour, closing the editor of Vital's
VST2 version would trigger an X11 error in Wine's X11drv. This doesn't
seem to happen with other plugins (or the VST3 version of Vital) and the
fact that this workaround even works is strange to say the least, but at
least it does work.
2021-01-03 16:49:23 +01:00
Robbert van der Helm fb6e5ab33f Fully implement IMidiMapping 2021-01-02 23:54:01 +01:00
Robbert van der Helm 176e7fd1ae Add a comment on why we don't set a background 2021-01-02 19:42:37 +01:00
Robbert van der Helm 4a7b560972 Revert "Add a background brush to the window"
While this does get rid of artifacts, it can also add a brief moment
where the gray background becomes visible when the window reconfigures
which can look jarring.

This reverts commit 35c7138333.
2021-01-02 19:32:28 +01:00
Robbert van der Helm a8a0e325fe Fully implement INoteExpressionCOntroller 2021-01-02 18:40:34 +01:00
Robbert van der Helm 8a4de7da53 Add stubs for INoteExpressionController 2021-01-02 15:27:55 +01:00
Robbert van der Helm 34f8d3b1d2 Update the copyright notices for 2021 2021-01-01 18:54:02 +01:00
Robbert van der Helm 5f8926f8ae Defer Win32 window closing
This gets rid of all potential delays when closing windows.
2020-12-31 14:18:26 +01:00
Robbert van der Helm fa0753f520 Use atomic fetch-and-add for unique window classes 2020-12-31 14:12:14 +01:00
Robbert van der Helm c3c0f96585 Get rid of CS_HREDRAW and CS_VREDRAW
This causes the window to black out to fully redraw even when the
plugin's editor window can just draw over the new parts.
2020-12-31 13:31:44 +01:00
Robbert van der Helm 9d24d422d1 Log successful FUnknown::queryInterface calls 2020-12-31 13:13:39 +01:00
Robbert van der Helm 651ebd4db3 Update the ViewRect in checkSizeConstraint() 2020-12-30 14:35:18 +01:00
Robbert van der Helm 3553b080fe Implement IUnitData
With this all VST 3.0.0 interfaces are finally supported.
2020-12-29 22:00:22 +01:00
Robbert van der Helm 96fe8b16a5 Add more explicit moves in VST3 message handling
The compiler might be smart enough to do this for us, but doing it
manually doesn't hurt.
2020-12-29 18:54:57 +01:00
Robbert van der Helm 38211d0fb3 Implement IProgramListData on the Wine side 2020-12-29 18:50:17 +01:00
Robbert van der Helm 4226ab6e43 Pass pointers to IMessage objects around
Instead of serializing the actual `YaMessage`, for the reasons mentioned
in the comments. This was needed to stop iZotope VocalSynth 2 in Ardour
from segfaulting when editing parameters, because that plugin is
apparently being very naughty.
2020-12-29 00:22:42 +01:00
Robbert van der Helm 2c3312b452 Merge branch 'master' into feature/vst3 2020-12-28 11:51:28 +01:00
Robbert van der Helm ae71536639 Add back __cdecl on older Wine versions 2020-12-28 11:50:08 +01:00
Robbert van der Helm dd74e54854 Add FIXME for a crazy design issue in VocalSynth 2
They're exchanging pointers between the processor and the controller
using messages. And not only that, they're storing the message objects
instead of storing the pointers.
2020-12-28 00:38:35 +01:00
Robbert van der Helm 9cacf03765 Add missing lambda return type annotations 2020-12-27 23:34:40 +01:00
Robbert van der Helm 2823a74783 Implement all IUnitInfo functions
With this IUnitInfo has been fully implemented.
2020-12-27 18:07:32 +01:00
Robbert van der Helm 70c5792593 Implement IUnitInfo::getSelectedUnit 2020-12-27 16:48:47 +01:00
Robbert van der Helm fbef37b924 Disable blitting on window position changes
This slightly reduces flickering because redraws are now a bit faster.
2020-12-27 15:08:39 +01:00
Robbert van der Helm 35c7138333 Add a background brush to the window
So the background always gets cleared out when the window resizes.
2020-12-27 14:37:43 +01:00
Robbert van der Helm d34b399ba0 Implement IUnitInfo::getProgramPitchName 2020-12-26 23:20:13 +01:00
Robbert van der Helm e414c58a7a Implement IUnitInfo::hasProgramPitchNames 2020-12-26 23:04:02 +01:00
Robbert van der Helm f96e6b5a1e Implement IUnitInfo::getProgramInfo 2020-12-26 23:00:15 +01:00
Robbert van der Helm 204765ec0c Implement IUnitInfo::getProgramName 2020-12-26 22:38:15 +01:00
Robbert van der Helm 60f6b30b84 Implement IUnitInfo::getProgramListInfo 2020-12-26 22:17:21 +01:00
Robbert van der Helm 92a7cb755a Implement IUnitInfo::getProgramListCount 2020-12-26 22:10:46 +01:00
Robbert van der Helm 5e832a2689 Implement IUnitInfo::getUnitInfo 2020-12-26 22:03:26 +01:00
Robbert van der Helm f3e706a39a Implement IUnitInfo::getUnitCount 2020-12-26 21:33:19 +01:00
Robbert van der Helm bce3afa5e4 Revert "Mostly fix editor GUIs drifting in negative coords"
I've also tried a lot of other things, but none of the solutions I've
tried work 100% of the time. It sounds like a better idea to have
something that doesn't work consistently than to have something that
inconsistently sort of works. Setting the size in `WM_WINDOWPOSCHANGING`
to (0, 0) fixes the drifting, but the mouse coordinates are still wrong
and `SetWindowPos()` breaks the reparenting.

This reverts commit db2cc5800a.
2020-12-26 18:13:40 +01:00
Robbert van der Helm db2cc5800a Mostly fix editor GUIs drifting in negative coords
I think some rounding in Wine is causing this issue, but then again
we're not supposed to send these ConfigureNotify events to the window
directly anyways.
2020-12-26 16:30:25 +01:00
Robbert van der Helm 47177ed889 Implement IUnitHandler::notifyProgramListChange
With this IUnitHandler has been fully implemented.
2020-12-26 14:30:28 +01:00
Robbert van der Helm bf40e10780 Implement IUnitHandler::notifyUnitSelection 2020-12-26 14:26:29 +01:00
Robbert van der Helm 934aea3860 Add IUnitHandler stubs to component handler proxy 2020-12-26 14:17:10 +01:00
Robbert van der Helm 57e23ee392 Rewrite X11 event mask
A literal like this is much more understandable.
2020-12-26 01:42:55 +01:00
Robbert van der Helm 86aaf2fa3a Implement IEditController2::openAboutBox
With this IEditController2 has been fully implemented.
2020-12-26 00:10:39 +01:00
Robbert van der Helm 3c5700163e Implement IEditController2::openHelp 2020-12-26 00:06:32 +01:00