diff options
Diffstat (limited to 'tests/scanner/regress.c')
-rw-r--r-- | tests/scanner/regress.c | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/tests/scanner/regress.c b/tests/scanner/regress.c index eca7cdd4..bc04079c 100644 --- a/tests/scanner/regress.c +++ b/tests/scanner/regress.c @@ -2300,6 +2300,7 @@ enum { REGRESS_TEST_OBJ_SIGNAL_SIG_WITH_UINT64_PROP, REGRESS_TEST_OBJ_SIGNAL_SIG_WITH_INTARRAY_RET, REGRESS_TEST_OBJ_SIGNAL_SIG_WITH_INOUT_INT, + REGRESS_TEST_OBJ_SIGNAL_SIG_WITH_GERROR, N_REGRESS_TEST_OBJ_SIGNALS }; @@ -2571,6 +2572,26 @@ regress_test_obj_class_init (RegressTestObjClass *klass) 1, G_TYPE_POINTER); + /** + * RegressTestObj::sig-with-gerror: + * @self: The object that emitted the signal + * @error: (nullable) (type GLib.Error): A #GError if something went wrong + * internally in @self. You must not free this #GError. + * + * This signal is modeled after #GstDiscoverer::discovered, and is added to + * exercise the path of a #GError being marshalled as a boxed type instead of + * an exception in the introspected language. + * + * Use via regress_test_obj_emit_sig_with_error() and + * regress_test_obj_emit_sig_with_null_error(), or emit via the introspected + * language. + */ + regress_test_obj_signals[REGRESS_TEST_OBJ_SIGNAL_SIG_WITH_GERROR] = + g_signal_new ("sig-with-gerror", G_TYPE_FROM_CLASS (klass), + G_SIGNAL_RUN_LAST, 0, NULL, NULL, + g_cclosure_marshal_generic, G_TYPE_NONE, 1, + G_TYPE_ERROR | G_SIGNAL_TYPE_STATIC_SCOPE); + gobject_class->set_property = regress_test_obj_set_property; gobject_class->get_property = regress_test_obj_get_property; gobject_class->dispose = regress_test_obj_dispose; @@ -2872,6 +2893,29 @@ regress_test_obj_emit_sig_with_inout_int (RegressTestObj *obj) g_assert_cmpint (inout, ==, 43); } +/** + * regress_test_obj_emit_sig_with_error: + * @self: The object to emit the signal. + */ +void +regress_test_obj_emit_sig_with_error (RegressTestObj *self) +{ + GError *err = g_error_new_literal (G_IO_ERROR, G_IO_ERROR_FAILED, + "Something failed"); + g_signal_emit_by_name (self, "sig-with-gerror", err); + g_error_free (err); +} + +/** + * regress_test_obj_emit_sig_with_null_error: + * @self: The object to emit the signal. + */ +void +regress_test_obj_emit_sig_with_null_error (RegressTestObj *self) +{ + g_signal_emit_by_name (self, "sig-with-gerror", NULL); +} + int regress_test_obj_instance_method (RegressTestObj *obj G_GNUC_UNUSED) { |