GParamSpec avec g_object_connect / g_signal_connect
Bonjour,
J'ai suivie le manuel pour créer un GObject avec des propriétés : https://www.freedesktop.org/software...roperties.html
J’essaie d'écouter le signal "notify::papa-number"
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
static void
on_event(GObject *obj, GParamSpec *pspec, gpointer user_data) {
if (pspec) {
g_print("on_event was emited by g_object_set_property()\n");
} else {
g_print("on_event was emited by g_signal_emit[_by_name]()\n");
}
}
int
main (int argc, char *argv[])
{
MamanBar *obj = maman_bar_new();
g_object_connect(obj, "signal::notify::papa-number", G_CALLBACK(on_event), NULL, NULL);
//g_signal_connect(obj, "notify::papa-number", G_CALLBACK(on_event), NULL);
GValue value = G_VALUE_INIT;
g_value_init(&value, G_TYPE_UCHAR);
g_value_set_uchar(&value, 7);
g_object_set_property(obj, "papa-number", &value);
g_signal_emit_by_name(obj, "notify::papa-number"/*, pspec */, NULL);// Why, in on_event, parameter pspec of GParamSpec is null
return 0;
} |
A l'execution, j'obtiens :
Code:
1 2 3
|
on_event was emited by g_object_set_property()
on_event was emited by g_signal_emit[_by_name] |
Pouvez-vous m'expliquer pourquoi le paramètre pspec est nul quand j'utilise g_signal_emit ? Est-ce un bug de Glib 2.56.4 ? Une incompréhension de ma part ?
Cdlt,