core event-loop: use g_main_context_wakeup() to break iteration