]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
signalmodule: Add signal-emitter declaration if needed
authorRico Tzschichholz <ricotz@ubuntu.com>
Tue, 7 Mar 2017 15:30:03 +0000 (16:30 +0100)
committerRico Tzschichholz <ricotz@ubuntu.com>
Tue, 7 Mar 2017 15:30:03 +0000 (16:30 +0100)
https://bugzilla.gnome.org/show_bug.cgi?id=779609

codegen/valagsignalmodule.vala

index 2a1afd0d7e26a593446799c6096cde8fd6fb9814..6e87a42cc6489e9ec180a0031c6d99ace7ad67be 100644 (file)
@@ -544,7 +544,16 @@ public class Vala.GSignalModule : GObjectModule {
 
                                set_cvalue (expr, ccall);
                        } else if (get_signal_has_emitter (sig)) {
-                               var ccall = new CCodeFunctionCall (new CCodeIdentifier ("%s_%s".printf (get_ccode_lower_case_name (cl), sig.name)));
+                               string emitter_func;
+                               if (sig.emitter != null) {
+                                       if (!sig.external_package && expr.source_reference.file != sig.source_reference.file) {
+                                               generate_method_declaration (sig.emitter, cfile);
+                                       }
+                                       emitter_func = get_ccode_lower_case_name (sig.emitter);
+                               } else {
+                                       emitter_func = "%s_%s".printf (get_ccode_lower_case_name (cl), sig.name);
+                               }
+                               var ccall = new CCodeFunctionCall (new CCodeIdentifier (emitter_func));
 
                                ccall.add_argument (pub_inst);
                                set_cvalue (expr, ccall);