(buffer->type != E_COMP_WL_BUFFER_TYPE_NATIVE && buffer->type != E_COMP_WL_BUFFER_TYPE_TBM))
return vp->buffer.transform;
- rotation = wayland_tbm_server_buffer_get_buffer_transform(NULL, buffer->resource);
+ rotation = buffer->transform;
if (rotation == 0)
return vp->buffer.transform;
listener =
wl_resource_get_destroy_listener(resource, _e_comp_wl_buffer_cb_destroy);
if (listener)
- return container_of(listener, E_Comp_Wl_Buffer, destroy_listener);
+ {
+ buffer = container_of(listener, E_Comp_Wl_Buffer, destroy_listener);
+ goto update;
+ }
if (!(buffer = E_NEW(E_Comp_Wl_Buffer, 1))) return NULL;
DBG("Wl Buffer Create: b %p owner '%s'(%p)",
buffer, buffer->debug_info.owner_name, buffer->debug_info.owner_ptr);
+update:
+ if (buffer->tbm_surface)
+ buffer->transform = wayland_tbm_server_buffer_get_buffer_transform(NULL, resource);
+
return buffer;
err:
static Eina_Bool
_e_plane_renderer_client_backup_buffer_set(E_Plane_Renderer_Client *renderer_client)
{
- E_Comp_Wl_Buffer *backup_buffer = NULL;
+ E_Comp_Wl_Buffer *buffer, *backup_buffer = NULL;
tbm_surface_h copied_tsurface = NULL;
E_Client *ec = NULL;
backup_buffer = e_comp_wl_tbm_buffer_get(copied_tsurface);
EINA_SAFETY_ON_NULL_GOTO(backup_buffer, fail);
+ buffer = _get_comp_wl_buffer(ec);
+ if (buffer)
+ backup_buffer->transform = buffer->transform;
+
if (renderer_client->buffer)
wl_list_remove(&renderer_client->buffer_destroy_listener.link);