[grilo-plugins] all: resolve() is a cancellable operation



commit ac6e31354f90040ba29eec6ecf37dc5a98270ddd
Author: Juan A. Suarez Romero <jasuarez igalia com>
Date:   Wed Apr 6 06:44:20 2011 +0000

    all: resolve() is a cancellable operation
    
    As such, the callback needs to send the operation ID.
    
    Signed-off-by: Juan A. Suarez Romero <jasuarez igalia com>

 src/media/tracker/grl-tracker-metadata.c           |    6 +++---
 src/metadata/gravatar/grl-gravatar.c               |    2 +-
 src/metadata/lastfm-albumart/grl-lastfm-albumart.c |    8 ++++----
 src/metadata/local-metadata/grl-local-metadata.c   |   12 ++++++------
 src/metadata/metadata-store/grl-metadata-store.c   |    6 +++---
 test/main.c                                        |    1 +
 6 files changed, 18 insertions(+), 17 deletions(-)
---
diff --git a/src/media/tracker/grl-tracker-metadata.c b/src/media/tracker/grl-tracker-metadata.c
index 0ba6a33..dc22759 100644
--- a/src/media/tracker/grl-tracker-metadata.c
+++ b/src/media/tracker/grl-tracker-metadata.c
@@ -267,7 +267,7 @@ tracker_resolve_cb (GObject      *source_object,
 			 "Failed to start resolve action : %s",
                          tracker_error->message);
 
-    rs->callback (rs->source, rs->media, rs->user_data, error);
+    rs->callback (rs->source, rs->resolve_id, rs->media, rs->user_data, error);
 
     g_error_free (tracker_error);
     g_error_free (error);
@@ -282,9 +282,9 @@ tracker_resolve_cb (GObject      *source_object,
       fill_grilo_media_from_sparql (rs->media, cursor, col);
     }
 
-    rs->callback (rs->source, rs->media, rs->user_data, NULL);
+    rs->callback (rs->source, rs->resolve_id, rs->media, rs->user_data, NULL);
   } else {
-    rs->callback (rs->source, rs->media, rs->user_data, NULL);
+    rs->callback (rs->source, rs->resolve_id, rs->media, rs->user_data, NULL);
   }
 
  end_operation:
diff --git a/src/metadata/gravatar/grl-gravatar.c b/src/metadata/gravatar/grl-gravatar.c
index 93886d7..35e6885 100644
--- a/src/metadata/gravatar/grl-gravatar.c
+++ b/src/metadata/gravatar/grl-gravatar.c
@@ -316,5 +316,5 @@ grl_gravatar_source_resolve (GrlMetadataSource *source,
     set_avatar (GRL_DATA (rs->media), GRL_METADATA_KEY_AUTHOR);
   }
 
-  rs->callback (source, rs->media, rs->user_data, NULL);
+  rs->callback (source, rs->resolve_id, rs->media, rs->user_data, NULL);
 }
diff --git a/src/metadata/lastfm-albumart/grl-lastfm-albumart.c b/src/metadata/lastfm-albumart/grl-lastfm-albumart.c
index e0ff168..908849f 100644
--- a/src/metadata/lastfm-albumart/grl-lastfm-albumart.c
+++ b/src/metadata/lastfm-albumart/grl-lastfm-albumart.c
@@ -207,7 +207,7 @@ read_done_cb (GObject *source_object,
                          GRL_CORE_ERROR_RESOLVE_FAILED,
                          "Failed to connect to Last.FM: '%s'",
                          wc_error->message);
-    rs->callback (rs->source, rs->media, rs->user_data, error);
+    rs->callback (rs->source, rs->resolve_id, rs->media, rs->user_data, error);
     g_error_free (wc_error);
     g_error_free (error);
 
@@ -254,7 +254,7 @@ read_done_cb (GObject *source_object,
     g_free (image);
   }
 
-  rs->callback (rs->source, rs->media, rs->user_data, NULL);
+  rs->callback (rs->source, rs->resolve_id, rs->media, rs->user_data, NULL);
 }
 
 static void
