GObjectClass parent_class;
void (*signal) (ComplexObject *obj);
+ void (*signal_empty) (ComplexObject *obj);
};
static void complex_test_iface_init (gpointer g_iface,
enum {
COMPLEX_SIGNAL,
+ COMPLEX_SIGNAL_EMPTY,
+ COMPLEX_SIGNAL_GENERIC,
+ COMPLEX_SIGNAL_GENERIC_EMPTY,
COMPLEX_LAST_SIGNAL
};
object_class->finalize = complex_object_finalize;
object_class->set_property = complex_object_set_property;
object_class->get_property = complex_object_get_property;
+
class->signal = complex_object_real_signal;
complex_signals[COMPLEX_SIGNAL] =
g_cclosure_marshal_VOID__VOID,
G_TYPE_NONE, 0);
+ complex_signals[COMPLEX_SIGNAL_EMPTY] =
+ g_signal_new ("signal-empty",
+ G_TYPE_FROM_CLASS (object_class),
+ G_SIGNAL_RUN_FIRST,
+ G_STRUCT_OFFSET (ComplexObjectClass, signal_empty),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+
+ complex_signals[COMPLEX_SIGNAL_GENERIC] =
+ g_signal_new ("signal-generic",
+ G_TYPE_FROM_CLASS (object_class),
+ G_SIGNAL_RUN_FIRST,
+ G_STRUCT_OFFSET (ComplexObjectClass, signal),
+ NULL, NULL,
+ NULL,
+ G_TYPE_NONE, 0);
+ complex_signals[COMPLEX_SIGNAL_GENERIC_EMPTY] =
+ g_signal_new ("signal-generic-empty",
+ G_TYPE_FROM_CLASS (object_class),
+ G_SIGNAL_RUN_FIRST,
+ G_STRUCT_OFFSET (ComplexObjectClass, signal_empty),
+ NULL, NULL,
+ NULL,
+ G_TYPE_NONE, 0);
+
g_object_class_install_property (object_class,
PROP_VAL1,
g_param_spec_int ("val1",
struct EmissionTest {
GObject *object;
int n_checks;
+ int signal_id;
};
static gpointer
data = g_new0 (struct EmissionTest, 1);
data->object = g_object_new (COMPLEX_TYPE_OBJECT, NULL);
-
+ data->signal_id = complex_signals[GPOINTER_TO_INT (test->extra_data)];
return data;
}
for (i = 0; i < data->n_checks; i++)
g_signal_emit (object,
- complex_signals[COMPLEX_SIGNAL],
+ data->signal_id,
0);
}
data = g_new0 (struct EmissionTest, 1);
data->object = g_object_new (COMPLEX_TYPE_OBJECT, NULL);
+ data->signal_id = complex_signals[GPOINTER_TO_INT (test->extra_data)];
g_signal_connect (data->object, "signal",
G_CALLBACK (test_emission_handled_handler),
NULL);
+ g_signal_connect (data->object, "signal-empty",
+ G_CALLBACK (test_emission_handled_handler),
+ NULL);
+ g_signal_connect (data->object, "signal-generic",
+ G_CALLBACK (test_emission_handled_handler),
+ NULL);
+ g_signal_connect (data->object, "signal-generic-empty",
+ G_CALLBACK (test_emission_handled_handler),
+ NULL);
return data;
}
for (i = 0; i < data->n_checks; i++)
g_signal_emit (object,
- complex_signals[COMPLEX_SIGNAL],
+ data->signal_id,
0);
}
},
{
"emit-unhandled",
- NULL,
+ GINT_TO_POINTER (COMPLEX_SIGNAL),
+ test_emission_unhandled_setup,
+ test_emission_unhandled_init,
+ test_emission_unhandled_run,
+ test_emission_unhandled_finish,
+ test_emission_unhandled_teardown,
+ test_emission_unhandled_print_result
+ },
+ {
+ "emit-unhandled-empty",
+ GINT_TO_POINTER (COMPLEX_SIGNAL_EMPTY),
+ test_emission_unhandled_setup,
+ test_emission_unhandled_init,
+ test_emission_unhandled_run,
+ test_emission_unhandled_finish,
+ test_emission_unhandled_teardown,
+ test_emission_unhandled_print_result
+ },
+ {
+ "emit-unhandled-generic",
+ GINT_TO_POINTER (COMPLEX_SIGNAL_GENERIC),
+ test_emission_unhandled_setup,
+ test_emission_unhandled_init,
+ test_emission_unhandled_run,
+ test_emission_unhandled_finish,
+ test_emission_unhandled_teardown,
+ test_emission_unhandled_print_result
+ },
+ {
+ "emit-unhandled-generic-empty",
+ GINT_TO_POINTER (COMPLEX_SIGNAL_GENERIC_EMPTY),
test_emission_unhandled_setup,
test_emission_unhandled_init,
test_emission_unhandled_run,
},
{
"emit-handled",
- NULL,
+ GINT_TO_POINTER (COMPLEX_SIGNAL),
+ test_emission_handled_setup,
+ test_emission_handled_init,
+ test_emission_handled_run,
+ test_emission_handled_finish,
+ test_emission_handled_teardown,
+ test_emission_handled_print_result
+ },
+ {
+ "emit-handled-empty",
+ GINT_TO_POINTER (COMPLEX_SIGNAL_EMPTY),
+ test_emission_handled_setup,
+ test_emission_handled_init,
+ test_emission_handled_run,
+ test_emission_handled_finish,
+ test_emission_handled_teardown,
+ test_emission_handled_print_result
+ },
+ {
+ "emit-handled-generic",
+ GINT_TO_POINTER (COMPLEX_SIGNAL_GENERIC),
+ test_emission_handled_setup,
+ test_emission_handled_init,
+ test_emission_handled_run,
+ test_emission_handled_finish,
+ test_emission_handled_teardown,
+ test_emission_handled_print_result
+ },
+ {
+ "emit-handled-generic-empty",
+ GINT_TO_POINTER (COMPLEX_SIGNAL_GENERIC_EMPTY),
test_emission_handled_setup,
test_emission_handled_init,
test_emission_handled_run,