glib: g_idle_add_full(): the callback is not called immediately



I'm not sure the list is correct, the question is regarding glib main loop.

The target platform is Linux (Fedora Code 5). I'm trying to integrate a 
threaded module with a non-threaded (uses Glib mainloop). The threaded module 
calls the function of the non-threaded and to reach a signle thread 
requirement passes the call as a main loop callback via g_idle_add_full().

The problem is that regardless of the priority passed as the first parameter 
(even G_PRIORITY_HIGH and i'm sure there's no higher priority events there) 
there's a long gap between g_idle_add_full() and the time Glib enters the 
callback function, also looks like some external event sources make the 
callback being called faster than just waiting without any external 
activation.

Please, give a light on this problem, e.g. what can be the cause of such 
behaviour or at least some workaround:
1) how do i "activate" the main loop manually (if such thing exists at all)?
2) how do i know i'm running the same thread with the mail loop so i can call 
the function directly instead of passing it to the event loop?



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