@@ -343,7 +343,7 @@ grl_lastfm_albumart_source_resolve (GrlMetadataSource *source,
 
   if (iter == NULL) {
     GRL_DEBUG ("No supported key was requested");
-    rs->callback (source, rs->media, rs->user_data, NULL);
+    rs->callback (source, rs->resolve_id, rs->media, rs->user_data, NULL);
   } else {
     artist = grl_data_get_string (GRL_DATA (rs->media),
                                   GRL_METADATA_KEY_ARTIST);
@@ -353,7 +353,7 @@ grl_lastfm_albumart_source_resolve (GrlMetadataSource *source,
 
     if (!artist || !album) {
       GRL_DEBUG ("Missing dependencies");
-      rs->callback (source, rs->media, rs->user_data, NULL);
+      rs->callback (source, rs->resolve_id, rs->media, rs->user_data, NULL);
     } else {
       esc_artist = g_uri_escape_string (artist, NULL, TRUE);
       esc_album = g_uri_escape_string (album, NULL, TRUE);
diff --git a/src/metadata/local-metadata/grl-local-metadata.c b/src/metadata/local-metadata/grl-local-metadata.c
index 4c3e892..57f4549 100644
--- a/src/metadata/local-metadata/grl-local-metadata.c
+++ b/src/metadata/local-metadata/grl-local-metadata.c
@@ -438,11 +438,11 @@ got_file_info (GFile *file, GAsyncResult *result,
     grl_media_set_thumbnail (rs->media, thumbnail_uri);
     g_free (thumbnail_uri);
 
-    rs->callback (rs->source, rs->media, rs->user_data, NULL);
+    rs->callback (rs->source, rs->resolve_id, rs->media, rs->user_data, NULL);
   } else {
     GRL_INFO ("Could not find thumbnail for media: %s",
               grl_media_get_url (rs->media));
-    rs->callback (rs->source, rs->media, rs->user_data, NULL);
+    rs->callback (rs->source, rs->resolve_id, rs->media, rs->user_data, NULL);
   }
 
   goto exit;
@@ -451,7 +451,7 @@ error:
     {
       GError *new_error = g_error_new (GRL_CORE_ERROR, GRL_CORE_ERROR_RESOLVE_FAILED,
                                        "Got error: %s", error->message);
-      rs->callback (rs->source, rs->media, rs->user_data, new_error);
+      rs->callback (rs->source, rs->resolve_id, rs->media, rs->user_data, new_error);
 
       g_error_free (error);
       g_error_free (new_error);
@@ -566,7 +566,7 @@ resolve_album_art (GrlMetadataSourceResolveSpec *rs, resolution_flags_t flags)
   GError *error;
   error = g_error_new (GRL_CORE_ERROR, GRL_CORE_ERROR_RESOLVE_FAILED,
     "Thumbnail resolution for GrlMediaAudio not implemented in local-metadata");
-  rs->callback (rs->source, rs->media, rs->user_data, error);
+  rs->callback (rs->source, rs->resolve_id, rs->media, rs->user_data, error);
   g_error_free (error);
 }
 
@@ -692,7 +692,7 @@ grl_local_metadata_source_resolve (GrlMetadataSource *source,
 
   if (error) {
     /* No can do! */
-    rs->callback (source, rs->media, rs->user_data, error);
+    rs->callback (source, rs->resolve_id, rs->media, rs->user_data, error);
     g_error_free (error);
     return;
   }
@@ -709,7 +709,7 @@ grl_local_metadata_source_resolve (GrlMetadataSource *source,
     resolve_album_art (rs, flags);
   } else {
     /* What's that media type? */
-    rs->callback (source, rs->media, rs->user_data, NULL);
+    rs->callback (source, rs->resolve_id, rs->media, rs->user_data, NULL);
   }
 }
 
diff --git a/src/metadata/metadata-store/grl-metadata-store.c b/src/metadata/metadata-store/grl-metadata-store.c
index 2760db1..50aaf8a 100644
--- a/src/metadata/metadata-store/grl-metadata-store.c
+++ b/src/metadata/metadata-store/grl-metadata-store.c
@@ -594,7 +594,7 @@ grl_metadata_store_source_resolve (GrlMetadataSource *source,
     error = g_error_new (GRL_CORE_ERROR,
 			 GRL_CORE_ERROR_RESOLVE_FAILED,
 			 "source-id not available, cannot resolve metadata.");
-    rs->callback (rs->source, rs->media, rs->user_data, error);
+    rs->callback (rs->source, rs->resolve_id, rs->media, rs->user_data, error);
     g_error_free (error);
     return;
   }
@@ -608,13 +608,13 @@ grl_metadata_store_source_resolve (GrlMetadataSource *source,
 			       source_id, media_id);
   if (stmt) {
     fill_metadata (rs->media, rs->keys, stmt);
-    rs->callback (rs->source, rs->media, rs->user_data, NULL);
+    rs->callback (rs->source, rs->resolve_id, rs->media, rs->user_data, NULL);
   } else {
     GRL_WARNING ("Failed to resolve metadata");
     error = g_error_new (GRL_CORE_ERROR,
 			 GRL_CORE_ERROR_RESOLVE_FAILED,
 			 "Failed to resolve metadata.");
-    rs->callback (rs->source, rs->media, rs->user_data, error);
+    rs->callback (rs->source, rs->resolve_id, rs->media, rs->user_data, error);
     g_error_free (error);
   }
 }
diff --git a/test/main.c b/test/main.c
index 7a75d7c..afe28e1 100644
--- a/test/main.c
+++ b/test/main.c
@@ -166,6 +166,7 @@ metadata_cb (GrlMediaSource *source,
 
 static void
 resolve_cb (GrlMetadataSource *source,
+            guint resolve_id,
             GrlMedia *media,
             gpointer user_data,
             const GError *error)



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]