I'm trying to fix a custom poll function ( see http://pastie.org/1298915 ). It is from OS X backend code of clutter library. It is set like this:
void
_clutter_events_osx_init (void)
{
g_assert (old_poll_func == NULL);
old_poll_func = g_main_context_get_poll_func (NULL);
g_main_context_set_poll_func (NULL, clutter_event_osx_poll_func);
}
void
_clutter_events_osx_uninit (void)
{
if (old_poll_func)
{
g_main_context_set_poll_fun开发者_如何学JAVAc (NULL, old_poll_func);
old_poll_func = NULL;
}
}
It is taking events from sockets and forwarding it to native mac os x app. The problem is I want libsoup library events to be handled by libsoup correctly which is why I need to use a behavior of old_poll_func(). But I don't know how to filter non-clutter events and how to use the old_poll_func only on them.
I think there is no simple way to work around the limitations of mainloop integration in current clutter.
One should take a look at the mainloop integration in gdk/quartz, I believe it would handle libsoup and such correctly. It ought to be straightforward to adapt the gdk code for clutter, just time consuming.
精彩评论