libweston: Don't change surface state in weston_surface_copy_content
Instead of attaching and flushing damage when performing weston_surface_copy_content, just return the contents as the renderer currently knows them. Signed-off-by: Derek Foreman <derek.foreman@collabora.com>
This commit is contained in:
parent
ae53d196db
commit
0f8bd8dbc5
|
@ -5522,6 +5522,9 @@ weston_surface_get_bounding_box(struct weston_surface *surface)
|
||||||
* - the machine must be little-endian due to Pixman formats.
|
* - the machine must be little-endian due to Pixman formats.
|
||||||
*
|
*
|
||||||
* NOTE: Pixman formats are premultiplied.
|
* NOTE: Pixman formats are premultiplied.
|
||||||
|
*
|
||||||
|
* FURTHER NOTE: Surface contents will be in the state they were last
|
||||||
|
* rendered, even if a new buffer has been attached since that time.
|
||||||
*/
|
*/
|
||||||
WL_EXPORT int
|
WL_EXPORT int
|
||||||
weston_surface_copy_content(struct weston_surface *surface,
|
weston_surface_copy_content(struct weston_surface *surface,
|
||||||
|
|
|
@ -912,8 +912,6 @@ pixman_renderer_surface_copy_content(struct weston_surface *surface,
|
||||||
if (!ps->image)
|
if (!ps->image)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
pixman_renderer_attach_internal(surface, surface->buffer_ref.buffer);
|
|
||||||
|
|
||||||
out_buf = pixman_image_create_bits(format, width, height,
|
out_buf = pixman_image_create_bits(format, width, height,
|
||||||
target, width * bytespp);
|
target, width * bytespp);
|
||||||
|
|
||||||
|
|
|
@ -3755,7 +3755,6 @@ gl_renderer_surface_copy_content(struct weston_surface *surface,
|
||||||
GLenum status;
|
GLenum status;
|
||||||
int ret = -1;
|
int ret = -1;
|
||||||
|
|
||||||
gl_renderer_attach_internal(surface, surface->buffer_ref.buffer, NULL);
|
|
||||||
gs = get_surface_state(surface);
|
gs = get_surface_state(surface);
|
||||||
gb = gs->buffer;
|
gb = gs->buffer;
|
||||||
buffer = gs->buffer_ref.buffer;
|
buffer = gs->buffer_ref.buffer;
|
||||||
|
@ -3771,8 +3770,6 @@ gl_renderer_surface_copy_content(struct weston_surface *surface,
|
||||||
*(uint32_t *)target = pack_color(format, gb->color);
|
*(uint32_t *)target = pack_color(format, gb->color);
|
||||||
return 0;
|
return 0;
|
||||||
case WESTON_BUFFER_SHM:
|
case WESTON_BUFFER_SHM:
|
||||||
gl_renderer_flush_damage_internal(surface, false);
|
|
||||||
/* fall through */
|
|
||||||
case WESTON_BUFFER_DMABUF:
|
case WESTON_BUFFER_DMABUF:
|
||||||
case WESTON_BUFFER_RENDERER_OPAQUE:
|
case WESTON_BUFFER_RENDERER_OPAQUE:
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in New Issue