Convert the callback into a real GSourceFunc. Install one-shot callbacks only if allocation succeeded. Signed-off-by: Olaf Hering <olaf@aepfle.de>