vala r1037 - in trunk: . gobject vala



Author: juergbi
Date: Sat Feb 23 17:23:53 2008
New Revision: 1037
URL: http://svn.gnome.org/viewvc/vala?rev=1037&view=rev

Log:
2008-02-23  Juerg Billeter  <j bitron ch>

	* vala/valaformalparameter.vala,
	  gobject/valaccodeassignmentbinding.vala,
	  gobject/valaccodegeneratorinvocationexpression.vala: fix D-Bus
	  method calls and signal handlers, fixes bug 516194


Modified:
   trunk/ChangeLog
   trunk/gobject/valaccodeassignmentbinding.vala
   trunk/gobject/valaccodegeneratorinvocationexpression.vala
   trunk/vala/valaformalparameter.vala

Modified: trunk/gobject/valaccodeassignmentbinding.vala
==============================================================================
--- trunk/gobject/valaccodeassignmentbinding.vala	(original)
+++ trunk/gobject/valaccodeassignmentbinding.vala	Sat Feb 23 17:23:53 2008
@@ -196,7 +196,12 @@
 		}
 
 		// third resp. sixth argument: handler
-		ccall.add_argument (new CCodeCastExpression (new CCodeIdentifier (generate_signal_handler_wrapper (m, sig)), "GCallback"));
+		if (sig is DBusSignal) {
+			// signal handler wrappers not used for D-Bus signals
+			ccall.add_argument (new CCodeCastExpression (new CCodeIdentifier (m.get_cname ()), "GCallback"));
+		} else {
+			ccall.add_argument (new CCodeCastExpression (new CCodeIdentifier (generate_signal_handler_wrapper (m, sig)), "GCallback"));
+		}
 
 		if (m.instance) {
 			// g_signal_connect_object or g_signal_handlers_disconnect_matched
@@ -249,7 +254,7 @@
 					first = false;
 					continue;
 				}
-				sig.add_parameter (param);
+				sig.add_parameter (param.copy ());
 			}
 
 			sig.accept (codegen);

Modified: trunk/gobject/valaccodegeneratorinvocationexpression.vala
==============================================================================
--- trunk/gobject/valaccodegeneratorinvocationexpression.vala	(original)
+++ trunk/gobject/valaccodegeneratorinvocationexpression.vala	Sat Feb 23 17:23:53 2008
@@ -169,8 +169,8 @@
 						cb_fun.block.add_statement (cdecl);
 						cend_call.add_argument (get_dbus_array_type (array_type));
 						cend_call.add_argument (new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, new CCodeIdentifier (param.name)));
-						creply_call.add_argument (new CCodeMemberAccess.pointer (new CCodeIdentifier (param.name), "len"));
 						creply_call.add_argument (new CCodeMemberAccess.pointer (new CCodeIdentifier (param.name), "data"));
+						creply_call.add_argument (new CCodeMemberAccess.pointer (new CCodeIdentifier (param.name), "len"));
 					} else {
 						var cdecl = new CCodeDeclaration (param.type_reference.get_cname ());
 						cdecl.add_declarator (new CCodeVariableDeclarator (param.name));
@@ -218,7 +218,7 @@
 					break;
 				}
 				
-				carg_map.set (get_param_pos (i - 0.1), new CCodeIdentifier (arg.static_type.data_type.get_type_id ()));
+				carg_map.set (get_param_pos (i - 0.1, true), new CCodeIdentifier (arg.static_type.data_type.get_type_id ()));
 			}
 
 			CCodeExpression cexpr = (CCodeExpression) arg.ccodenode;
@@ -365,7 +365,7 @@
 			var dbus_attr = dbus_iface.get_attribute ("DBusInterface");
 			carg_map.set (get_param_pos (-1), new CCodeConstant ("\"%s\"".printf (dbus_attr.get_string ("name"))));
 		} else if (m is DBusMethod) {
-			carg_map.set (get_param_pos (-1), new CCodeIdentifier ("G_TYPE_INVALID"));
+			carg_map.set (get_param_pos (-1, true), new CCodeIdentifier ("G_TYPE_INVALID"));
 		}
 
 		if (expr.can_fail && !(m is DBusMethod)) {

Modified: trunk/vala/valaformalparameter.vala
==============================================================================
--- trunk/vala/valaformalparameter.vala	(original)
+++ trunk/vala/valaformalparameter.vala	Sat Feb 23 17:23:53 2008
@@ -148,4 +148,13 @@
 			}
 		}
 	}
+
+	public FormalParameter copy () {
+		if (!ellipsis) {
+			var result = new FormalParameter (name, type_reference, source_reference);
+			return result;
+		} else {
+			return new FormalParameter.with_ellipsis ();
+		}
+	}
 }



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]