_e_hwc_window_queue_prepare_set(E_Hwc_Window_Queue *queue, E_Hwc_Window *hwc_window)
{
struct wayland_tbm_client_queue *cqueue = NULL;
+ enum wl_output_transform transform = WL_OUTPUT_TRANSFORM_NORMAL;
E_Client *ec = NULL;
+ int w, h;
if (eina_list_data_find(queue->user_pending_set, hwc_window) == hwc_window)
_e_hwc_window_queue_user_pending_set_remove(queue, hwc_window);
return EINA_FALSE;
}
- if ((queue->width != ec->w) || (queue->height != ec->h))
+ transform = e_comp_wl_output_buffer_transform_get(ec);
+ if ((transform == WL_OUTPUT_TRANSFORM_90) || (transform == WL_OUTPUT_TRANSFORM_270))
+ {
+ w = ec->h;
+ h = ec->w;
+ }
+ else
+ {
+ w = ec->w;
+ h = ec->h;
+ }
+
+ if ((queue->width != w) || (queue->height != h))
{
EHWQERR("size mismatch queue(%dx%d) client(%dx%d)",
- ec, queue->hwc, queue, queue->width, queue->height, ec->w, ec->h);
+ ec, queue->hwc, queue, queue->width, queue->height, w, h);
return EINA_FALSE;
}