... and use it where appropriate. Saves an extra GError copy.
Bug #633686.
g_simple_async_result_set_error_va
g_simple_async_report_error_in_idle
g_simple_async_report_gerror_in_idle
+g_simple_async_report_take_gerror_in_idle
<SUBSECTION Standard>
GSimpleAsyncResultClass
G_SIMPLE_ASYNC_RESULT
if (!g_input_stream_set_pending (G_INPUT_STREAM (stream), &error))
{
- g_simple_async_report_gerror_in_idle (G_OBJECT (stream),
+ g_simple_async_report_take_gerror_in_idle (G_OBJECT (stream),
callback,
user_data,
error);
- g_error_free (error);
return;
}
if (!g_input_stream_set_pending (input_stream, &error))
{
- g_simple_async_report_gerror_in_idle (G_OBJECT (stream),
+ g_simple_async_report_take_gerror_in_idle (G_OBJECT (stream),
callback,
user_data,
error);
- g_error_free (error);
return;
}
if (!g_io_stream_set_pending (io_stream, &error))
{
- g_simple_async_report_gerror_in_idle (G_OBJECT (stream),
+ g_simple_async_report_take_gerror_in_idle (G_OBJECT (stream),
callback,
user_data,
error);
- g_error_free (error);
return;
}
if (!g_output_stream_set_pending (output_stream, &error))
{
- g_simple_async_report_gerror_in_idle (G_OBJECT (stream),
+ g_simple_async_report_take_gerror_in_idle (G_OBJECT (stream),
callback,
user_data,
error);
- g_error_free (error);
return;
}
if (!g_input_stream_set_pending (stream, &error))
{
- g_simple_async_report_gerror_in_idle (G_OBJECT (stream),
+ g_simple_async_report_take_gerror_in_idle (G_OBJECT (stream),
callback,
user_data,
error);
- g_error_free (error);
return;
}
if (!g_input_stream_set_pending (stream, &error))
{
- g_simple_async_report_gerror_in_idle (G_OBJECT (stream),
+ g_simple_async_report_take_gerror_in_idle (G_OBJECT (stream),
callback,
user_data,
error);
- g_error_free (error);
return;
}
if (!g_input_stream_set_pending (stream, &error))
{
- g_simple_async_report_gerror_in_idle (G_OBJECT (stream),
+ g_simple_async_report_take_gerror_in_idle (G_OBJECT (stream),
callback,
user_data,
error);
- g_error_free (error);
return;
}
g_simple_async_result_is_valid
g_simple_async_report_error_in_idle
g_simple_async_report_gerror_in_idle
+g_simple_async_report_take_gerror_in_idle
#endif
#endif
if (!g_io_stream_set_pending (stream, &error))
{
- g_simple_async_report_gerror_in_idle (G_OBJECT (stream),
+ g_simple_async_report_take_gerror_in_idle (G_OBJECT (stream),
callback,
user_data,
error);
- g_error_free (error);
return;
}
if (!g_output_stream_set_pending (stream, &error))
{
- g_simple_async_report_gerror_in_idle (G_OBJECT (stream),
+ g_simple_async_report_take_gerror_in_idle (G_OBJECT (stream),
callback,
user_data,
error);
- g_error_free (error);
return;
}
if (!g_output_stream_set_pending (stream, &error))
{
- g_simple_async_report_gerror_in_idle (G_OBJECT (stream),
+ g_simple_async_report_take_gerror_in_idle (G_OBJECT (stream),
callback,
user_data,
error);
- g_error_free (error);
return;
}
if (!g_output_stream_set_pending (stream, &error))
{
- g_simple_async_report_gerror_in_idle (G_OBJECT (stream),
+ g_simple_async_report_take_gerror_in_idle (G_OBJECT (stream),
callback,
user_data,
error);
- g_error_free (error);
return;
}
if (!g_output_stream_set_pending (stream, &error))
{
- g_simple_async_report_gerror_in_idle (G_OBJECT (stream),
+ g_simple_async_report_take_gerror_in_idle (G_OBJECT (stream),
callback,
user_data,
error);
- g_error_free (error);
return;
}
g_simple_async_report_gerror_in_idle (GObject *object,
GAsyncReadyCallback callback,
gpointer user_data,
- GError *error)
+ const GError *error)
{
GSimpleAsyncResult *simple;
g_simple_async_result_complete_in_idle (simple);
g_object_unref (simple);
}
+
+/**
+ * g_simple_async_report_take_gerror_in_idle:
+ * @object: a #GObject.
+ * @callback: a #GAsyncReadyCallback.
+ * @user_data: user data passed to @callback.
+ * @error: the #GError to report
+ *
+ * Reports an error in an idle function. Similar to
+ * g_simple_async_report_gerror_in_idle(), but takes over the caller's
+ * ownership of @error, so the caller does not have to free it any more.
+ *
+ * Since: 2.28
+ **/
+void
+g_simple_async_report_take_gerror_in_idle (GObject *object,
+ GAsyncReadyCallback callback,
+ gpointer user_data,
+ GError *error)
+{
+ GSimpleAsyncResult *simple;
+
+ g_return_if_fail (G_IS_OBJECT (object));
+ g_return_if_fail (error != NULL);
+
+ simple = g_simple_async_result_new_take_error (object,
+ callback,
+ user_data,
+ error);
+ g_simple_async_result_complete_in_idle (simple);
+ g_object_unref (simple);
+}
void g_simple_async_report_gerror_in_idle (GObject *object,
GAsyncReadyCallback callback,
gpointer user_data,
- GError *error);
+ const GError *error);
+void g_simple_async_report_take_gerror_in_idle (GObject *object,
+ GAsyncReadyCallback callback,
+ gpointer user_data,
+ GError *error);
G_END_DECLS
&error);
if (connectable == NULL)
{
- g_simple_async_report_gerror_in_idle (G_OBJECT (client),
+ g_simple_async_report_take_gerror_in_idle (G_OBJECT (client),
callback, user_data, error);
- g_error_free (error);
}
else
{
connectable = g_network_address_parse_uri (uri, default_port, &error);
if (connectable == NULL)
{
- g_simple_async_report_gerror_in_idle (G_OBJECT (client),
+ g_simple_async_report_take_gerror_in_idle (G_OBJECT (client),
callback, user_data, error);
- g_error_free (error);
}
else
{
if (class->close_fn &&
!class->close_fn (stream, cancellable, &error))
{
- g_simple_async_report_gerror_in_idle (G_OBJECT (stream),
+ g_simple_async_report_take_gerror_in_idle (G_OBJECT (stream),
callback, user_data,
error);
- g_error_free (error);
return;
}
if (!check_listener (listener, &error))
{
- g_simple_async_report_gerror_in_idle (G_OBJECT (listener),
+ g_simple_async_report_take_gerror_in_idle (G_OBJECT (listener),
callback, user_data,
error);
- g_error_free (error);
return;
}