summaryrefslogtreecommitdiff
path: root/src/grl-source.c
diff options
context:
space:
mode:
authorMathias Hasselmann <mathias@openismus.com>2012-09-30 21:47:29 +0200
committerJuan A. Suarez Romero <jasuarez@igalia.com>2012-10-02 09:10:30 +0200
commit02d9befee7c3bf172714a3627afef2c9b5e3b650 (patch)
treea62f0c1cc1e0adc8537511247e3fcc1a0343a331 /src/grl-source.c
parent1c288a718d930e8c5cbeff9d08f4511ca965a9ae (diff)
downloadgrilo-02d9befee7c3bf172714a3627afef2c9b5e3b650.tar.gz
core: Properly pass store spec to store_relay_cb()
This fixes https://bugzilla.gnome.org/show_bug.cgi?id=685161
Diffstat (limited to 'src/grl-source.c')
-rw-r--r--src/grl-source.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/grl-source.c b/src/grl-source.c
index 3810158..dc63e36 100644
--- a/src/grl-source.c
+++ b/src/grl-source.c
@@ -166,6 +166,7 @@ struct StoreRelayCb {
GrlWriteFlags flags;
GrlSourceStoreCb user_callback;
gpointer user_data;
+ GrlSourceStoreSpec *spec;
};
struct StoreMetadataRelayCb {
@@ -2553,13 +2554,14 @@ store_relay_cb (GrlSource *source,
gpointer user_data,
const GError *error)
{
- GrlSourceStoreSpec *ss = (GrlSourceStoreSpec *) user_data;
- struct StoreRelayCb *src = (struct StoreRelayCb *) ss->user_data;
+ struct StoreRelayCb *src = (struct StoreRelayCb *) user_data;
+ GrlSourceStoreSpec *ss = src->spec;
GRL_DEBUG (__FUNCTION__);
if (error || src->flags & GRL_WRITE_NORMAL) {
- src->user_callback (source, media, failed_keys, src->user_data, error);
+ if (src->user_callback)
+ src->user_callback (source, media, failed_keys, src->user_data, error);
} else {
run_store_metadata (source, media, failed_keys, GRL_WRITE_FULL,
src->user_callback, src->user_data);
@@ -4034,6 +4036,8 @@ grl_source_store_impl (GrlSource *source,
ss->callback = store_relay_cb;
ss->user_data = src;
+ src->spec = ss;
+
g_idle_add (store_idle, ss);
return TRUE;