[grilo] core: Send operation id if operation is cancellable



commit 15d1e0d09e3c84383271a4cf9f23554fb0adaa9a
Author: Juan A. Suarez Romero <jasuarez igalia com>
Date:   Tue Apr 5 17:40:18 2011 +0000

    core: Send operation id if operation is cancellable
    
    metadata() and media_from_uri() are both cancellable operations, but none of
    them are sending the operation id in the callback.
    
    This commit fix this.
    
    Signed-off-by: Juan A. Suarez Romero <jasuarez igalia com>

 src/grl-media-source.c     |   15 +++++++++++----
 src/grl-media-source.h     |    2 ++
 src/grl-multiple.c         |    9 +++++----
 tools/grilo-test-ui/main.c |    3 ++-
 4 files changed, 20 insertions(+), 9 deletions(-)
---
diff --git a/src/grl-media-source.c b/src/grl-media-source.c
index 62e4ce7..e8444c1 100644
--- a/src/grl-media-source.c
+++ b/src/grl-media-source.c
@@ -409,7 +409,7 @@ metadata_idle (gpointer user_data)
     GRL_DEBUG ("  operation was cancelled");
     error = g_error_new (GRL_CORE_ERROR, GRL_CORE_ERROR_OPERATION_CANCELLED,
                          "Operation was cancelled");
-    ms->callback (ms->source, ms->media, ms->user_data, error);
+    ms->callback (ms->source, ms->metadata_id, ms->media, ms->user_data, error);
     g_error_free (error);
   }
   return FALSE;
@@ -455,6 +455,7 @@ remove_idle (gpointer user_data)
 
 static void
 media_from_uri_relay_cb (GrlMediaSource *source,
+                         guint media_from_uri_id,
 			 GrlMedia *media,
 			 gpointer user_data,
 			 const GError *error)
@@ -488,7 +489,7 @@ media_from_uri_relay_cb (GrlMediaSource *source,
     }
   }
 
