diff options
author | John (J5) Palmieri <johnp@redhat.com> | 2011-10-14 17:31:28 -0400 |
---|---|---|
committer | John (J5) Palmieri <johnp@redhat.com> | 2011-10-14 17:31:28 -0400 |
commit | 1a4ecfcb905300e52ba782eee089dc66da75b3fe (patch) | |
tree | 3a627faf1cb94ca897c4e052456290460f8e17da /tests | |
parent | 52e12815dc33af5dab95c08d29396c48ed8055c9 (diff) | |
download | gobject-introspection-1a4ecfcb905300e52ba782eee089dc66da75b3fe.tar.gz |
add test for checking refcounting of signals with transfer none object params
Diffstat (limited to 'tests')
-rw-r--r-- | tests/scanner/Regress-1.0-expected.gir | 19 | ||||
-rw-r--r-- | tests/scanner/regress.c | 30 | ||||
-rw-r--r-- | 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 7d106f66..d8cbd69c 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 d44e692b..d1efb2e3 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 4afb9b06..fa6e7c27 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); |