mirror of
https://github.com/robbert-vdh/yabridge.git
synced 2026-05-09 20:29:10 +02:00
Destroy IPlugFrame proxy together with IPlugView
Not that we have implemented `IPlugView::setFrame()` yet, but that should be trivial at this point.
This commit is contained in:
@@ -22,6 +22,7 @@
|
|||||||
|
|
||||||
#include "vst3-impls/component-handler-proxy.h"
|
#include "vst3-impls/component-handler-proxy.h"
|
||||||
#include "vst3-impls/host-context-proxy.h"
|
#include "vst3-impls/host-context-proxy.h"
|
||||||
|
#include "vst3-impls/plug-frame-proxy.h"
|
||||||
|
|
||||||
InstanceInterfaces::InstanceInterfaces() {}
|
InstanceInterfaces::InstanceInterfaces() {}
|
||||||
|
|
||||||
@@ -70,9 +71,13 @@ void Vst3Bridge::run() {
|
|||||||
main_context
|
main_context
|
||||||
.run_in_context([&]() {
|
.run_in_context([&]() {
|
||||||
// When the pointer gets dropped by the host, we want to
|
// When the pointer gets dropped by the host, we want to
|
||||||
// drop it here as well
|
// drop it here as well, along with the `IPlugFrame`
|
||||||
|
// proxy object it may have received in
|
||||||
|
// `IPlugView::setFrame()`.
|
||||||
object_instances[request.owner_instance_id]
|
object_instances[request.owner_instance_id]
|
||||||
.plug_view.reset();
|
.plug_view.reset();
|
||||||
|
object_instances[request.owner_instance_id]
|
||||||
|
.plug_frame_proxy.reset();
|
||||||
})
|
})
|
||||||
.wait();
|
.wait();
|
||||||
|
|
||||||
|
|||||||
@@ -53,6 +53,16 @@ struct InstanceInterfaces {
|
|||||||
*/
|
*/
|
||||||
Steinberg::IPtr<Vst3HostContextProxy> host_context_proxy;
|
Steinberg::IPtr<Vst3HostContextProxy> host_context_proxy;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If the host passes an `IPlugFrame` object during `IPlugView::setFrame()`,
|
||||||
|
* then we'll store a proxy object here and then pass it to
|
||||||
|
* `plug_view->setFrame()`. Will be initialized with a null pointer until
|
||||||
|
* used. When we destroy `plug_view` while handling
|
||||||
|
* `Vst3PlugViewProxy::Destruct`, we'll also destroy (our pointer of) this
|
||||||
|
* proxy object.
|
||||||
|
*/
|
||||||
|
Steinberg::IPtr<Vst3PlugFrameProxy> plug_frame_proxy;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* After a call to `IEditController::setComponentHandler()`, we'll create a
|
* After a call to `IEditController::setComponentHandler()`, we'll create a
|
||||||
* proxy of that component handler just like we did for the plugin object.
|
* proxy of that component handler just like we did for the plugin object.
|
||||||
|
|||||||
Reference in New Issue
Block a user