-  mfsrc->user_callback (source,
+  mfsrc->user_callback (source, mfsrc->spec->media_from_uri_id,
                         media, mfsrc->user_data, _error);
 
   if (should_free_error && _error) {
@@ -517,7 +518,7 @@ media_from_uri_idle (gpointer user_data)
     GRL_DEBUG ("  operation was cancelled");
     error = g_error_new (GRL_CORE_ERROR, GRL_CORE_ERROR_OPERATION_CANCELLED,
                          "Operation was cancelled");
-    mfus->callback (mfus->source, NULL, mfus->user_data, error);
+    mfus->callback (mfus->source, mfus->media_from_uri_id, NULL, mfus->user_data, error);
     g_error_free (error);
   }
   return FALSE;
@@ -818,6 +819,7 @@ multiple_result_async_cb (GrlMediaSource *source,
 
 static void
 metadata_result_relay_cb (GrlMediaSource *source,
+                          guint metadata_id,
 			  GrlMedia *media,
 			  gpointer user_data,
 			  const GError *error)
@@ -845,7 +847,7 @@ metadata_result_relay_cb (GrlMediaSource *source,
     should_free_error = TRUE;
   }
 
-  mrc->user_callback (source, media, mrc->user_data, error);
+  mrc->user_callback (source, mrc->spec->metadata_id, media, mrc->user_data, error);
 
   if (should_free_error && _error)
     g_error_free (_error);
@@ -862,6 +864,7 @@ metadata_result_relay_cb (GrlMediaSource *source,
 
 static void
 metadata_result_async_cb (GrlMediaSource *source,
+                          guint operation_id,
                           GrlMedia *media,
                           gpointer user_data,
                           const GError *error)
@@ -1184,6 +1187,7 @@ metadata_full_resolution_done_cb (GrlMetadataSource *source,
        * the plugin owns it) */
     }
     cb_info->user_callback (cb_info->source,
+                            cb_info->ctl_info->metadata_id,
 			    media,
 			    cb_info->user_data,
 			    _error);
@@ -1200,6 +1204,7 @@ metadata_full_resolution_done_cb (GrlMetadataSource *source,
 
 static void
 metadata_full_resolution_ctl_cb (GrlMediaSource *source,
+                                 guint metadata_id,
 				 GrlMedia *media,
 				 gpointer user_data,
 				 const GError *error)
@@ -1214,6 +1219,7 @@ metadata_full_resolution_ctl_cb (GrlMediaSource *source,
   if (error) {
     GRL_WARNING ("Operation failed: %s", error->message);
     ctl_info->user_callback (source,
+                             ctl_info->metadata_id,
 			     media,
 			     ctl_info->user_data,
 			     error);
@@ -1258,6 +1264,7 @@ metadata_full_resolution_ctl_cb (GrlMediaSource *source,
 
   if (!done_info->pending_callbacks) {
     ctl_info->user_callback (source,
+                             ctl_info->metadata_id,
 			     media,
 			     ctl_info->user_data,
 			     NULL);
diff --git a/src/grl-media-source.h b/src/grl-media-source.h
index 6ff26ff..02f43ad 100644
--- a/src/grl-media-source.h
+++ b/src/grl-media-source.h
@@ -118,6 +118,7 @@ typedef void (*GrlMediaSourceResultCb) (GrlMediaSource *source,
 /**
  * GrlMediaSourceMetadataCb:
  * @source: a media source
+ * @operation_id: operation identifier
  * @media: (transfer full): a data transfer object
  * @user_data: user data passed to grl_media_source_metadata()
  * @error: (type uint): possible #GError generated at processing
@@ -125,6 +126,7 @@ typedef void (*GrlMediaSourceResultCb) (GrlMediaSource *source,
  * Prototype for the callback passed to grl_media_source_metadata()
  */
 typedef void (*GrlMediaSourceMetadataCb) (GrlMediaSource *source,
+                                          guint operation_id,
                                           GrlMedia *media,
                                           gpointer user_data,
                                           const GError *error);
diff --git a/src/grl-multiple.c b/src/grl-multiple.c
index a49fce6..c711646 100644
--- a/src/grl-multiple.c
+++ b/src/grl-multiple.c
@@ -445,6 +445,7 @@ free_media_from_uri_data (struct MediaFromUriCallbackData *mfucd)
 
 static void
 media_from_uri_cb (GrlMediaSource *source,
+                   guint operation_id,
 		   GrlMedia *media,
 		   gpointer user_data,
 		   const GError *error)
@@ -453,16 +454,16 @@ media_from_uri_cb (GrlMediaSource *source,
     (struct MediaFromUriCallbackData *) user_data;
 
   if (error) {
-    mfucd->user_callback (NULL, NULL, mfucd->user_data, error);
+    mfucd->user_callback (NULL, 0, NULL, mfucd->user_data, error);
   } else if (media) {
-    mfucd->user_callback (source, media, mfucd->user_data, NULL);
+    mfucd->user_callback (source, 0, media, mfucd->user_data, NULL);
   } else {
     GError *_error = g_error_new (GRL_CORE_ERROR,
 				  GRL_CORE_ERROR_MEDIA_FROM_URI_FAILED,
 				  "Could not resolve media for URI '%s'",
 				  mfucd->uri);
 
-    mfucd->user_callback (source, media, mfucd->user_data, _error);
+    mfucd->user_callback (source, 0, media, mfucd->user_data, _error);
     g_error_free (_error);
   }
 
@@ -732,6 +733,6 @@ grl_multiple_get_media_from_uri (const gchar *uri,
   /* No source knows how to deal with 'uri', invoke user callback
      with NULL GrlMedia */
   if (!found) {
-    callback (NULL, NULL, user_data, NULL);
+    callback (NULL, 0, NULL, user_data, NULL);
   }
 }
diff --git a/tools/grilo-test-ui/main.c b/tools/grilo-test-ui/main.c
index 9983c6b..ba536c4 100644
--- a/tools/grilo-test-ui/main.c
+++ b/tools/grilo-test-ui/main.c
@@ -516,6 +516,7 @@ cancel_current_operation (void)
 
 static void
 metadata_cb (GrlMediaSource *source,
+             guint operation_id,
 	     GrlMedia *media,
 	     gpointer user_data,
 	     const GError *error)
@@ -826,7 +827,7 @@ metadata (GrlMediaSource *source, GrlMedia *media)
                                      metadata_cb,
                                      NULL);
     } else {
-      metadata_cb (source, media, NULL, NULL);
+      metadata_cb (source, 0, media, NULL, NULL);
     }
   }
 }



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