[grilo-plugins] youtube: Do not leak stored operation data
- From: Juan A. Suarez Romero <jasuarez src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [grilo-plugins] youtube: Do not leak stored operation data
- Date: Tue, 19 Apr 2011 10:47:47 +0000 (UTC)
commit 334326caf56e0a6d94f323a026c2e928aed4f0ba
Author: Juan A. Suarez Romero <jasuarez igalia com>
Date: Fri Apr 15 07:51:43 2011 +0000
youtube: Do not leak stored operation data
Signed-off-by: Juan A. Suarez Romero <jasuarez igalia com>
src/media/youtube/grl-youtube.c | 17 +++++++++++++++++
1 files changed, 17 insertions(+), 0 deletions(-)
---
diff --git a/src/media/youtube/grl-youtube.c b/src/media/youtube/grl-youtube.c
index 2f03ab5..ebf30f0 100644
--- a/src/media/youtube/grl-youtube.c
+++ b/src/media/youtube/grl-youtube.c
@@ -414,6 +414,18 @@ grl_youtube_source_finalize (GObject *object)
/* ======================= Utilities ==================== */
+static void
+release_operation_data (GrlMetadataSource *source,
+ guint operation_id)
+{
+ GCancellable *cancellable = grl_metadata_source_get_operation_data (source,
+ operation_id);
+
+ if (cancellable) {
+ g_object_unref (cancellable);
+ }
+}
+
static OperationSpec *
operation_spec_new ()
{
@@ -910,6 +922,7 @@ static void
build_media_from_entry_metadata_cb (GrlMedia *media, gpointer user_data)
{
GrlMediaSourceMetadataSpec *ms = (GrlMediaSourceMetadataSpec *) user_data;
+ release_operation_data (GRL_METADATA_SOURCE (ms->source), ms->metadata_id);
ms->callback (ms->source, ms->metadata_id, media, ms->user_data, NULL);
}
@@ -987,6 +1000,7 @@ metadata_cb (GObject *object,
(GDATA_YOUTUBE_SERVICE (service), result, &error));
#endif
if (error) {
+ release_operation_data (GRL_METADATA_SOURCE (ms->source), ms->metadata_id);
error->code = GRL_CORE_ERROR_METADATA_FAILED;
ms->callback (ms->source, ms->metadata_id, ms->media, ms->user_data, error);
g_error_free (error);
@@ -1381,6 +1395,8 @@ build_media_from_entry_media_from_uri_cb (GrlMedia *media, gpointer user_data)
{
GrlMediaSourceMediaFromUriSpec *mfus =
(GrlMediaSourceMediaFromUriSpec *) user_data;
+
+ release_operation_data (GRL_METADATA_SOURCE (mfus->source), mfus->media_from_uri_id);
mfus->callback (mfus->source, mfus->media_from_uri_id, media, mfus->user_data, NULL);
}
@@ -1407,6 +1423,7 @@ media_from_uri_cb (GObject *object, GAsyncResult *result, gpointer user_data)
if (error) {
error->code = GRL_CORE_ERROR_MEDIA_FROM_URI_FAILED;
+ release_operation_data (GRL_METADATA_SOURCE (mfus->source), mfus->media_from_uri_id);
mfus->callback (mfus->source, mfus->media_from_uri_id, NULL, mfus->user_data, error);
g_error_free (error);
} else {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]