static gboolean rygel_external_container_real_get_children_co (RygelExternalContainerGetChildrenData* data) {
	switch (data->_state_) {
		case 0:
		goto _state_0;
		case 1:
		goto _state_1;
		default:
		g_assert_not_reached ();
	}
	_state_0:
	{
		data->media_objects = gee_array_list_new (RYGEL_TYPE_MEDIA_OBJECT, (GBoxedCopyFunc) g_object_ref, g_object_unref, NULL);
#line 83 "rygel-external-container.vala"
		gee_abstract_collection_add_all ((GeeAbstractCollection*) data->media_objects, (GeeCollection*) data->self->priv->containers);
#line 388 "rygel-external-container.c"
		data->obj_paths = (data->_tmp1_ = rygel_external_media_container_get_items (data->self->actual_container, &data->_tmp0_), data->obj_paths_length1 = data->_tmp0_, data->_obj_paths_size_ = data->obj_paths_length1, data->_tmp1_);
		data->factory = rygel_external_item_factory_new ();
		{
			data->obj_path_collection = data->obj_paths;
			data->obj_path_collection_length1 = data->obj_paths_length1;
			for (data->obj_path_it = 0; data->obj_path_it < data->obj_paths_length1; data->obj_path_it = data->obj_path_it + 1) {
				data->obj_path = g_strdup (data->obj_path_collection[data->obj_path_it]);
				{
					{
						data->_state_ = 1;
						rygel_external_item_factory_create_for_path (data->factory, data->obj_path, data->self, rygel_external_container_get_children_ready, data);
						return FALSE;
						_state_1:
						data->item = rygel_external_item_factory_create_for_path_finish (data->factory, data->_res_, &data->_inner_error_);
						if (data->_inner_error_ != NULL) {
							goto __catch1_g_error;
						}
#line 92 "rygel-external-container.vala"
						gee_abstract_collection_add ((GeeAbstractCollection*) data->media_objects, (RygelMediaObject*) data->item);
#line 408 "rygel-external-container.c"
						_g_object_unref0 (data->item);
					}
					goto __finally1;
					__catch1_g_error:
					{
						data->err = data->_inner_error_;
						data->_inner_error_ = NULL;
						{
#line 94 "rygel-external-container.vala"
							g_warning ("rygel-external-container.vala:94: Error initializable item at '%s': %s" \
". Ignoring..", data->obj_path, data->err->message);
#line 419 "rygel-external-container.c"
							_g_error_free0 (data->err);
						}
					}
					__finally1:
					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_free0 (data->obj_path);
						_g_object_unref0 (data->media_objects);
						data->obj_paths = (_vala_array_free (data->obj_paths, data->obj_paths_length1, (GDestroyNotify) g_free), NULL);
						_rygel_external_item_factory_unref0 (data->factory);
						{
							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_free0 (data->obj_path);
				}
			}
		}
		data->stop = data->offset + data->max_count;
#line 101 "rygel-external-container.vala"
		data->stop = CLAMP (data->stop, (guint) 0, (guint) gee_collection_get_size ((GeeCollection*) data->media_objects));
#line 448 "rygel-external-container.c"
		data->result = gee_abstract_list_slice ((GeeAbstractList*) data->media_objects, (gint) data->offset, (gint) data->stop);
		_g_object_unref0 (data->media_objects);
		data->obj_paths = (_vala_array_free (data->obj_paths, data->obj_paths_length1, (GDestroyNotify) g_free), NULL);
		_rygel_external_item_factory_unref0 (data->factory);
		{
			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->media_objects);
		data->obj_paths = (_vala_array_free (data->obj_paths, data->obj_paths_length1, (GDestroyNotify) g_free), NULL);
		_rygel_external_item_factory_unref0 (data->factory);
	}
	{
		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;
	}
}
Beispiel #2
0
static gboolean rygel_media_container_real_search_co (RygelMediaContainerSearchData* data) {
	switch (data->_state_) {
		case 0:
		goto _state_0;
		case 25:
		goto _state_25;
		case 26:
		goto _state_26;
		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->_state_ = 25;
		rygel_media_container_get_children (data->self, (guint) 0, (guint) data->self->child_count, data->cancellable, rygel_media_container_search_ready, data);
		return FALSE;
		_state_25:
		data->children = rygel_media_container_get_children_finish (data->self, data->_res_, &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->_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 108 "rygel-media-container.vala"
		if (data->offset > 0) {
#line 108 "rygel-media-container.vala"
			data->_tmp0_ = TRUE;
#line 454 "rygel-media-container.c"
		} else {
#line 108 "rygel-media-container.vala"
			data->_tmp0_ = data->max_count > 0;
#line 458 "rygel-media-container.c"
		}
#line 108 "rygel-media-container.vala"
		if (data->_tmp0_) {
#line 109 "rygel-media-container.vala"
			data->limit = data->offset + data->max_count;
#line 464 "rygel-media-container.c"
		} else {
#line 111 "rygel-media-container.vala"
			data->limit = (guint) 0;
#line 468 "rygel-media-container.c"
		}
		{
			data->_child_it = gee_iterable_iterator ((GeeIterable*) data->children);
#line 115 "rygel-media-container.vala"
			while (TRUE) {
#line 115 "rygel-media-container.vala"
				if (!gee_iterator_next (data->_child_it)) {
#line 115 "rygel-media-container.vala"
					break;
#line 478 "rygel-media-container.c"
				}
				data->child = (RygelMediaObject*) gee_iterator_get (data->_child_it);
#line 116 "rygel-media-container.vala"
				if (data->expression == NULL) {
#line 116 "rygel-media-container.vala"
					data->_tmp1_ = TRUE;
#line 485 "rygel-media-container.c"
				} else {
#line 116 "rygel-media-container.vala"
					data->_tmp1_ = rygel_search_expression_satisfied_by (data->expression, data->child);
#line 489 "rygel-media-container.c"
				}
#line 116 "rygel-media-container.vala"
				if (data->_tmp1_) {
#line 117 "rygel-media-container.vala"
					gee_abstract_collection_add ((GeeAbstractCollection*) data->_result_, data->child);
#line 495 "rygel-media-container.c"
				}
#line 120 "rygel-media-container.vala"
				if (data->limit > 0) {
#line 120 "rygel-media-container.vala"
					data->_tmp2_ = gee_collection_get_size ((GeeCollection*) data->_result_) >= data->limit;
#line 501 "rygel-media-container.c"
				} else {
#line 120 "rygel-media-container.vala"
					data->_tmp2_ = FALSE;
#line 505 "rygel-media-container.c"
				}
#line 120 "rygel-media-container.vala"
				if (data->_tmp2_) {
#line 509 "rygel-media-container.c"
					_g_object_unref0 (data->child);
#line 121 "rygel-media-container.vala"
					break;
#line 513 "rygel-media-container.c"
				}
				_g_object_unref0 (data->child);
			}
			_g_object_unref0 (data->_child_it);
		}
#line 125 "rygel-media-container.vala"
		if (data->limit == 0) {
#line 125 "rygel-media-container.vala"
			data->_tmp3_ = TRUE;
#line 523 "rygel-media-container.c"
		} else {
#line 125 "rygel-media-container.vala"
			data->_tmp3_ = gee_collection_get_size ((GeeCollection*) data->_result_) < data->limit;
#line 527 "rygel-media-container.c"
		}
#line 125 "rygel-media-container.vala"
		if (data->_tmp3_) {
#line 127 "rygel-media-container.vala"
			if (data->limit == 0) {
#line 127 "rygel-media-container.vala"
				data->_tmp4_ = (guint) 0;
#line 535 "rygel-media-container.c"
			} else {
#line 127 "rygel-media-container.vala"
				data->_tmp4_ = data->limit - gee_collection_get_size ((GeeCollection*) data->_result_);
#line 539 "rygel-media-container.c"
			}
			data->child_limit = data->_tmp4_;
			data->_state_ = 26;
			rygel_media_container_search_in_children (data->self, data->expression, data->children, data->child_limit, data->cancellable, rygel_media_container_search_ready, data);
			return FALSE;
			_state_26:
			data->child_results = rygel_media_container_search_in_children_finish (data->self, data->_res_, &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->_result_);
				_g_object_unref0 (data->children);
				{
					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 133 "rygel-media-container.vala"
			gee_abstract_collection_add_all ((GeeAbstractCollection*) data->_result_, (GeeCollection*) data->child_results);
#line 564 "rygel-media-container.c"
			_g_object_unref0 (data->child_results);
		}
#line 137 "rygel-media-container.vala"
		if (gee_collection_get_size ((GeeCollection*) data->_result_) > 0) {
#line 137 "rygel-media-container.vala"
			data->_tmp5_ = data->limit > 0;
#line 571 "rygel-media-container.c"
		} else {
#line 137 "rygel-media-container.vala"
			data->_tmp5_ = FALSE;
#line 575 "rygel-media-container.c"
		}
#line 137 "rygel-media-container.vala"
		if (data->_tmp5_) {
#line 141 "rygel-media-container.vala"
			data->start = CLAMP (data->offset, (guint) 0, (guint) (gee_collection_get_size ((GeeCollection*) data->_result_) - 1));
#line 143 "rygel-media-container.vala"
			if (data->max_count != 0) {
#line 143 "rygel-media-container.vala"
				data->_tmp6_ = (data->start + data->max_count) <= gee_collection_get_size ((GeeCollection*) data->_result_);
#line 585 "rygel-media-container.c"
			} else {
#line 143 "rygel-media-container.vala"
				data->_tmp6_ = FALSE;
#line 589 "rygel-media-container.c"
			}
#line 143 "rygel-media-container.vala"
			if (data->_tmp6_) {
#line 144 "rygel-media-container.vala"
				data->stop = data->start + data->max_count;
#line 595 "rygel-media-container.c"
			} else {
#line 146 "rygel-media-container.vala"
				data->stop = (guint) gee_collection_get_size ((GeeCollection*) data->_result_);
#line 599 "rygel-media-container.c"
			}
#line 151 "rygel-media-container.vala"
			data->total_matches = (guint) 0;
#line 603 "rygel-media-container.c"
			data->result = gee_abstract_list_slice ((GeeAbstractList*) data->_result_, (gint) data->start, (gint) data->stop);
			_g_object_unref0 (data->_result_);
			_g_object_unref0 (data->children);
			{
				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;
			}
		} else {
#line 155 "rygel-media-container.vala"
			data->total_matches = (guint) gee_collection_get_size ((GeeCollection*) data->_result_);
#line 619 "rygel-media-container.c"
			data->result = (GeeList*) data->_result_;
			_g_object_unref0 (data->children);
			{
				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_);
		_g_object_unref0 (data->children);
	}
	{
		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;
	}
}