mirror of
https://github.com/brl/mutter.git
synced 2024-12-24 20:12:06 +00:00
57359da9b4
Previously, a sequence like this would crash a client: => surface.attach(buffer) => buffer.destroy() The correct behavior is to wait until we release the buffer before destroying it. => surface.attach(buffer) => surface.attach(buffer2) <= buffer.release() => buffer.destroy() The protocol upstream says that "the surface contents are undefined" in a case like this. Personally, I think that this is broken behavior and no client should ever do it, so I explicitly killed any client that tried to do this. But unfortunately, as we're all well aware, XWayland does this. Rather than wait for XWayland to be fixed, let's just allow this. Technically, since we always copy SHM buffers into GL textures, we could release the buffer as soon as the Cogl texture is made. Since we do this copy, the semantics we apply are that the texture is "frozen" in time until another newer buffer is attached. For simple clients that simply abort on exit and don't wait for the buffer event anyhow, this has the added bonus that we'll get nice destroy animations. |
||
---|---|---|
.. | ||
protocol | ||
meta-wayland-data-device.c | ||
meta-wayland-data-device.h | ||
meta-wayland-keyboard.c | ||
meta-wayland-keyboard.h | ||
meta-wayland-pointer.c | ||
meta-wayland-pointer.h | ||
meta-wayland-private.h | ||
meta-wayland-seat.c | ||
meta-wayland-seat.h | ||
meta-wayland-stage.c | ||
meta-wayland-stage.h | ||
meta-wayland-surface.c | ||
meta-wayland-surface.h | ||
meta-wayland-types.h | ||
meta-wayland-versions.h | ||
meta-wayland.c | ||
meta-wayland.h | ||
meta-weston-launch.c | ||
meta-weston-launch.h | ||
meta-xwayland-private.h | ||
meta-xwayland.c | ||
weston-launch.c | ||
weston-launch.h | ||
window-wayland.c | ||
window-wayland.h |