Eina_Bool ref_set,
E_Comp_Wl_Buffer *buff)
{
+ E_Comp_Wl_Remote_Common *common = NULL;
+ E_Client *src_ec = NULL;
struct wl_resource *tbm = NULL;
Eina_Bool send = EINA_FALSE;
struct wl_array opts;
char *p, tmp[16];
int len;
+ if (rs->provider)
+ {
+ common = &rs->provider->common;
+ src_ec = rs->provider->common.ec;
+ }
+ else if (rs->source)
+ {
+ common = &rs->source->common;
+ src_ec = rs->source->common.ec;
+ }
+
+ if (!common || !src_ec)
+ {
+ ERR("CHANGED_BUFF: no common(%p) or src_ec(%p)", common, src_ec);
+ return EINA_FALSE;
+ }
+
+ DBG("CHANGED_BUFF: src_ec(%p) bind_ec(%p) buffer_transform(%d)",
+ src_ec, rs->bind_ec, e_comp_wl_output_buffer_transform_get(src_ec));
+
+ /* if unbinded, buffer_transform should be 0 for consumer to composite buffers.
+ * Otherwise, we skip sending a change_buffer event because buffer is not ready.
+ */
+ if (!rs->bind_ec && e_comp_wl_output_buffer_transform_get(src_ec))
+ {
+ RSMINF("CHANGED_BUFF skiped: buffer not ready", NULL, NULL, "SURFACE", rs);
+ return EINA_TRUE;
+ }
+
if (rbuff)
tbm = rbuff->resource;
remote_surface->bind_ec->comp_data->pending.sy = 0;
remote_surface->bind_ec->comp_data->pending.new_attach = EINA_TRUE;
+ remote_surface->bind_ec->comp_data->pending.buffer_viewport =
+ remote_surface->provider->common.ec->comp_data->scaler.buffer_viewport;
+
e_comp_wl_surface_commit(remote_surface->bind_ec);
}
}
if (e_object_is_del(E_OBJECT(ec))) return;
+ ec->comp_data->scaler.buffer_viewport = state->buffer_viewport;
+
if (state->new_attach)
e_comp_wl_surface_attach(ec, state->buffer);
{
E_Comp_Wl_Buffer *buffer;
+ surface->bind_ec->comp_data->pending.buffer_viewport = ec->comp_data->scaler.buffer_viewport;
+
buffer = e_comp_wl_buffer_get(remote_buffer->resource, surface->bind_ec);
_e_comp_wl_remote_surface_state_buffer_set(&surface->bind_ec->comp_data->pending, buffer);
surface->bind_ec->comp_data->pending.sx = sx;