From ce5d5b1a625350a8514143ebbac09b30e1a9ef2b Mon Sep 17 00:00:00 2001 From: Gergely Polonkai Date: Sun, 6 Jan 2013 04:31:11 +0100 Subject: [PATCH] Added the state-change signal for WmudClient --- wmud/wmudclient.c | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/wmud/wmudclient.c b/wmud/wmudclient.c index 740e0a3..8601f6e 100644 --- a/wmud/wmudclient.c +++ b/wmud/wmudclient.c @@ -35,6 +35,7 @@ enum { SIG_CONNECTED, SIG_NET_HUP, SIG_NET_RECV, + SIG_STATE_CHANGE, SIG_LAST }; @@ -136,6 +137,22 @@ wmud_client_class_init(WmudClientClass *klass) NULL, G_TYPE_NONE, 0, NULL); + /** + * WmudClient::state-change: + * @client: The client emitting the signal + * @old_state: The state which we are changing from. + * @new_state: The state which we are changing to. + * + * Emitted when the client changes state + **/ + signals[SIG_STATE_CHANGE] = g_signal_new("state-change", + WMUD_TYPE_CLIENT, + G_SIGNAL_RUN_LAST, + 0, + NULL, NULL, + NULL, + G_TYPE_NONE, 2, WMUD_TYPE_CLIENT_STATE, WMUD_TYPE_CLIENT_STATE); + g_type_class_add_private(klass, sizeof(WmudClientPrivate)); } @@ -256,9 +273,13 @@ wmud_client_get_state(WmudClient *self) } void -wmud_client_set_state(WmudClient *self, WmudClientState state) +wmud_client_set_state(WmudClient *self, WmudClientState new_state) { - self->priv->state = state; + WmudClientState old_state = self->priv->state; + + self->priv->state = new_state; + + g_signal_emit_by_name(self, "state-change", old_state, new_state, G_TYPE_NONE); } void