_gdk_window_process_updates_recurse() may recurse (duh), and reenter drawRect. So `needs_display_region` needs to be unset immediately, not at the end of the method.