vala r2132 - in trunk: . gobject



Author: juergbi
Date: Tue Dec  9 20:34:11 2008
New Revision: 2132
URL: http://svn.gnome.org/viewvc/vala?rev=2132&view=rev

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

	* gobject/valagsignalmodule.vala:

	Do not use g_signal_connect_object if the target object is not a
	GObject, fixes bug 539614


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

Modified: trunk/gobject/valagsignalmodule.vala
==============================================================================
--- trunk/gobject/valagsignalmodule.vala	(original)
+++ trunk/gobject/valagsignalmodule.vala	Tue Dec  9 20:34:11 2008
@@ -435,6 +435,7 @@
 		var sig = (Signal) assignment.left.symbol_reference;
 		
 		var m = (Method) assignment.right.symbol_reference;
+		var target_type_symbol = m.parent_symbol as TypeSymbol;
 
 		string connect_func;
 		bool disconnect = false;
@@ -443,8 +444,13 @@
 			if (sig is DynamicSignal) {
 				connect_func = head.get_dynamic_signal_connect_wrapper_name ((DynamicSignal) sig);
 			} else {
-				connect_func = "g_signal_connect_object";
-				if (m.binding != MemberBinding.INSTANCE) {
+				if (m.binding == MemberBinding.INSTANCE) {
+					if (target_type_symbol != null && target_type_symbol.is_subtype_of (gobject_type)) {
+						connect_func = "g_signal_connect_object";
+					} else {
+						connect_func = "g_signal_connect";
+					}
+				} else {
 					connect_func = "g_signal_connect";
 				}
 			}
@@ -553,7 +559,8 @@
 			} else if (assignment.right is LambdaExpression) {
 				ccall.add_argument (new CCodeIdentifier ("self"));
 			}
-			if (!disconnect && !(sig is DynamicSignal)) {
+			if (!disconnect && !(sig is DynamicSignal)
+			    && target_type_symbol != null && target_type_symbol.is_subtype_of (gobject_type)) {
 				// g_signal_connect_object
 
 				// fifth argument: connect_flags



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