Fix connecting to the same dynamic signal multiple times, patch by Yu
authorJuerg Billeter <j@bitron.ch>
Sat, 10 May 2008 21:09:10 +0000 (21:09 +0000)
committerJürg Billeter <juergbi@src.gnome.org>
Sat, 10 May 2008 21:09:10 +0000 (21:09 +0000)
2008-05-10  Juerg Billeter  <j@bitron.ch>

* gobject/valaccodedynamicsignalbinding.vala:

Fix connecting to the same dynamic signal multiple times,
patch by Yu Feng, fixes bug 532053

svn path=/trunk/; revision=1355

ChangeLog
gobject/valaccodedynamicsignalbinding.vala

index edeec6f..b86ccf5 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
 2008-05-10  Jürg Billeter  <j@bitron.ch>
 
+       * gobject/valaccodedynamicsignalbinding.vala:
+
+       Fix connecting to the same dynamic signal multiple times,
+       patch by Yu Feng, fixes bug 532053
+
+2008-05-10  Jürg Billeter  <j@bitron.ch>
+
        * vala/valaparser.vala:
 
        Fix `namespace Foo.Bar {...}' parsing, fixes bug 531379
index 3a46ff9..ae7253d 100644 (file)
@@ -29,6 +29,8 @@ using Gee;
 public class Vala.CCodeDynamicSignalBinding : CCodeBinding {
        public Signal node { get; set; }
 
+       private static int signal_wrapper_id;
+
        public CCodeDynamicSignalBinding (CCodeGenerator codegen, DynamicSignal node) {
                this.node = node;
                this.codegen = codegen;
@@ -41,7 +43,7 @@ public class Vala.CCodeDynamicSignalBinding : CCodeBinding {
                var dynamic_signal = (DynamicSignal) node;
 
                if (connect_wrapper_name == null) {
-                       connect_wrapper_name = "_dynamic_%s_connect".printf (node.name);
+                       connect_wrapper_name = "_dynamic_%s%d_connect".printf (node.name, signal_wrapper_id++);
                        var func = new CCodeFunction (connect_wrapper_name, "void");
                        func.add_parameter (new CCodeFormalParameter ("obj", "gpointer"));
                        func.add_parameter (new CCodeFormalParameter ("signal_name", "const char *"));
@@ -68,7 +70,7 @@ public class Vala.CCodeDynamicSignalBinding : CCodeBinding {
                var dynamic_signal = (DynamicSignal) node;
 
                if (disconnect_wrapper_name == null) {
-                       disconnect_wrapper_name = "_dynamic_%s_disconnect".printf (node.name);
+                       disconnect_wrapper_name = "_dynamic_%s%d_disconnect".printf (node.name, signal_wrapper_id++);
                        var func = new CCodeFunction (disconnect_wrapper_name, "void");
                        func.add_parameter (new CCodeFormalParameter ("obj", "gpointer"));
                        func.add_parameter (new CCodeFormalParameter ("signal_name", "const char *"));