diff options
author | David Robillard <d@drobilla.net> | 2015-03-07 08:44:24 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2015-03-07 08:44:24 +0000 |
commit | 19f70db3e2318a4cd50a594900331ecdb5f79f62 (patch) | |
tree | d5e7242fac00a71f6ad91a98a7aa6aab3ca335a1 /src/state.c | |
parent | 13ebd34fd8d72c159d53c1b88be3ae8c618b7a07 (diff) | |
download | jalv-19f70db3e2318a4cd50a594900331ecdb5f79f62.tar.gz jalv-19f70db3e2318a4cd50a594900331ecdb5f79f62.tar.bz2 jalv-19f70db3e2318a4cd50a594900331ecdb5f79f62.zip |
Improve preset support.
git-svn-id: http://svn.drobilla.net/lad/trunk/jalv@5618 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/state.c')
-rw-r--r-- | src/state.c | 30 |
1 files changed, 19 insertions, 11 deletions
diff --git a/src/state.c b/src/state.c index dd642f1..4ed4a64 100644 --- a/src/state.c +++ b/src/state.c @@ -49,12 +49,7 @@ jalv_make_path(LV2_State_Make_Path_Handle handle, Jalv* jalv = (Jalv*)handle; // Create in save directory if saving, otherwise use temp directory - const char* dir = (jalv->save_dir) ? jalv->save_dir : jalv->temp_dir; - - char* fullpath = jalv_strjoin(dir, path); - fprintf(stderr, "MAKE PATH `%s' => `%s'\n", path, fullpath); - - return fullpath; + return jalv_strjoin(jalv->save_dir ? jalv->save_dir : jalv->temp_dir, path); } static const void* @@ -203,10 +198,9 @@ jalv_apply_state(Jalv* jalv, LilvState* state) int jalv_apply_preset(Jalv* jalv, const LilvNode* preset) { - LilvState* state = lilv_state_new_from_world( - jalv->world, &jalv->map, preset); - jalv_apply_state(jalv, state); - lilv_state_free(state); + lilv_state_free(jalv->preset); + jalv->preset = lilv_state_new_from_world(jalv->world, &jalv->map, preset); + jalv_apply_state(jalv, jalv->preset); return 0; } @@ -230,7 +224,21 @@ jalv_save_preset(Jalv* jalv, int ret = lilv_state_save( jalv->world, &jalv->map, &jalv->unmap, state, uri, dir, filename); - lilv_state_free(state); + lilv_state_free(jalv->preset); + jalv->preset = state; return ret; } + +int +jalv_delete_current_preset(Jalv* jalv) +{ + if (!jalv->preset) { + return 1; + } + + lilv_state_delete(jalv->world, jalv->preset); + lilv_state_free(jalv->preset); + jalv->preset = NULL; + return 0; +} |