[vala] GAsync: Support calling async methods that finish immediately
- From: Jürg Billeter <juergbi src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [vala] GAsync: Support calling async methods that finish immediately
- Date: Mon, 1 Feb 2010 19:45:53 +0000 (UTC)
commit ae233a60fe6d1448deece4c138e39dfeeab8b8b7
Author: Jürg Billeter <j bitron ch>
Date: Mon Feb 1 20:03:38 2010 +0100
GAsync: Support calling async methods that finish immediately
Fixes bug 608708.
codegen/valaccodemethodcallmodule.vala | 5 ++++-
1 files changed, 4 insertions(+), 1 deletions(-)
---
diff --git a/codegen/valaccodemethodcallmodule.vala b/codegen/valaccodemethodcallmodule.vala
index d97b4cf..5c9e3c6 100644
--- a/codegen/valaccodemethodcallmodule.vala
+++ b/codegen/valaccodemethodcallmodule.vala
@@ -657,10 +657,13 @@ internal class Vala.CCodeMethodCallModule : CCodeAssignmentModule {
if (pre_statement_fragment == null) {
pre_statement_fragment = new CCodeFragment ();
}
- pre_statement_fragment.append (new CCodeExpressionStatement (async_call));
+ // set state before calling async function to support immediate callbacks
int state = next_coroutine_state++;
pre_statement_fragment.append (new CCodeExpressionStatement (new CCodeAssignment (new CCodeMemberAccess.pointer (new CCodeIdentifier ("data"), "_state_"), new CCodeConstant (state.to_string ()))));
+
+ pre_statement_fragment.append (new CCodeExpressionStatement (async_call));
+
pre_statement_fragment.append (new CCodeReturnStatement (new CCodeConstant ("FALSE")));
pre_statement_fragment.append (new CCodeCaseStatement (new CCodeConstant (state.to_string ())));
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]