[gcr] gcr: Make the mock prompter's response handling more extensible
- From: Stefan Walter <stefw src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gcr] gcr: Make the mock prompter's response handling more extensible
- Date: Mon, 22 Oct 2012 14:01:40 +0000 (UTC)
commit 2cd55348bedf2779076471fa972f8d26e8e0ffce
Author: Stef Walter <stefw gnome org>
Date: Fri Sep 21 09:17:12 2012 +0200
gcr: Make the mock prompter's response handling more extensible
* So that we can handle closing of prompts in later commits
* Also makes it more predictable as to which context the response
is sent from.
https://bugzilla.gnome.org/show_bug.cgi?id=678611
gcr/gcr-mock-prompter.c | 43 ++++++++++++++++++++++++-------------------
1 files changed, 24 insertions(+), 19 deletions(-)
---
diff --git a/gcr/gcr-mock-prompter.c b/gcr/gcr-mock-prompter.c
index 3e14403..1ef31e0 100644
--- a/gcr/gcr-mock-prompter.c
+++ b/gcr/gcr-mock-prompter.c
@@ -396,10 +396,10 @@ _gcr_mock_prompt_class_init (GcrMockPromptClass *klass)
}
static gboolean
-on_timeout_complete_response (gpointer data)
+on_timeout_complete (gpointer data)
{
GSimpleAsyncResult *res = data;
- g_simple_async_result_complete_in_idle (res);
+ g_simple_async_result_complete (res);
return FALSE;
}
@@ -410,8 +410,10 @@ gcr_mock_prompt_confirm_async (GcrPrompt *prompt,
gpointer user_data)
{
GcrMockPrompt *self = GCR_MOCK_PROMPT (prompt);
+ GSourceFunc complete_func = on_timeout_complete;
GSimpleAsyncResult *res;
MockResponse *response;
+ GSource *source;
guint delay_msec;
g_mutex_lock (running->mutex);
@@ -435,17 +437,17 @@ gcr_mock_prompt_confirm_async (GcrPrompt *prompt,
g_simple_async_result_set_op_res_gboolean (res, response->proceed);
}
- mock_response_free (response);
+ if (delay_msec > 0)
+ source = g_timeout_source_new (delay_msec);
+ else
+ source = g_idle_source_new ();
- if (delay_msec > 0) {
- g_assert (!self->delay_source);
- self->delay_source = g_timeout_add_full (G_PRIORITY_DEFAULT, delay_msec,
- on_timeout_complete_response,
- g_object_ref (res), g_object_unref);
- } else {
- on_timeout_complete_response (res);
- }
+ g_assert (!self->delay_source);
+ g_source_set_callback (source, complete_func, g_object_ref (res), g_object_unref);
+ self->delay_source = g_source_attach (source, g_main_context_get_thread_default ());
+ g_source_unref (source);
+ mock_response_free (response);
g_object_unref (res);
}
@@ -484,8 +486,10 @@ gcr_mock_prompt_password_async (GcrPrompt *prompt,
gpointer user_data)
{
GcrMockPrompt *self = GCR_MOCK_PROMPT (prompt);
+ GSourceFunc complete_func = on_timeout_complete;
GSimpleAsyncResult *res;
MockResponse *response;
+ GSource *source;
guint delay_msec;
g_mutex_lock (running->mutex);
@@ -517,14 +521,15 @@ gcr_mock_prompt_password_async (GcrPrompt *prompt,
mock_response_free (response);
- if (delay_msec > 0) {
- g_assert (!self->delay_source);
- self->delay_source = g_timeout_add_full (G_PRIORITY_DEFAULT, delay_msec,
- on_timeout_complete_response,
- g_object_ref (res), g_object_unref);
- } else {
- on_timeout_complete_response (res);
- }
+ if (delay_msec > 0)
+ source = g_timeout_source_new (delay_msec);
+ else
+ source = g_idle_source_new ();
+
+ g_assert (!self->delay_source);
+ g_source_set_callback (source, complete_func, g_object_ref (res), g_object_unref);
+ self->delay_source = g_source_attach (source, g_main_context_get_thread_default ());
+ g_source_unref (source);
g_object_unref (res);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]