diff options
author | Bastien Nocera <hadess@hadess.net> | 2014-08-25 18:48:15 +0200 |
---|---|---|
committer | Bastien Nocera <hadess@hadess.net> | 2014-09-02 21:26:37 +0200 |
commit | 5be27ddba70adf8262b1d01dfd541be03d3f3b8d (patch) | |
tree | 51089b9d7d9b624a449318abdac2e7684bec56af /src/icon-helpers.c | |
parent | 56e20afd04fa001c608504f4ee8f417998fa93df (diff) | |
download | totem-5be27ddba70adf8262b1d01dfd541be03d3f3b8d.tar.gz |
main: Fetch missing thumbnails
When populating the icon view.
https://bugzilla.gnome.org/show_bug.cgi?id=727748
Diffstat (limited to 'src/icon-helpers.c')
-rw-r--r-- | src/icon-helpers.c | 31 |
1 files changed, 28 insertions, 3 deletions
diff --git a/src/icon-helpers.c b/src/icon-helpers.c index 2c2f363b9..844e1ce9a 100644 --- a/src/icon-helpers.c +++ b/src/icon-helpers.c @@ -171,6 +171,23 @@ totem_grilo_thumbnail_media_finish (GrlMedia *media, return g_task_propagate_pointer (G_TASK (res), error); } +static void +thumbnail_media_cb (GObject *source_object, + GAsyncResult *res, + gpointer user_data) +{ + GTask *task = user_data; + GdkPixbuf *pixbuf; + GError *error = NULL; + + pixbuf = totem_grilo_thumbnail_media_finish (GRL_MEDIA (source_object), res, &error); + if (!pixbuf) + g_task_return_error (task, error); + else + g_task_return_pointer (task, pixbuf, g_object_unref); + g_object_unref (task); +} + void totem_grilo_get_thumbnail (GObject *object, GCancellable *cancellable, @@ -187,9 +204,16 @@ totem_grilo_get_thumbnail (GObject *object, callback, user_data); - if (GRL_IS_MEDIA (object)) + if (GRL_IS_MEDIA (object)) { url_thumb = grl_media_get_thumbnail (GRL_MEDIA (object)); - else if (GRL_IS_SOURCE (object)) { + if (!url_thumb && g_strcmp0 (grl_media_get_source (GRL_MEDIA (object)), "grl-tracker-source") == 0) { + totem_grilo_thumbnail_media (GRL_MEDIA (object), + cancellable, + thumbnail_media_cb, + task); + return; + } + } else if (GRL_IS_SOURCE (object)) { GIcon *icon; icon = grl_source_get_icon (GRL_SOURCE (object)); @@ -295,7 +319,8 @@ totem_grilo_get_icon (GrlMedia *media, if (GRL_IS_MEDIA_BOX (media)) { return g_object_ref (icons[ICON_BOX]); } else { - if (grl_media_get_thumbnail (media)) { + if (grl_media_get_thumbnail (media) || + g_strcmp0 (grl_media_get_source (media), "grl-tracker-source") == 0) { *thumbnailing = TRUE; return g_object_ref (icons[ICON_VIDEO_THUMBNAILING]); } else { |