mirror of
https://github.com/brl/mutter.git
synced 2025-01-23 18:09:10 +00:00
cd7a968093
Calling meta_later_add() or meta_later_remove() from within a META_LATER_BEFORE_REDRAW callback ended up being a no-op, because of how run_repaint_laters() was fiddling with the laters list. (This resulted in a crash in window.c:idle_calc_repaint(), which assumed it would only be called when a certain queue was non-empty, but was getting called anyway because of a failed meta_later_remove() call.) Fix this by having run_repaint_laters() work on a copy of the laters list instead, and add refcounting to MetaLater so that removing a later that run_repaint_laters() hasn't gotten to yet won't cause problems. https://bugzilla.gnome.org/show_bug.cgi?id=642957