[gobject-introspection] add test for checking refcounting of signals with transfer none object params



commit 1a4ecfcb905300e52ba782eee089dc66da75b3fe
Author: John (J5) Palmieri <johnp redhat com>
Date:   Fri Oct 14 17:31:28 2011 -0400

    add test for checking refcounting of signals with transfer none object params

 tests/scanner/Regress-1.0-expected.gir |   19 +++++++++++++++++++
 tests/scanner/regress.c                |   30 ++++++++++++++++++++++++++++++
 tests/scanner/regress.h                |    1 +
 3 files changed, 50 insertions(+), 0 deletions(-)
---
diff --git a/tests/scanner/Regress-1.0-expected.gir b/tests/scanner/Regress-1.0-expected.gir
index 7d106f6..d8cbd69 100644
--- a/tests/scanner/Regress-1.0-expected.gir
+++ b/tests/scanner/Regress-1.0-expected.gir
@@ -515,6 +515,12 @@ case.</doc>
           </parameter>
         </parameters>
       </method>
+      <method name="emit_sig_with_obj"
+              c:identifier="regress_test_obj_emit_sig_with_obj">
+        <return-value transfer-ownership="none">
+          <type name="none" c:type="void"/>
+        </return-value>
+      </method>
       <method name="forced_method" c:identifier="regress_forced_method">
         <return-value transfer-ownership="none">
           <type name="none" c:type="void"/>
@@ -927,6 +933,19 @@ TpAccount::status-changed</doc>
           </parameter>
         </parameters>
       </glib:signal>
+      <glib:signal name="sig-with-obj" when="last">
+        <doc xml:whitespace="preserve">Test transfer none GObject as a param (tests refcounting).
+Use with regress_test_obj_emit_sig_with_obj</doc>
+        <return-value transfer-ownership="none">
+          <type name="none"/>
+        </return-value>
+        <parameters>
+          <parameter name="obj" transfer-ownership="none">
+            <doc xml:whitespace="preserve">A newly created RegressTestObj</doc>
+            <type name="GObject.Object"/>
+          </parameter>
+        </parameters>
+      </glib:signal>
       <glib:signal name="sig-with-strv" when="last">
         <doc xml:whitespace="preserve">Test GStrv as a param.</doc>
         <return-value transfer-ownership="none">
diff --git a/tests/scanner/regress.c b/tests/scanner/regress.c
index d44e692..d1efb2e 100644
--- a/tests/scanner/regress.c
+++ b/tests/scanner/regress.c
@@ -1815,6 +1815,7 @@ enum {
   REGRESS_TEST_OBJ_SIGNAL_SIG_NEW_WITH_ARRAY_PROP,
   REGRESS_TEST_OBJ_SIGNAL_SIG_WITH_HASH_PROP,
   REGRESS_TEST_OBJ_SIGNAL_SIG_WITH_STRV,
+  REGRESS_TEST_OBJ_SIGNAL_SIG_WITH_OBJ,
   REGRESS_TEST_OBJ_SIGNAL_FIRST,
   REGRESS_TEST_OBJ_SIGNAL_CLEANUP,
   REGRESS_TEST_OBJ_SIGNAL_ALL,
@@ -1914,6 +1915,26 @@ regress_test_obj_class_init (RegressTestObjClass *klass)
 		  1,
 		  G_TYPE_STRV);
 
+   /**
+   * RegressTestObj::sig-with-obj:
+   * @self: an object
+   * @obj: (transfer none): A newly created RegressTestObj
+   *
+   * Test transfer none GObject as a param (tests refcounting).
+   * Use with regress_test_obj_emit_sig_with_obj
+   */
+  regress_test_obj_signals[REGRESS_TEST_OBJ_SIGNAL_SIG_WITH_OBJ] =
+    g_signal_new ("sig-with-obj",
+		  G_TYPE_FROM_CLASS (gobject_class),
+		  G_SIGNAL_RUN_LAST,
+		  0,
+		  NULL,
+		  NULL,
+		  g_cclosure_marshal_VOID__OBJECT,
+		  G_TYPE_NONE,
+		  1,
+		  G_TYPE_OBJECT);
+
   regress_test_obj_signals[REGRESS_TEST_OBJ_SIGNAL_FIRST] =
     g_signal_new ("first",
 		  G_TYPE_FROM_CLASS (gobject_class),
@@ -2108,6 +2129,15 @@ regress_test_obj_set_bare (RegressTestObj *obj, GObject *bare)
     g_object_ref (obj->bare);
 }
 
+void
+regress_test_obj_emit_sig_with_obj (RegressTestObj *obj)
+{
+    RegressTestObj *obj_param = regress_constructor ();
+    g_object_set (obj_param, "int", 3, NULL);
+    g_signal_emit_by_name (obj, "sig-with-obj", obj_param);
+    g_object_unref (obj_param);
+}
+
 int
 regress_test_obj_instance_method (RegressTestObj *obj)
 {
diff --git a/tests/scanner/regress.h b/tests/scanner/regress.h
index 4afb9b0..fa6e7c2 100644
--- a/tests/scanner/regress.h
+++ b/tests/scanner/regress.h
@@ -359,6 +359,7 @@ RegressTestObj*   regress_test_obj_new (RegressTestObj *obj);
 RegressTestObj*   regress_constructor (void);
 RegressTestObj*   regress_test_obj_new_from_file (const char *x, GError **error);
 void       regress_test_obj_set_bare (RegressTestObj *obj, GObject *bare);
+void       regress_test_obj_emit_sig_with_obj (RegressTestObj *obj);
 int        regress_test_obj_instance_method (RegressTestObj *obj);
 double     regress_test_obj_static_method (int x);
 void       regress_forced_method (RegressTestObj *obj);



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