diff --git a/lv2-state-test.c b/lv2-state-test.c index cf72961..906ecbc 100644 --- a/lv2-state-test.c +++ b/lv2-state-test.c @@ -10,6 +10,7 @@ #include #include +#include #include #ifndef HAVE_LV2_STATE_FREE_PATH @@ -36,16 +37,41 @@ static LV2_Handle instantiate(const LV2_Descriptor* const descriptor, const char* const bundle_path, const LV2_Feature* const* const features) { - StateTest* instance = calloc(1, sizeof(StateTest)); + const LV2_State_Free_Path* freePath = NULL; + const LV2_State_Make_Path* makePath = NULL; + const LV2_State_Map_Path* mapPath = NULL; for (int i=0; features[i] != NULL; ++i) { - if (strcmp(features[i]->URI, LV2_STATE__freePath) == 0) - instance->freePath = features[i]->data; - if (strcmp(features[i]->URI, LV2_STATE__makePath) == 0) - instance->makePath = features[i]->data; - if (strcmp(features[i]->URI, LV2_STATE__mapPath) == 0) - instance->mapPath = features[i]->data; + /**/ if (strcmp(features[i]->URI, LV2_STATE__freePath) == 0) + freePath = features[i]->data; + else if (strcmp(features[i]->URI, LV2_STATE__makePath) == 0) + makePath = features[i]->data; + else if (strcmp(features[i]->URI, LV2_STATE__mapPath) == 0) + mapPath = features[i]->data; + } + + if (freePath == NULL || makePath == NULL || mapPath == NULL) + return NULL; + + StateTest* instance = calloc(1, sizeof(StateTest)); + + instance->freePath = freePath; + instance->makePath = makePath; + instance->mapPath = mapPath; + + { + char* const projectPath = makePath->path(makePath->handle, "."); + + if (projectPath != NULL) + { + printf("state-test init ok, initial path is: '%s'\n", projectPath); + freePath->free_path(freePath->handle, projectPath); + } + else + { + printf("state-test init ok, but failed to get initial path\n"); + } } return instance; @@ -121,6 +147,12 @@ static LV2_State_Status save(LV2_Handle instance, { instancePtr->saved = true; return LV2_STATE_SUCCESS; + + // TODO + (void)store; + (void)handle; + (void)flags; + (void)features; } static LV2_State_Status restore(LV2_Handle instance, @@ -131,6 +163,12 @@ static LV2_State_Status restore(LV2_Handle instance, { instancePtr->restored = true; return LV2_STATE_SUCCESS; + + // TODO + (void)retrieve; + (void)handle; + (void)flags; + (void)features; } static const void* extension_data(const char* const uri) @@ -151,6 +189,7 @@ const LV2_Descriptor* lv2_descriptor(const uint32_t index) { static const LV2_Descriptor desc = { .URI = "https://git.kx.studio/falkTX/lv2-state-test", + .instantiate = instantiate, .connect_port = connect_port, .activate = activate, .run = run,