mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-08-31 21:34:12 +02:00
gio: add g_async_result_is_tagged()
Rather than doing a two step first-check-the-GAsyncResult-subtype-then- check-the-tag, add a GAsyncResult-level method so that you can do them both at once, simplifying the code for "short-circuit" async return values where the vmethod never gets called. https://bugzilla.gnome.org/show_bug.cgi?id=661767
This commit is contained in:
@@ -400,21 +400,16 @@ g_file_enumerator_next_files_finish (GFileEnumerator *enumerator,
|
||||
GError **error)
|
||||
{
|
||||
GFileEnumeratorClass *class;
|
||||
GSimpleAsyncResult *simple;
|
||||
|
||||
g_return_val_if_fail (G_IS_FILE_ENUMERATOR (enumerator), NULL);
|
||||
g_return_val_if_fail (G_IS_ASYNC_RESULT (result), NULL);
|
||||
|
||||
if (g_async_result_legacy_propagate_error (result, error))
|
||||
return NULL;
|
||||
|
||||
if (G_IS_SIMPLE_ASYNC_RESULT (result))
|
||||
{
|
||||
simple = G_SIMPLE_ASYNC_RESULT (result);
|
||||
|
||||
else if (g_async_result_is_tagged (result, g_file_enumerator_next_files_async))
|
||||
{
|
||||
/* Special case read of 0 files */
|
||||
if (g_simple_async_result_get_source_tag (simple) == g_file_enumerator_next_files_async)
|
||||
return NULL;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
class = G_FILE_ENUMERATOR_GET_CLASS (enumerator);
|
||||
|
Reference in New Issue
Block a user