seed r361 - trunk/libseed



Author: racarr
Date: Fri Nov 28 05:17:26 2008
New Revision: 361
URL: http://svn.gnome.org/viewvc/seed?rev=361&view=rev

Log:
Non floating objects from fake constructors (Clutter.EffectTemplate._new) were getting an extra reference.


Modified:
   trunk/libseed/seed-engine.c

Modified: trunk/libseed/seed-engine.c
==============================================================================
--- trunk/libseed/seed-engine.c	(original)
+++ trunk/libseed/seed-engine.c	Fri Nov 28 05:17:26 2008
@@ -31,8 +31,6 @@
 
 JSContextGroupRef context_group;
 
-GParamSpec **global_prop_cache;
-
 gchar *glib_message = 0;
 
 guint seed_debug_flags = 0;		/* global seed debug flag */
@@ -356,6 +354,7 @@
 		{
 			GIBaseInfo *interface;
 			GIInfoType type;
+			gboolean sunk = TRUE;
 
 			if (tag == GI_TYPE_TAG_INTERFACE)
 			{
@@ -375,13 +374,20 @@
 						interface_type == GI_INFO_TYPE_INTERFACE)
 					{
 						if (G_IS_OBJECT(retval.v_pointer))
+						{
+							sunk =
+							g_object_is_floating(G_OBJECT(retval.v_pointer));
 							g_object_ref_sink(G_OBJECT(retval.v_pointer));
+						}
 					}
 
 				}
 			}
 			retval_ref =
 				seed_gi_argument_make_js(ctx, &retval, type_info, exception);
+
+			if (!sunk)
+				g_object_unref(G_OBJECT(retval.v_pointer));
 			
 			seed_gi_release_arg(
 				g_callable_info_get_caller_owns((GICallableInfo*) info),



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