mirror of
https://github.com/brl/mutter.git
synced 2024-11-21 15:40:41 -05:00
wayland-buffer: Create EGLStream texture at buffer_realize time
When dealing with synchronized subsurfaces, we defer buffer attachments until the parent surface state is applied. That causes interaction issues with EGLStream backed buffers, as the client expects the compositor-side stream to be functional after it requests a wl_surface::attach. By allowing the compositor to realize buffers without attaching them, we could resolve the issue above if we define a realized EGLStream buffer as a functional EGLStream (EGLStream + attached consumer). This change moves the texture consumer creation part from the attach function to the realize one. https://bugzilla.gnome.org/show_bug.cgi?id=782575
This commit is contained in:
parent
1bf2eb95b5
commit
edd3634bb5
@ -129,8 +129,18 @@ meta_wayland_buffer_realize (MetaWaylandBuffer *buffer)
|
||||
stream = meta_wayland_egl_stream_new (buffer, NULL);
|
||||
if (stream)
|
||||
{
|
||||
CoglTexture2D *texture;
|
||||
|
||||
buffer->egl_stream.stream = stream;
|
||||
buffer->type = META_WAYLAND_BUFFER_TYPE_EGL_STREAM;
|
||||
|
||||
texture = meta_wayland_egl_stream_create_texture (stream, NULL);
|
||||
if (!texture)
|
||||
return FALSE;
|
||||
|
||||
buffer->texture = COGL_TEXTURE (texture);
|
||||
buffer->is_y_inverted = meta_wayland_egl_stream_is_y_inverted (stream);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -320,18 +330,6 @@ egl_stream_buffer_attach (MetaWaylandBuffer *buffer,
|
||||
|
||||
g_assert (stream);
|
||||
|
||||
if (!buffer->texture)
|
||||
{
|
||||
CoglTexture2D *texture;
|
||||
|
||||
texture = meta_wayland_egl_stream_create_texture (stream, error);
|
||||
if (!texture)
|
||||
return FALSE;
|
||||
|
||||
buffer->texture = COGL_TEXTURE (texture);
|
||||
buffer->is_y_inverted = meta_wayland_egl_stream_is_y_inverted (stream);
|
||||
}
|
||||
|
||||
if (!meta_wayland_egl_stream_attach (stream, error))
|
||||
return FALSE;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user