mutter/src/wayland
Jasper St. Pierre 57359da9b4 wayland: Kill the buffer destroy error
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.
2014-03-20 13:53:05 -04:00
..
protocol Move Wayland protocols into src/wayland 2014-03-18 20:37:35 -04:00
meta-wayland-data-device.c wayland-pointer: Drop unused arg from focus grab interface method 2014-03-17 11:06:58 +01:00
meta-wayland-data-device.h wayland: Make set_selection private 2014-03-11 15:42:37 -04:00
meta-wayland-keyboard.c wayland: Update keyboard state unconditionally 2014-03-18 19:15:17 +01:00
meta-wayland-keyboard.h wayland: Update keyboard state unconditionally 2014-03-18 19:15:17 +01:00
meta-wayland-pointer.c wayland-seat: Don't send pointer enter/leave events during a GRAB_OP 2014-03-20 17:08:53 +01:00
meta-wayland-pointer.h wayland-seat: Don't send pointer enter/leave events during a GRAB_OP 2014-03-20 17:08:53 +01:00
meta-wayland-private.h wayland: Move "public" Wayland API to another header file 2014-02-28 10:24:06 -05:00
meta-wayland-seat.c wayland: Exempt CLICKING grab ops when syncing wayland input focus 2014-03-20 17:08:53 +01:00
meta-wayland-seat.h wayland: Update keyboard state unconditionally 2014-03-18 19:15:17 +01:00
meta-wayland-stage.c wayland: split headers and distribute structure definitions 2013-09-03 10:57:28 -04:00
meta-wayland-stage.h Add MetaCursorTracker, a new helper for tracking the cursor sprite 2013-08-19 16:09:53 +02:00
meta-wayland-surface.c wayland: Kill the buffer destroy error 2014-03-20 13:53:05 -04:00
meta-wayland-surface.h xdg-shell: Update for new state change mechanism 2014-03-12 23:42:55 -04:00
meta-wayland-types.h wayland: split headers and distribute structure definitions 2013-09-03 10:57:28 -04:00
meta-wayland-versions.h wayland: Add back wl_shell support 2014-02-28 08:32:14 -05:00
meta-wayland.c wayland: Kill the buffer destroy error 2014-03-20 13:53:05 -04:00
meta-wayland.h Add meta_activate_session 2014-03-11 17:25:40 -04:00
meta-weston-launch.c weston-launch: Pass the DRM device to Cogl 2014-03-14 14:13:05 -04:00
meta-weston-launch.h weston-launch: Pass the DRM device to Cogl 2014-03-14 14:13:05 -04:00
meta-xwayland-private.h xwayland: Fix xwayland 2014-02-07 19:28:05 -05:00
meta-xwayland.c xwayland: Make sure to clear an existing surface if we have one 2014-03-11 10:24:13 -04:00
weston-launch.c weston-launch: Fix a typo causing mutter-launch to not work 2014-03-14 16:04:56 -04:00
weston-launch.h weston-launch: Pass the DRM device to Cogl 2014-03-14 14:13:05 -04:00
window-wayland.c window: Move move_resize_internal logic to protocol-specific directories 2014-03-20 11:02:50 -04:00
window-wayland.h window: Add a type for Wayland windows 2014-03-20 10:50:27 -04:00