Robbert van der Helm
91a47a466c
Create a universal wrapper around tvalue
2020-12-11 23:34:23 +01:00
Robbert van der Helm
699ddfd2ea
Implement YaComponentPluginImpl destructor
...
When the object gets dropped through the reference counting system, the
object should also be dropped in the Wine plugin host.
2020-12-11 22:59:32 +01:00
Robbert van der Helm
cdb9dae2df
Rename YaComponent::Arguments to CreateArgs
2020-12-11 22:43:12 +01:00
Robbert van der Helm
d1d85711f0
Split up the VST3 class implementations
2020-12-11 22:37:20 +01:00
Robbert van der Helm
9439a62d94
Fix formatting
2020-12-11 16:56:46 +01:00
Robbert van der Helm
9554bbc12d
Merge branch 'master' into feature/vst3
2020-12-11 16:25:53 +01:00
Robbert van der Helm
d0b9f1a602
Bump to version 2.2.0
2.2.0
2020-12-11 14:00:16 +01:00
Robbert van der Helm
c4f178aa13
Reword changelog
2020-12-11 13:59:27 +01:00
Robbert van der Helm
ced3608e91
Update the tested REAPER version
2020-12-11 13:21:29 +01:00
Robbert van der Helm
3e13eb9e46
Merge branch 'master' into feature/vst3
2020-12-11 13:02:49 +01:00
Robbert van der Helm
29f1754527
Link to the issue instead of listing issue number
2020-12-11 13:01:45 +01:00
Robbert van der Helm
c306048988
Fix hanging processes for good #69
2020-12-11 12:40:50 +01:00
Robbert van der Helm
41b79720ca
Merge branch 'master' into feature/vst3
2020-12-11 00:50:43 +01:00
Robbert van der Helm
aae98d518c
Fix the with-winedbg option
2020-12-11 00:35:29 +01:00
Robbert van der Helm
2615da51da
Fix the socket waiting fix #69
...
e07467697a changed the waiting behaviour,
but this meant that there was a very slight window where all secondary
requests would fail when both sides have called connect(), but the other
side has not already called `receive_{events,multi,messages}` to start
listening on the socket.
2020-12-11 00:33:28 +01:00
Robbert van der Helm
ac0d83e555
Fix concurrency issue in plugin group shutdown
2020-12-10 21:41:04 +01:00
Robbert van der Helm
c05040d98b
Link with -mconsole instead of -mwindows
...
Not sure why it even worked with -mwindows, but this is the correct
linking option for the `main()` entry point.
2020-12-10 18:01:11 +01:00
Robbert van der Helm
e3a52bca14
Revert "Get rid of all traces of pthreads in Wine"
...
This reverts commit e9af76d21e .
Without this the event loop will just not run, not sure why. This needs
some more investigation.
2020-12-10 17:38:09 +01:00
Robbert van der Helm
e9af76d21e
Get rid of all traces of pthreads in Wine
...
Since this can only cause issues.
2020-12-10 15:44:37 +01:00
Robbert van der Helm
5c98b74bc2
Remove now unused variable
2020-12-10 15:07:16 +01:00
Robbert van der Helm
5f7c105b6d
Use boost::asio::transfer_exactly
...
Instead of doing assertions.
2020-12-10 15:03:26 +01:00
Robbert van der Helm
e07467697a
Only wait for sockets during initialization #69
2020-12-10 12:03:51 +01:00
Robbert van der Helm
4a056dcd31
Get rid of the VST3 logging boilerplate
2020-12-09 22:11:39 +01:00
Robbert van der Helm
225056bcff
Allow instantiating IComponents
2020-12-08 23:08:07 +01:00
Robbert van der Helm
75ed978a1b
Fix pointer dereference after move
2020-12-08 23:08:07 +01:00
Robbert van der Helm
9b025052d2
Add stubs for an IComponent implementation
2020-12-08 23:02:26 +01:00
Robbert van der Helm
92ea15bcb4
Allow interface implementations to send messages
2020-12-08 23:01:50 +01:00
Robbert van der Helm
2e6184171c
Use std::array for serializing UIDs
...
These are easily assignable and we have to convert between char
pointers, char arrays and UID objects all the time anyways.
2020-12-08 23:00:44 +01:00
Robbert van der Helm
7828fc7bef
Update the VST3 interface instantiation docs
2020-12-08 18:22:44 +01:00
Robbert van der Helm
e099255b92
Generate a unique ID and store the new component
2020-12-08 17:59:59 +01:00
Robbert van der Helm
5eb1fe2de2
Redesign how interface instantiation works
...
Transferring some argument pack is much easier than trying to
deserialize into an existing object when you also have to transfer more
information than just that object.
2020-12-08 17:33:51 +01:00
Robbert van der Helm
f4a5aa91fb
Document the plugin factory approach
2020-12-08 14:21:54 +01:00
Robbert van der Helm
ed743e6f22
Bundle associated messages with their interfaces
...
Once we start implementing all of the control messages/callbacks things
could quickly get out of hand otherwise.
2020-12-08 11:25:58 +01:00
Robbert van der Helm
5e85517130
Add the base for an IComponent implementation
2020-12-07 23:52:17 +01:00
Robbert van der Helm
e5cd777713
Fix the templated visitor in Vst3MessageHandler
...
Now it works as expected, since auto can't be initialized to multiple
different values.
2020-12-07 23:49:25 +01:00
Robbert van der Helm
d59a96b379
Move VST3 serializers to the structs
2020-12-07 22:33:41 +01:00
Robbert van der Helm
f1fe0fa8a4
Log a warning when encountering unknown interfaces
2020-12-07 22:21:01 +01:00
Robbert van der Helm
7b3a6af7d1
Use raw pointers for the plugin factory
...
Since the object cleans up after itself after the smart pointers are
dropped on the host side this would result in a use after free by the
smart pointers.
2020-12-07 18:28:17 +01:00
Robbert van der Helm
d79bc3b936
Don't use STL smart pointers with VST3 interfaces
...
This would cause double frees since those objects are supposed to clean
up after themselves.
2020-12-07 18:28:17 +01:00
Robbert van der Helm
75e8cf9140
Add notes on things that can potentially go wrong
2020-12-07 18:28:17 +01:00
Robbert van der Helm
8e09d50a54
Describe how createInstance() is going to work
2020-12-07 18:28:17 +01:00
Robbert van der Helm
d485aa296a
Fix VST2-only builds
2020-12-07 18:28:17 +01:00
Robbert van der Helm
9954282065
Add manual reference counting to GetPluginFactory
...
Since even though we're passign raw pointers, it's expected that they
are actually `IPtr<T>`s.
2020-12-07 18:28:17 +01:00
Robbert van der Helm
547b11e8ba
Remove interface filtering from the plugin factory
...
This doesn't work that way, and CIDs really are class IDs (good thing
that everything's documented, oh right).
2020-12-07 18:28:17 +01:00
Robbert van der Helm
e20fc8c7e6
Fix Vst{2,3}Logger::log_trace
2020-12-07 18:28:17 +01:00
Robbert van der Helm
8ea40cd9f9
Rework Vst3MessageHandler::receive_messages
...
This now takes a regular overloaded function and the visiting is done in
`receive_messages()` itself. This way we can use templates to ensure
that the return type is correct. Otherwise auto will cause issues in the
future when we want to return multiple concrete types from a function
that takes a single variant. The alternative would be both receiving a
variant as a parameter and then returning another variant as a result,
but that is much less type safe.
2020-12-07 18:28:16 +01:00
Robbert van der Helm
7fb8cf97b1
Request factory after setting up callback handlers
...
Otherwise we'll get a deadlock.
2020-12-07 18:28:16 +01:00
Robbert van der Helm
c2503f8aaa
Send the factory from the Wine host to the plugin
2020-12-07 18:28:16 +01:00
Robbert van der Helm
79c6f02d91
Request and deserialize plugin factory from plugin
2020-12-07 18:28:16 +01:00
Robbert van der Helm
887a856e58
Rename Vst3MessageHandler::send_message overload
...
`receive_into()` looks much clearer in typical usage.
2020-12-07 18:28:16 +01:00