Skip to content

surface: fix double wl_buffer.release events

Prior to this commit, we re-uploaded the buffer even if a new one wasn't attached. After uploading, we send wl_buffer.release. So, this sequence of requests resulted in a double release:

surface.attach(buffer, 0, 0)
surface.commit()
<- buffer.release()
surface.commit()
<- buffer.release()

Test plan: open Gedit, click on a button to open a popup. Crashes Gedit before this commit with:

(gedit:28185): Gdk-WARNING **: 12:33:31.056: (gdkwindow-wayland.c:797):buffer_release_callback: runtime check failed: (impl->staging_cairo_surface != cairo_surface)

Merge request reports