Skip to content

onscreen/native: Always free the next framebuffer on dispose

Jonas Ådahl requested to merge jadahl/mutter:wip/fix-hotplug-race-leak into main

onscreen/native: Always free the next framebuffer on dispose

There was a sanity check that complained if there was still a "next framebuffer" when disposing an onscreen. This is correct to complain about under normal operation, as we always wait until receiving the page flip callback before cleaning up the onscreen and their state.

However, when there are many hotplugs occurring, we might end up with race conditions when the abevo sanity check is not valid: when we have more than one monitor active, paint 1 one of them, but receive a hotplug event before we paint the other(s), we will discard the already painted onscreen before really issuing a page flip.

In this situation, we will have the "next framebuffer", but having that is not a bug, it's a race condition, thus to not leak in this situation, make sure to clean up the next framebuffer here too.

Closes: #2081 (closed)

Edited by Jonas Ådahl

Merge request reports

Loading