static void resolve_disc_urls (BrowseData *data) { g_assert (data->media == NULL); if (data->media_list == NULL || g_cancellable_is_cancelled (data->cancellable)) { /* If we got cancelled, there's still some media * to resolve here */ if (data->media_list) { g_list_free_full (data->media_list, g_object_unref); } /* No media left, we're done */ data->bs->callback (data->bs->source, data->bs->operation_id, NULL, 0, data->bs->user_data, NULL); g_object_unref (data->cancellable); g_object_unref (data->parser); g_free (data); return; } data->media = data->media_list->data; data->media_list = g_list_delete_link (data->media_list, data->media_list); totem_pl_parser_parse_async (data->parser, grl_media_get_id (data->media), FALSE, data->cancellable, (GAsyncReadyCallback) parsed_finished, data); }
static void on_g_volume_monitor_added_event (GVolumeMonitor *monitor, GMount *mount, GrlOpticalMediaSource *source) { GrlMedia **media; TotemPlParser *pl; if (ignore_mount (mount)) return; media = (GrlMedia **) g_new0 (gpointer, 1); *media = create_media_from_mount (mount); if (*media == NULL) { g_free (media); return; } pl = totem_pl_parser_new (); g_object_set_data (G_OBJECT (pl), "media", media); g_object_set (pl, "recurse", FALSE, NULL); g_signal_connect (G_OBJECT (pl), "entry-parsed", G_CALLBACK (entry_parsed_cb), media); totem_pl_parser_parse_async (pl, grl_media_get_id (*media), FALSE, source->priv->cancellable, (GAsyncReadyCallback) parsed_finished_item, source); }