Write our own GSource impl. for more efficiency.
Deal with the blocking / buffering issues.
