On Fri, Jul 31, 2009 at 6:44 PM, machinegodzilla<machinegodzilla@xxxxxxxxx> wrote: > > Thank you Yeti for you reply. Now I can see that I should've added some > context to my questions. > > What I mean by a default handler is a piece of code that gets executed when > an object emits a signal, and which code you don't have to write yourself > but is there, somewhere already (as opposed to a custom handler that I'd > attach to an object with g_signal_connect()). I am currently playing with > GStreamer framework, where I create elements that emit signals in response > to particular situations, e.g. disconnection from other elements. Then a > thing that I call "a default handler" catches those signals and does > something accordingly. > > For example, I can create an element of type GstBin: > [ > http://gstreamer.freedesktop.org/data/doc/gstreamer/stable/gstreamer/html/GstBin.html > ] > in which I can place other elements. Every time an elements is placed in a > bin an "element-added" signal is emitted: > [ > http://gstreamer.freedesktop.org/data/doc/gstreamer/stable/gstreamer/html/GstBin.html#GstBin-element-added > ]. > Now what I want to do is to block/freeze/temporarily disable the handler > that is about to get executed, or hijack the signal. > > I've just stumbled across g_signal_override_class_handler () method which > seems to be sort of what I'm after... I'll try that tomorrow (-: > Heres my interpretation of your seemingly complex problem ;-) You are listening to a callback "element-added"; you dont want the callback to fire when you explicitly add an element (doh, the code adding the element already knows its adding the element, no need to fire some possibly dangerously recursive code). Or synonymously; you have a function that updates the database when a toggle button is pressed, and sometimes the database hooks indicate that you need to update the state of the toggle button, again you dont want the "toggled" handler to run. set_toggle_button_state() { g_signal_handers_block_by_func () gtk_toggle_button_set_active (); g_signal_handers_unblock_by_func () } Hope this helps ;-) Cheers, -Tristan http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#g-signal-handlers-block-by-func _______________________________________________ gtk-list mailing list gtk-list@xxxxxxxxx http://mail.gnome.org/mailman/listinfo/gtk-list