vala r2127 - in trunk: . gobject



Author: juergbi
Date: Tue Dec  9 13:38:19 2008
New Revision: 2127
URL: http://svn.gnome.org/viewvc/vala?rev=2127&view=rev

Log:
2008-12-09  JÃrg Billeter  <j bitron ch>

	* gobject/valadbusclientmodule.vala:
	* gobject/valagsignalmodule.vala:

	Use specialized dbus-glib types for signals in D-Bus servers


Modified:
   trunk/ChangeLog
   trunk/gobject/valadbusclientmodule.vala
   trunk/gobject/valagsignalmodule.vala

Modified: trunk/gobject/valadbusclientmodule.vala
==============================================================================
--- trunk/gobject/valadbusclientmodule.vala	(original)
+++ trunk/gobject/valadbusclientmodule.vala	Tue Dec  9 13:38:19 2008
@@ -467,7 +467,7 @@
 		}
 	}
 
-	CCodeExpression get_dbus_g_type (DataType data_type) {
+	public override CCodeExpression get_dbus_g_type (DataType data_type) {
 		if (data_type is ArrayType) {
 			var array_type = data_type as ArrayType;
 			if (array_type.element_type.data_type == string_type.data_type) {

Modified: trunk/gobject/valagsignalmodule.vala
==============================================================================
--- trunk/gobject/valagsignalmodule.vala	(original)
+++ trunk/gobject/valagsignalmodule.vala	Tue Dec  9 13:38:19 2008
@@ -382,7 +382,11 @@
 
 		csignew.add_argument (new CCodeConstant ("%d".printf (params_len)));
 		foreach (FormalParameter param in params) {
-			if (param.parameter_type.is_array ()) {
+			if (type.get_attribute ("DBus") != null) {
+				// workaround for dbus-glib based D-Bus servers
+				// drop when bug 560034 has been fixed
+				csignew.add_argument (get_dbus_g_type (param.parameter_type));
+			} else if (param.parameter_type.is_array ()) {
 				if (((ArrayType) param.parameter_type).element_type.data_type == string_type.data_type) {
 					csignew.add_argument (new CCodeConstant ("G_TYPE_STRV"));
 				} else {
@@ -403,6 +407,10 @@
 		return csignew;
 	}
 
+	public virtual CCodeExpression get_dbus_g_type (DataType data_type) {
+		return new CCodeConstant (data_type.data_type.get_type_id ());
+	}
+
 	public override void visit_element_access (ElementAccess expr) {
 		if (expr.container is MemberAccess && expr.container.symbol_reference is Signal) {
 			// detailed signal emission



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