[vala] GAsync: Support calling async methods that finish immediately



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]