Implement IEditController::getParameterCount()

This commit is contained in:
Robbert van der Helm
2020-12-17 21:54:27 +01:00
parent 7eb7e87953
commit 4cc24f74d1
6 changed files with 34 additions and 3 deletions
+9
View File
@@ -274,6 +274,15 @@ void Vst3Logger::log_request(
}); });
} }
void Vst3Logger::log_request(
bool is_host_vst,
const YaEditController2::GetParameterCount& request) {
log_request_base(is_host_vst, [&](auto& message) {
message << "<IEditController* #" << request.instance_id
<< ">::getParameterCount()";
});
}
void Vst3Logger::log_request(bool is_host_vst, void Vst3Logger::log_request(bool is_host_vst,
const YaPluginBase::Initialize& request) { const YaPluginBase::Initialize& request) {
log_request_base(is_host_vst, [&](auto& message) { log_request_base(is_host_vst, [&](auto& message) {
+2
View File
@@ -81,6 +81,8 @@ class Vst3Logger {
void log_request(bool is_host_vst, const YaComponent::SetActive&); void log_request(bool is_host_vst, const YaComponent::SetActive&);
void log_request(bool is_host_vst, void log_request(bool is_host_vst,
const YaEditController2::SetComponentState&); const YaEditController2::SetComponentState&);
void log_request(bool is_host_vst,
const YaEditController2::GetParameterCount&);
void log_request(bool is_host_vst, const YaPluginBase::Initialize&); void log_request(bool is_host_vst, const YaPluginBase::Initialize&);
void log_request(bool is_host_vst, const YaPluginBase::Terminate&); void log_request(bool is_host_vst, const YaPluginBase::Terminate&);
void log_request(bool is_host_vst, const YaPluginFactory::Construct&); void log_request(bool is_host_vst, const YaPluginFactory::Construct&);
+1
View File
@@ -76,6 +76,7 @@ using ControlRequest = std::variant<Vst3PluginProxy::Construct,
YaComponent::ActivateBus, YaComponent::ActivateBus,
YaComponent::SetActive, YaComponent::SetActive,
YaEditController2::SetComponentState, YaEditController2::SetComponentState,
YaEditController2::GetParameterCount,
YaPluginBase::Initialize, YaPluginBase::Initialize,
YaPluginBase::Terminate, YaPluginBase::Terminate,
YaPluginFactory::Construct, YaPluginFactory::Construct,
@@ -108,6 +108,21 @@ class YaEditController2 : public Steinberg::Vst::IEditController,
virtual tresult PLUGIN_API virtual tresult PLUGIN_API
getState(Steinberg::IBStream* state) override = 0; getState(Steinberg::IBStream* state) override = 0;
/**
* Message to pass through a call to `IEditController::getParameterCount()`
* to the Wine plugin host.
*/
struct GetParameterCount {
using Response = PrimitiveWrapper<int32>;
native_size_t instance_id;
template <typename S>
void serialize(S& s) {
s.value8b(instance_id);
}
};
virtual int32 PLUGIN_API getParameterCount() override = 0; virtual int32 PLUGIN_API getParameterCount() override = 0;
virtual tresult PLUGIN_API virtual tresult PLUGIN_API
getParameterInfo(int32 paramIndex, getParameterInfo(int32 paramIndex,
@@ -195,9 +195,8 @@ Vst3PluginProxyImpl::setComponentState(Steinberg::IBStream* state) {
} }
int32 PLUGIN_API Vst3PluginProxyImpl::getParameterCount() { int32 PLUGIN_API Vst3PluginProxyImpl::getParameterCount() {
// TODO: Implement return bridge.send_message(YaEditController2::GetParameterCount{
bridge.logger.log("TODO IEditController::getParameterCount()"); .instance_id = arguments.instance_id});
return Steinberg::kNotImplemented;
} }
tresult PLUGIN_API Vst3PluginProxyImpl::getParameterInfo( tresult PLUGIN_API Vst3PluginProxyImpl::getParameterInfo(
+5
View File
@@ -237,6 +237,11 @@ void Vst3Bridge::run() {
return object_instances[request.instance_id] return object_instances[request.instance_id]
.edit_controller->setComponentState(&request.state); .edit_controller->setComponentState(&request.state);
}, },
[&](YaEditController2::GetParameterCount& request)
-> YaEditController2::GetParameterCount::Response {
return object_instances[request.instance_id]
.edit_controller->getParameterCount();
},
[&](YaPluginBase::Initialize& request) [&](YaPluginBase::Initialize& request)
-> YaPluginBase::Initialize::Response { -> YaPluginBase::Initialize::Response {
// If we got passed a host context, we'll create a proxy object // If we got passed a host context, we'll create a proxy object