Re: gdk_io_* clarification




James Macnicol <jamesm@evans.ee.adfa.oz.au> writes:

> Hi,
> 
> 	I'd just like to get a clarification on when the destroy notify
> handler gets called when you register one with gdk_input_add_full().  I
> thought that it is only when gdk_input_remove() is called but I am seeing
> this at other times too, here's a typical gdb backtrace :

> #1  0xdfeacb1a in gdk_io_destroy (data=0x8079b58) at gdkevents.c:847
> #2  0xdfe7e98a in g_source_destroy_func (hook_list=0xdfe8ef50, hook=0x806dc60)
>     at gmain.c:431
> #3  0xdfe7c96f in g_hook_free (hook_list=0xdfe8ef50, hook=0x806dc60)
>     at ghook.c:124
> #4  0xdfe7cc27 in g_hook_unref (hook_list=0xdfe8ef50, hook=0x806dc60)
>     at ghook.c:214
> #5  0xdfe7f0ac in g_main_dispatch (current_time=0x8046c94) at gmain.c:668
> #6  0xdfe7f56f in g_main_iterate (block=1, dispatch=1) at gmain.c:865
> #7  0xdfe7f6ed in g_main_run (loop=0x807b630) at gmain.c:923
> #8  0xdff553bb in gtk_main () at gtkmain.c:475
> #9  0x8051581 in main (argc=1, argv=0x8046d44) at test1.cpp:150
> 
> (#0 which I've omitted is the routine I've registered to handle
> destroy notification).
> 
> 	Why do I get the above?  What has caused the ref. count on that
> file descriptor to go to zero?

It's not the ref count on the file descriptor per se,
but the ref count on the GSource that was created
to handle the IO watch.

This only should happen after a call to gdk_input_remove()

(Though it won't necessarily be invoked _within_ the call to 
gdk_input_remove(), especially if that call is made within
your input function)

Can you come up with a (hopefully short...) example of
when this is happening?

Thanks,
                                        Owen

 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]