aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2011-12-20 18:14:11 +0000
committerDavid Robillard <d@drobilla.net>2011-12-20 18:14:11 +0000
commit1d623932c5c465daa18dce2ce54f8e3b676f7a24 (patch)
tree2133d268eea9351943151e5fbc48bde7f0749b7c /src
parent979147e592fa1b1c57bbfdac5b743ac8e96186cf (diff)
downloadjalv-1d623932c5c465daa18dce2ce54f8e3b676f7a24.tar.gz
jalv-1d623932c5c465daa18dce2ce54f8e3b676f7a24.tar.bz2
jalv-1d623932c5c465daa18dce2ce54f8e3b676f7a24.zip
Localize more stuff to state.c.
git-svn-id: http://svn.drobilla.net/lad/trunk/jalv@3892 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src')
-rw-r--r--src/jalv_internal.h5
-rw-r--r--src/state.c35
2 files changed, 14 insertions, 26 deletions
diff --git a/src/jalv_internal.h b/src/jalv_internal.h
index 8c62d9a..e6630e4 100644
--- a/src/jalv_internal.h
+++ b/src/jalv_internal.h
@@ -90,11 +90,7 @@ typedef struct {
LilvWorld* world; /**< Lilv World */
int ui_width; /**< Requested UI width */
int ui_height; /**< Requested UI height */
- SerdReader* reader; /**< RDF reader (for state) */
- SerdWriter* writer; /**< RDF writer (for state) */
struct Property* props; /**< Restored state properties */
- SerdNode state_node; /**< Instance state node (for state) */
- SerdNode last_sym; /**< Last port symbol found in state */
LV2_URID_Map map;
LV2_URID_Unmap unmap;
Symap* symap; /**< Symbol (URI) map */
@@ -126,7 +122,6 @@ typedef struct {
LilvNode* optional; /**< lv2:connectionOptional port property */
uint32_t midi_event_id; /**< MIDI event class ID */
uint32_t atom_prot_id; /**< Atom protocol ID */
- bool in_state; /**< True iff reading instance state */
bool buf_size_set; /**< True iff Jack buf size callback fired */
} Jalv;
diff --git a/src/state.c b/src/state.c
index fc77fef..59f8785 100644
--- a/src/state.c
+++ b/src/state.c
@@ -95,7 +95,7 @@ retrieve_callback(void* handle,
uint32_t* type,
uint32_t* flags)
{
- RetrieveData* data = (RetrieveData*)handle;
+ RetrieveData* data = (RetrieveData*)handle;
struct Property search_key = { key, SERD_NODE_NULL, SERD_NODE_NULL };
struct Property* prop = (struct Property*)bsearch(
&search_key, data->props, data->num_props,
@@ -124,8 +124,6 @@ file_sink(const void* buf, size_t len, void* stream)
void
jalv_save(Jalv* jalv, const char* dir)
{
- assert(!jalv->writer);
-
const size_t dir_len = strlen(dir);
const char* const filename = "state.ttl";
const size_t path_len = dir_len + strlen(filename);
@@ -149,7 +147,7 @@ jalv_save(Jalv* jalv, const char* dir)
SerdNode subject = serd_node_from_string(SERD_URI, USTR(""));
- jalv->writer = serd_writer_new(
+ SerdWriter* writer = serd_writer_new(
SERD_TURTLE,
SERD_STYLE_ABBREVIATED|SERD_STYLE_CURIED,
env,
@@ -157,15 +155,15 @@ jalv_save(Jalv* jalv, const char* dir)
file_sink,
out_fd);
- serd_env_foreach(env, (SerdPrefixSink)serd_writer_set_prefix, jalv->writer);
+ serd_env_foreach(env, (SerdPrefixSink)serd_writer_set_prefix, writer);
// <> lv2:appliesTo <http://example.org/plugin>
- serd_writer_write_statement(jalv->writer, 0, NULL,
+ serd_writer_write_statement(writer, 0, NULL,
&subject,
&lv2_appliesTo,
&plugin_uri, NULL, NULL);
- jalv_save_port_values(jalv, jalv->writer, &subject);
+ jalv_save_port_values(jalv, writer, &subject);
#ifdef HAVE_LV2_STATE
assert(jalv->symap);
@@ -177,13 +175,13 @@ jalv_save(Jalv* jalv, const char* dir)
SERD_URI, (NS_STATE "instanceState"));
// [] state:instanceState [
- jalv->state_node = serd_node_from_string(SERD_BLANK, USTR("state"));
- serd_writer_write_statement(jalv->writer, SERD_ANON_O_BEGIN, NULL,
+ SerdNode state_node = serd_node_from_string(SERD_BLANK, USTR("state"));
+ serd_writer_write_statement(writer, SERD_ANON_O_BEGIN, NULL,
&subject,
&state_instanceState,
- &jalv->state_node, NULL, NULL);
+ &state_node, NULL, NULL);
- StoreData data = { &jalv->unmap, &jalv->state_node, jalv->writer };
+ StoreData data = { &jalv->unmap, &state_node, writer };
// Write properties to state blank node
state->save(lilv_instance_get_handle(jalv->instance),
@@ -193,14 +191,12 @@ jalv_save(Jalv* jalv, const char* dir)
NULL);
// ]
- serd_writer_end_anon(jalv->writer, &jalv->state_node);
- jalv->state_node = SERD_NODE_NULL;
+ serd_writer_end_anon(writer, &state_node);
}
#endif // HAVE_LV2_STATE
// Close state file and clean up Serd
- serd_writer_free(jalv->writer);
- jalv->writer = NULL;
+ serd_writer_free(writer);
fclose(out_fd);
serd_env_free(env);
@@ -271,7 +267,7 @@ jalv_restore(Jalv* jalv, const char* dir)
data->world = jalv->world;
data->map = &jalv->map;
- jalv->reader = serd_reader_new(
+ SerdReader* reader = serd_reader_new(
SERD_TURTLE,
data, NULL,
NULL,
@@ -284,17 +280,14 @@ jalv_restore(Jalv* jalv, const char* dir)
char* state_uri = (char*)malloc(state_uri_len);
snprintf(state_uri, state_uri_len, "file://%s/state.ttl", dir);
- SerdStatus st = serd_reader_read_file(jalv->reader, USTR(state_uri));
- serd_node_free(&jalv->last_sym);
+ SerdStatus st = serd_reader_read_file(reader, USTR(state_uri));
if (st) {
fprintf(stderr, "Error reading state from %s (%s)\n",
state_uri, serd_strerror(st));
return;
}
- serd_reader_free(jalv->reader);
- jalv->reader = NULL;
- jalv->in_state = false;
+ serd_reader_free(reader);
const LilvPlugins* plugins = lilv_world_get_all_plugins(data->world);
jalv->plugin = lilv_plugins_get_by_uri(plugins, data->plugin_uri);