void rygel_didl_lite_writer_serialize (RygelDIDLLiteWriter* self, RygelMediaObject* media_object, GError** error) { GError * _inner_error_; g_return_if_fail (self != NULL); g_return_if_fail (media_object != NULL); _inner_error_ = NULL; if (RYGEL_IS_MEDIA_ITEM (media_object)) { rygel_didl_lite_writer_serialize_item (self, RYGEL_MEDIA_ITEM (media_object), &_inner_error_); if (_inner_error_ != NULL) { g_propagate_error (error, _inner_error_); return; } } else { if (RYGEL_IS_MEDIA_CONTAINER (media_object)) { rygel_didl_lite_writer_serialize_container (self, RYGEL_MEDIA_CONTAINER (media_object), &_inner_error_); if (_inner_error_ != NULL) { g_propagate_error (error, _inner_error_); return; } } else { _inner_error_ = g_error_new_literal (RYGEL_DIDL_LITE_WRITER_ERROR, RYGEL_DIDL_LITE_WRITER_ERROR_UNSUPPORTED_OBJECT, "Unable to serialize unsupported object"); if (_inner_error_ != NULL) { g_propagate_error (error, _inner_error_); return; } } } }
static void rygel_media_export_harvester_on_file_added (RygelMediaExportHarvester *self, GFile *file) { gchar *uri; GError *error; RygelMediaExportMediaCache *cache; GFileInfo *info; RygelMediaExportHarvesterPrivate *priv; g_return_if_fail (RYGEL_MEDIA_EXPORT_IS_HARVESTER (self)); g_return_if_fail (G_IS_FILE (file)); uri = g_file_get_uri (file); g_debug ("Filesystem events settled for %s, scheduling extraction…", uri); g_free (uri); cache = rygel_media_export_media_cache_get_default (); priv = self->priv; error = NULL; info = g_file_query_info (file, G_FILE_ATTRIBUTE_STANDARD_TYPE "," G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE, G_FILE_QUERY_INFO_NONE, priv->cancellable, &error); if (error) { g_warning ("Failed to query file: %s", error->message); g_error_free (error); error = NULL; goto out; } if (g_file_info_get_file_type (info) == G_FILE_TYPE_DIRECTORY || rygel_media_export_harvester_is_eligible (info)) { RygelMediaContainer *parent_container = NULL; GFile *current = g_object_ref (file); GeeAbstractCollection *abstract_locations = GEE_ABSTRACT_COLLECTION (priv->locations); do { GFile *parent = g_file_get_parent (current); gchar *id = rygel_media_export_media_cache_get_id (parent); RygelMediaObject *tmp_object = rygel_media_export_media_cache_get_object (cache, id, &error); if (error) { g_warning (_("Error fetching object '%s' from database: %s"), id, error->message); g_free (id); g_object_unref (parent); g_error_free (error); error = NULL; goto inner_out; } g_free (id); if (parent_container) { g_object_unref (parent_container); parent_container = NULL; } if (RYGEL_IS_MEDIA_CONTAINER (tmp_object)) { parent_container = RYGEL_MEDIA_CONTAINER (tmp_object); } else { g_object_unref (tmp_object); } if (!parent_container) { g_object_ref (parent); g_object_unref (current); current = parent; } g_object_unref (parent); if (!parent_container && gee_abstract_collection_contains (abstract_locations, current)) { RygelMediaObject* another_object = rygel_media_export_media_cache_get_object (cache, RYGEL_MEDIA_EXPORT_ROOT_CONTAINER_FILESYSTEM_FOLDER_ID, &error); if (error) { goto inner_out; } if (parent_container) { g_object_unref (parent_container); parent_container = NULL; } if (RYGEL_IS_MEDIA_CONTAINER (another_object)) { parent_container = RYGEL_MEDIA_CONTAINER (another_object); } break; } } while (!parent_container); rygel_media_export_harvester_schedule (self, current, parent_container, NULL); inner_out: g_object_unref (current); if (parent_container) { g_object_unref (parent_container); } } else { gchar* file_uri = g_file_get_uri (file); g_debug ("%s is not eligible for extraction", file_uri); g_free (file_uri); } out: g_object_unref (cache); }
static gboolean rygel_media_container_search_in_children_co (RygelMediaContainerSearchInChildrenData* data) { switch (data->_state_) { case 0: goto _state_0; case 30: goto _state_30; default: g_assert_not_reached (); } _state_0: { data->_result_ = gee_array_list_new (RYGEL_TYPE_MEDIA_OBJECT, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL); { data->_child_it = gee_iterable_iterator ((GeeIterable*) data->children); #line 245 "rygel-media-container.vala" while (TRUE) { #line 245 "rygel-media-container.vala" if (!gee_iterator_next (data->_child_it)) { #line 245 "rygel-media-container.vala" break; #line 1033 "rygel-media-container.c" } data->child = (RygelMediaObject*) gee_iterator_get (data->_child_it); #line 246 "rygel-media-container.vala" if (RYGEL_IS_MEDIA_CONTAINER (data->child)) { #line 1038 "rygel-media-container.c" data->container = _g_object_ref0 ((data->_tmp0_ = data->child, RYGEL_IS_MEDIA_CONTAINER (data->_tmp0_) ? ((RygelMediaContainer*) data->_tmp0_) : NULL)); data->_state_ = 30; rygel_media_container_search (data->container, data->expression, (guint) 0, data->limit, data->cancellable, rygel_media_container_search_in_children_ready, data); return FALSE; _state_30: data->child_result = rygel_media_container_search_finish (data->container, data->_res_, &data->tmp, &data->_inner_error_); if (data->_inner_error_ != NULL) { g_simple_async_result_set_from_error (data->_async_result, data->_inner_error_); g_error_free (data->_inner_error_); _g_object_unref0 (data->container); _g_object_unref0 (data->child); _g_object_unref0 (data->_child_it); _g_object_unref0 (data->_result_); { if (data->_state_ == 0) { g_simple_async_result_complete_in_idle (data->_async_result); } else { g_simple_async_result_complete (data->_async_result); } g_object_unref (data->_async_result); return FALSE; } } #line 256 "rygel-media-container.vala" gee_abstract_collection_add_all ((GeeAbstractCollection*) data->_result_, (GeeCollection*) data->child_result); #line 1064 "rygel-media-container.c" _g_object_unref0 (data->container); _g_object_unref0 (data->child_result); } #line 259 "rygel-media-container.vala" if (data->limit > 0) { #line 259 "rygel-media-container.vala" data->_tmp1_ = gee_collection_get_size ((GeeCollection*) data->_result_) >= data->limit; #line 1072 "rygel-media-container.c" } else { #line 259 "rygel-media-container.vala" data->_tmp1_ = FALSE; #line 1076 "rygel-media-container.c" } #line 259 "rygel-media-container.vala" if (data->_tmp1_) { #line 1080 "rygel-media-container.c" _g_object_unref0 (data->child); #line 260 "rygel-media-container.vala" break; #line 1084 "rygel-media-container.c" } _g_object_unref0 (data->child); } _g_object_unref0 (data->_child_it); } data->result = (GeeList*) data->_result_; { if (data->_state_ == 0) { g_simple_async_result_complete_in_idle (data->_async_result); } else { g_simple_async_result_complete (data->_async_result); } g_object_unref (data->_async_result); return FALSE; } _g_object_unref0 (data->_result_); } { if (data->_state_ == 0) { g_simple_async_result_complete_in_idle (data->_async_result); } else { g_simple_async_result_complete (data->_async_result); } g_object_unref (data->_async_result); return FALSE; } }