I'm working on a game that must update the window in stages (dim things and repaint; then delete things and repaint; then compute the final result and repaint).

I use code like this:

        queueDraw; // Show previous stage
        new Timeout(config.delayMs, delegate bool() {
            deleteAdjoining(adjoining); return false; },
            GPriority.HIGH, false);

But sometimes the drawing doesn't happen.
Is there a way of forcing it to or of checking the event loop? I don't have Main since I'm using gio.Application and gtk.ApplicationWindow.