it is possible to temporary disable the signal emission.
Your would normally connect you signal using some thng like this.
gulong handler_id = g_signal_connect(instance, detailed_signal, c_handler, data)
You can then block and unblock by using the following functions.
void g_signal_handler_block (gpointer instance,
void g_signal_handler_unblock (gpointer instance,
More information can be found at the on-line documentation http://developer.gnome.org/gobject/stable/gobject-Signals.html#g-signal-handler-block