[vala] Support owned keyword for delegates called once
- From: Luca Bruno <lucabru src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [vala] Support owned keyword for delegates called once
- Date: Tue, 4 Jun 2013 20:50:19 +0000 (UTC)
commit d74c5fb0654ef5985d763a7847c8013de781aac3
Author: Luca Bruno <lucabru src gnome org>
Date: Tue Jun 4 22:46:20 2013 +0200
Support owned keyword for delegates called once
codegen/valaccodedelegatemodule.vala | 2 +-
codegen/valaccodemethodcallmodule.vala | 2 +-
vala/valamethod.vala | 1 +
3 files changed, 3 insertions(+), 2 deletions(-)
---
diff --git a/codegen/valaccodedelegatemodule.vala b/codegen/valaccodedelegatemodule.vala
index 2fba0f4..959bdcb 100644
--- a/codegen/valaccodedelegatemodule.vala
+++ b/codegen/valaccodedelegatemodule.vala
@@ -408,7 +408,7 @@ public class Vala.CCodeDelegateModule : CCodeArrayModule {
ccode.add_declaration (return_type_cname, new CCodeVariableDeclarator ("result",
ccall));
}
- if (d.has_target && !dt.value_owned && dt.is_called_once) {
+ if (d.has_target /* TODO: && dt.value_owned */ && dt.is_called_once) {
// destroy notify "self" after the call
CCodeExpression? destroy_notify = null;
if (m.closure) {
diff --git a/codegen/valaccodemethodcallmodule.vala b/codegen/valaccodemethodcallmodule.vala
index b30422a..5d968b0 100644
--- a/codegen/valaccodemethodcallmodule.vala
+++ b/codegen/valaccodemethodcallmodule.vala
@@ -364,7 +364,7 @@ public class Vala.CCodeMethodCallModule : CCodeAssignmentModule {
cexpr = new
CCodeConditionalExpression (new CCodeBinaryExpression (CCodeBinaryOperator.EQUALITY, cexpr, new
CCodeIdentifier ("NULL")), new CCodeIdentifier ("NULL"), closure_new);
} else {
carg_map.set (get_param_pos
(get_ccode_delegate_target_pos (param)), delegate_target);
- if (deleg_type.value_owned) {
+ if (deleg_type.value_owned &&
!deleg_type.is_called_once) {
assert
(delegate_target_destroy_notify != null);
carg_map.set (get_param_pos
(get_ccode_delegate_target_pos (param) + 0.01), delegate_target_destroy_notify);
}
diff --git a/vala/valamethod.vala b/vala/valamethod.vala
index a7e3dcb..5e5f826 100644
--- a/vala/valamethod.vala
+++ b/vala/valamethod.vala
@@ -894,6 +894,7 @@ public class Vala.Method : Subroutine {
var callback_type = new DelegateType ((Delegate) glib_ns.scope.lookup ("AsyncReadyCallback"));
callback_type.nullable = true;
+ callback_type.value_owned = true;
callback_type.is_called_once = true;
var callback_param = new Parameter ("_callback_", callback_type);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]