wayland/egl: update surface size on window resize
authorJuan A. Suarez Romero <jasuarez@igalia.com>
Wed, 6 Jun 2018 10:13:05 +0000 (10:13 +0000)
committerJuan A. Suarez Romero <jasuarez@igalia.com>
Wed, 8 Aug 2018 16:29:58 +0000 (18:29 +0200)
commita9fb331ea7d1a78936ea8d8385e44cfd66f835c1
tree664458d42ab8bc59049fdbe612d0150d354ee396
parent1fe7cbdf05b90034577dac4e4aa6157031d80521
wayland/egl: update surface size on window resize

According to EGL 1.5 spec, section 3.10.1.1 ("Native Window Resizing"):

  "If the native window corresponding to _surface_ has been resized
   prior to the swap, _surface_ must be resized to match. _surface_ will
   normally be resized by the EGL implementation at the time the native
   window is resized. If the implementation cannot do this transparently
   to the client, then *eglSwapBuffers* must detect the change and
   resize surface prior to copying its pixels to the native window."

So far, resizing a native window in Wayland/EGL was interpreted in Mesa
as a request to resize, which is not executed until the first draw call.
And hence, surface size is not updated until executing it. Thus,
querying the surface size with eglQuerySurface() after a window resize
still returns the old values.

This commit updates the surface size values as soon as the resize is
done, even when the real resize is done in the draw call. This makes the
semantics that any native window resize request take effect inmediately,
and if user calls eglQuerySurface() it will return the new resized
values.

v2: update surface size if there isn't a back surface (Daniel)

CC: Daniel Stone <daniel@fooishbar.org>
CC: mesa-stable@lists.freedesktop.org
Reviewed-by: Daniel Stone <daniels@collabora.com>
src/egl/drivers/dri2/platform_wayland.c