summaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
authorRoss Lagerwall <rosslagerwall@gmail.com>2015-03-08 00:38:15 +0000
committerRoss Lagerwall <rosslagerwall@gmail.com>2015-03-14 15:15:29 +0000
commita4c4ae6006cecc2bfe1519a669d4e15ff856e82f (patch)
treed25af99cf369bfc89af029b2ec8f4110111463cd /common
parentb534d043a71e33d109ef867863b78b5036a0ba8c (diff)
downloadgvfs-a4c4ae6006cecc2bfe1519a669d4e15ff856e82f.tar.gz
dnssd: Run GSimpleAsyncResult completion in idle
g_simple_async_result_complete should only be used from the thread on which the callback should be invoked. Also, the gvfs job threads do not have their own GMainContexts which causes an assertion failure [1] when invoking g_simple_async_result_complete. Instead, use g_simple_async_result_complete_in_idle(). [1] (process:11772): GLib-CRITICAL **: g_main_context_push_thread_default: assertion 'acquired_context' failed https://bugzilla.gnome.org/show_bug.cgi?id=629345
Diffstat (limited to 'common')
-rw-r--r--common/gvfsdnssdresolver.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/common/gvfsdnssdresolver.c b/common/gvfsdnssdresolver.c
index 59f640f4..a63cb45d 100644
--- a/common/gvfsdnssdresolver.c
+++ b/common/gvfsdnssdresolver.c
@@ -1066,7 +1066,7 @@ service_resolver_changed (GVfsDnsSdResolver *resolver,
if (resolver->is_resolved)
{
g_simple_async_result_set_op_res_gboolean (data->simple, TRUE);
- g_simple_async_result_complete (data->simple);
+ g_simple_async_result_complete_in_idle (data->simple);
resolve_data_free (data);
}
else
@@ -1089,7 +1089,7 @@ service_resolver_changed (GVfsDnsSdResolver *resolver,
data->resolver->service_type,
data->resolver->service_name,
data->resolver->domain);
- g_simple_async_result_complete (data->simple);
+ g_simple_async_result_complete_in_idle (data->simple);
resolve_data_free (data);
}
}
@@ -1134,7 +1134,7 @@ service_resolver_timed_out (ResolveData *data)
data->resolver->domain);
}
- g_simple_async_result_complete (data->simple);
+ g_simple_async_result_complete_in_idle (data->simple);
data->timeout_id = 0;
resolve_data_free (data);
return FALSE;
@@ -1175,7 +1175,7 @@ g_vfs_dns_sd_resolver_resolve (GVfsDnsSdResolver *resolver,
if (resolver->is_resolved)
{
g_simple_async_result_set_op_res_gboolean (simple, TRUE);
- g_simple_async_result_complete (simple);
+ g_simple_async_result_complete_in_idle (simple);
g_object_unref (simple);
goto out;
}