got closer to vst3 sdk wrt plugin controller
This commit is contained in:
parent
9c8ff3ae2e
commit
e00ac8003b
@ -46,6 +46,9 @@ static Steinberg_tresult pluginQueryInterface(pluginInstance *p, const Steinberg
|
|||||||
offset = offsetof(pluginInstance, vtblIProcessContextRequirements);
|
offset = offsetof(pluginInstance, vtblIProcessContextRequirements);
|
||||||
else {
|
else {
|
||||||
TRACE(" not supported\n");
|
TRACE(" not supported\n");
|
||||||
|
for (int i = 0; i < 16; i++)
|
||||||
|
TRACE(" %x", iid[i]);
|
||||||
|
TRACE("\n");
|
||||||
*obj = NULL;
|
*obj = NULL;
|
||||||
return Steinberg_kNoInterface;
|
return Steinberg_kNoInterface;
|
||||||
}
|
}
|
||||||
@ -419,6 +422,7 @@ typedef struct controller {
|
|||||||
#if DATA_PLUGIN_PARAMETERS_N > 0
|
#if DATA_PLUGIN_PARAMETERS_N > 0
|
||||||
double parameters[DATA_PLUGIN_PARAMETERS_N];
|
double parameters[DATA_PLUGIN_PARAMETERS_N];
|
||||||
#endif
|
#endif
|
||||||
|
struct Steinberg_Vst_IComponentHandler* componentHandler;
|
||||||
} controller;
|
} controller;
|
||||||
|
|
||||||
static Steinberg_tresult controllerQueryInterface(void* thisInterface, const Steinberg_TUID iid, void** obj) {
|
static Steinberg_tresult controllerQueryInterface(void* thisInterface, const Steinberg_TUID iid, void** obj) {
|
||||||
@ -426,7 +430,10 @@ static Steinberg_tresult controllerQueryInterface(void* thisInterface, const Ste
|
|||||||
if (memcmp(iid, Steinberg_FUnknown_iid, sizeof(Steinberg_TUID))
|
if (memcmp(iid, Steinberg_FUnknown_iid, sizeof(Steinberg_TUID))
|
||||||
&& memcmp(iid, Steinberg_IPluginBase_iid, sizeof(Steinberg_TUID))
|
&& memcmp(iid, Steinberg_IPluginBase_iid, sizeof(Steinberg_TUID))
|
||||||
&& memcmp(iid, Steinberg_Vst_IEditController_iid, sizeof(Steinberg_TUID))) {
|
&& memcmp(iid, Steinberg_Vst_IEditController_iid, sizeof(Steinberg_TUID))) {
|
||||||
TRACE(" oooo\n");
|
TRACE(" none\n");
|
||||||
|
for (int i = 0; i < 16; i++)
|
||||||
|
TRACE(" %x", iid[i]);
|
||||||
|
TRACE("\n");
|
||||||
*obj = NULL;
|
*obj = NULL;
|
||||||
return Steinberg_kNoInterface;
|
return Steinberg_kNoInterface;
|
||||||
}
|
}
|
||||||
@ -460,6 +467,10 @@ static Steinberg_tresult controllerInitialize(void* thisInterface, struct Steinb
|
|||||||
if (c->context != NULL)
|
if (c->context != NULL)
|
||||||
return Steinberg_kResultFalse;
|
return Steinberg_kResultFalse;
|
||||||
c->context = context;
|
c->context = context;
|
||||||
|
#if DATA_PLUGIN_PARAMETERS_N > 0
|
||||||
|
for (int i = 0; i < DATA_PLUGIN_PARAMETERS_N; i++)
|
||||||
|
c->parameters[i] = parameterInfo[i].defaultNormalizedValue;
|
||||||
|
#endif
|
||||||
return Steinberg_kResultOk;
|
return Steinberg_kResultOk;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -473,7 +484,7 @@ static Steinberg_tresult controllerTerminate(void* thisInterface) {
|
|||||||
static Steinberg_tresult controllerSetParamNormalized(void* thisInterface, Steinberg_Vst_ParamID id, Steinberg_Vst_ParamValue value);
|
static Steinberg_tresult controllerSetParamNormalized(void* thisInterface, Steinberg_Vst_ParamID id, Steinberg_Vst_ParamValue value);
|
||||||
|
|
||||||
static Steinberg_tresult controllerSetComponentState(void* thisInterface, struct Steinberg_IBStream* state) {
|
static Steinberg_tresult controllerSetComponentState(void* thisInterface, struct Steinberg_IBStream* state) {
|
||||||
TRACE("controller set component state\n");
|
TRACE("controller set component state %p %p\n", thisInterface, (void *)state);
|
||||||
if (state == NULL)
|
if (state == NULL)
|
||||||
return Steinberg_kResultFalse;
|
return Steinberg_kResultFalse;
|
||||||
#if DATA_PLUGIN_PARAMETERS_N > 0
|
#if DATA_PLUGIN_PARAMETERS_N > 0
|
||||||
@ -490,6 +501,7 @@ static Steinberg_tresult controllerSetComponentState(void* thisInterface, struct
|
|||||||
controllerSetParamNormalized(thisInterface, i, v.f);
|
controllerSetParamNormalized(thisInterface, i, v.f);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
TRACE(" ok\n");
|
||||||
return Steinberg_kResultTrue;
|
return Steinberg_kResultTrue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -513,7 +525,7 @@ static Steinberg_tresult controllerGetParameterInfo(void* thisInterface, Steinbe
|
|||||||
if (paramIndex < 0 || paramIndex >= DATA_PLUGIN_PARAMETERS_N)
|
if (paramIndex < 0 || paramIndex >= DATA_PLUGIN_PARAMETERS_N)
|
||||||
return Steinberg_kResultFalse;
|
return Steinberg_kResultFalse;
|
||||||
*info = parameterInfo[paramIndex];
|
*info = parameterInfo[paramIndex];
|
||||||
return Steinberg_kResultOk;
|
return Steinberg_kResultTrue;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void dToStr(double v, Steinberg_Vst_String128 s, int precision) {
|
static void dToStr(double v, Steinberg_Vst_String128 s, int precision) {
|
||||||
@ -564,7 +576,7 @@ static Steinberg_tresult controllerGetParamStringByValue(void* thisInterface, St
|
|||||||
return Steinberg_kResultFalse;
|
return Steinberg_kResultFalse;
|
||||||
//mapping TBD
|
//mapping TBD
|
||||||
dToStr(valueNormalized, string, 2);
|
dToStr(valueNormalized, string, 2);
|
||||||
return Steinberg_kResultOk;
|
return Steinberg_kResultTrue;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TCharToD(Steinberg_Vst_TChar* s, double *v) {
|
void TCharToD(Steinberg_Vst_TChar* s, double *v) {
|
||||||
@ -601,7 +613,7 @@ static Steinberg_tresult controllerGetParamValueByString(void* thisInterface, St
|
|||||||
return Steinberg_kResultFalse;
|
return Steinberg_kResultFalse;
|
||||||
//mapping TBD
|
//mapping TBD
|
||||||
TCharToD(string, valueNormalized);
|
TCharToD(string, valueNormalized);
|
||||||
return Steinberg_kResultOk;
|
return Steinberg_kResultTrue;
|
||||||
}
|
}
|
||||||
|
|
||||||
static Steinberg_Vst_ParamValue controllerNormalizedParamToPlain(void* thisInterface, Steinberg_Vst_ParamID id, Steinberg_Vst_ParamValue valueNormalized) {
|
static Steinberg_Vst_ParamValue controllerNormalizedParamToPlain(void* thisInterface, Steinberg_Vst_ParamID id, Steinberg_Vst_ParamValue valueNormalized) {
|
||||||
@ -633,7 +645,7 @@ static Steinberg_tresult controllerSetParamNormalized(void* thisInterface, Stein
|
|||||||
return Steinberg_kResultFalse;
|
return Steinberg_kResultFalse;
|
||||||
controller *c = (controller *)thisInterface;
|
controller *c = (controller *)thisInterface;
|
||||||
c->parameters[id] = value;
|
c->parameters[id] = value;
|
||||||
return Steinberg_kResultOk;
|
return Steinberg_kResultTrue;
|
||||||
#else
|
#else
|
||||||
return Steinberg_kResultFalse;
|
return Steinberg_kResultFalse;
|
||||||
#endif
|
#endif
|
||||||
@ -641,8 +653,15 @@ static Steinberg_tresult controllerSetParamNormalized(void* thisInterface, Stein
|
|||||||
|
|
||||||
static Steinberg_tresult controllerSetComponentHandler(void* thisInterface, struct Steinberg_Vst_IComponentHandler* handler) {
|
static Steinberg_tresult controllerSetComponentHandler(void* thisInterface, struct Steinberg_Vst_IComponentHandler* handler) {
|
||||||
TRACE("controller set component handler\n");
|
TRACE("controller set component handler\n");
|
||||||
//TBD
|
controller *c = (controller *)thisInterface;
|
||||||
return Steinberg_kNotImplemented;
|
if (c->componentHandler != handler) {
|
||||||
|
if (c->componentHandler != NULL)
|
||||||
|
c->componentHandler->lpVtbl->release(c->componentHandler);
|
||||||
|
c->componentHandler = handler;
|
||||||
|
if (c->componentHandler != NULL)
|
||||||
|
c->componentHandler->lpVtbl->addRef(c->componentHandler);
|
||||||
|
}
|
||||||
|
return Steinberg_kResultTrue;
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct Steinberg_IPlugView* controllerCreateView(void* thisInterface, Steinberg_FIDString name) {
|
static struct Steinberg_IPlugView* controllerCreateView(void* thisInterface, Steinberg_FIDString name) {
|
||||||
@ -757,6 +776,9 @@ static Steinberg_tresult factoryCreateInstance(void *thisInterface, Steinberg_FI
|
|||||||
offset = offsetof(pluginInstance, vtblIProcessContextRequirements);
|
offset = offsetof(pluginInstance, vtblIProcessContextRequirements);
|
||||||
} else {
|
} else {
|
||||||
TRACE(" INothing :(\n");
|
TRACE(" INothing :(\n");
|
||||||
|
for (int i = 0; i < 16; i++)
|
||||||
|
TRACE(" %x", iid[i]);
|
||||||
|
TRACE("\n");
|
||||||
return Steinberg_kNoInterface;
|
return Steinberg_kNoInterface;
|
||||||
}
|
}
|
||||||
pluginInstance *p = malloc(sizeof(pluginInstance));
|
pluginInstance *p = malloc(sizeof(pluginInstance));
|
||||||
@ -781,10 +803,7 @@ static Steinberg_tresult factoryCreateInstance(void *thisInterface, Steinberg_FI
|
|||||||
c->vtblIEditController = &controllerVtbl;
|
c->vtblIEditController = &controllerVtbl;
|
||||||
c->refs = 1;
|
c->refs = 1;
|
||||||
c->context = NULL;
|
c->context = NULL;
|
||||||
#if DATA_PLUGIN_PARAMETERS_N > 0
|
c->componentHandler = NULL;
|
||||||
for (int i = 0; i < DATA_PLUGIN_PARAMETERS_N; i++)
|
|
||||||
c->parameters[i] = parameterInfo[i].defaultNormalizedValue;
|
|
||||||
#endif
|
|
||||||
*obj = c;
|
*obj = c;
|
||||||
TRACE(" instance: %p\n", (void *)c);
|
TRACE(" instance: %p\n", (void *)c);
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
Reference in New Issue
Block a user