var state_is_not_zero = new CCodeBinaryExpression (CCodeBinaryOperator.INEQUALITY, state, zero);
ccode.open_if (state_is_not_zero);
- var task_complete = new CCodeFunctionCall (new CCodeIdentifier ("g_task_get_completed"));
- task_complete.add_argument (async_result_expr);
- var task_is_complete = new CCodeBinaryExpression (CCodeBinaryOperator.INEQUALITY, task_complete, new CCodeConstant ("TRUE"));
+ CCodeBinaryExpression task_is_complete;
+
+ if (context.require_glib_version (2, 44)) {
+ var task_complete = new CCodeFunctionCall (new CCodeIdentifier ("g_task_get_completed"));
+ task_complete.add_argument (async_result_expr);
+ task_is_complete = new CCodeBinaryExpression (CCodeBinaryOperator.INEQUALITY, task_complete, new CCodeConstant ("TRUE"));
+ } else {
+ var task_complete = new CCodeMemberAccess.pointer (new CCodeIdentifier ("_data_"), "_task_complete_");
+ task_is_complete = new CCodeBinaryExpression (CCodeBinaryOperator.INEQUALITY, task_complete, new CCodeConstant ("TRUE"));
+ }
ccode.open_while (task_is_complete);
var task_context = new CCodeFunctionCall (new CCodeIdentifier ("g_task_get_context"));
if (context.require_glib_version (2, 36)) {
data.add_field ("GTask*", "_async_result");
+ if (!context.require_glib_version (2, 44)) {
+ data.add_field ("gboolean", "_task_complete_");
+ }
} else {
data.add_field ("GSimpleAsyncResult*", "_async_result");
}
if (!context.require_glib_version (2, 36)) {
attach_data_call = new CCodeFunctionCall (new CCodeIdentifier ("g_simple_async_result_set_op_res_gpointer"));
} else {
+ if (!context.require_glib_version (2, 44)) {
+ var task_completed_var = new CCodeMemberAccess.pointer (data_var, "_task_complete_");
+ var callback = new CCodeIdentifier ("_callback_");
+ var callback_is_null = new CCodeBinaryExpression (CCodeBinaryOperator.EQUALITY, callback, new CCodeConstant ("NULL"));
+
+ ccode.open_if (callback_is_null);
+ ccode.add_assignment (task_completed_var, new CCodeConstant ("TRUE"));
+ ccode.close ();
+ }
+
attach_data_call = new CCodeFunctionCall (new CCodeIdentifier ("g_task_set_task_data"));
}
return_default_value (return_type);
ccode.close ();
}
+
+ if (!context.require_glib_version (2, 44)) {
+ var task_completed_var = new CCodeMemberAccess.pointer (data_var, "_task_complete_");
+ ccode.add_assignment (task_completed_var, new CCodeConstant ("TRUE"));
+ }
} else {
var simple_async_result_cast = new CCodeFunctionCall (new CCodeIdentifier ("G_SIMPLE_ASYNC_RESULT"));
simple_async_result_cast.add_argument (new CCodeIdentifier ("_res_"));
ccode.add_assignment (new CCodeMemberAccess.pointer (new CCodeIdentifier ("_data_"), "_source_object_"), new CCodeIdentifier ("source_object"));
ccode.add_assignment (new CCodeMemberAccess.pointer (new CCodeIdentifier ("_data_"), "_res_"), new CCodeIdentifier ("_res_"));
+ if (context.require_glib_version (2, 36) && !context.require_glib_version (2, 44)) {
+ ccode.add_assignment (new CCodeMemberAccess.pointer (new CCodeIdentifier ("_data_"), "_task_complete_"), new CCodeConstant ("TRUE"));
+ }
+
var ccall = new CCodeFunctionCall (new CCodeIdentifier (get_ccode_real_name (m) + "_co"));
ccall.add_argument (new CCodeIdentifier ("_data_"));
ccode.add_expression (ccall);