else
{
if (data->ec) e_pixmap_image_clear(data->ec->pixmap, 1);
- e_plane_commit_data_release(data);
+ e_plane_commit_data_release(plane, data);
}
}
}
if (!_e_plane_pp_commit(plane, data))
{
ERR("fail _e_plane_pp_commit");
- e_plane_commit_data_release(data);
+ e_plane_commit_data_release(plane, data);
return;
}
}
else
{
if (data->ec) e_pixmap_image_clear(data->ec->pixmap, 1);
- e_plane_commit_data_release(data);
+ e_plane_commit_data_release(plane, data);
}
/* if pp_set is false, skip the commit */
if (!plane->commit_per_vblank)
plane->wait_commit = EINA_FALSE;
- e_plane_commit_data_release(data);
+ e_plane_commit_data_release(plane, data);
output = plane->output;
if (!plane->commit_per_vblank)
plane->wait_commit = EINA_FALSE;
- e_plane_commit_data_release(data);
+ e_plane_commit_data_release(plane, data);
}
static void
NULL, plane, plane->zpos, data->tsurface, plane->renderer ? plane->renderer->tqueue : NULL,
data->buffer_ref.buffer ? data->buffer_ref.buffer->resource : NULL, data);
- e_plane_commit_data_release(data);
+ e_plane_commit_data_release(plane, data);
/* send frame event enlightenment doesn't send frame event in nocomp */
if (plane->ec)
if (error != TDM_ERROR_NONE)
{
ERR("fail to tdm_layer_commit plane:%p, zpos:%d", plane, plane->zpos);
- e_plane_commit_data_release(data);
+ e_plane_commit_data_release(plane, data);
return EINA_FALSE;
}
}
EINTERN void
-e_plane_commit_data_release(E_Plane_Commit_Data *data)
+e_plane_commit_data_release(E_Plane *plane, E_Plane_Commit_Data *data)
{
- E_Plane *plane = NULL;
E_Plane_Renderer *renderer = NULL;
tbm_surface_h tsurface = NULL;
tbm_surface_h displaying_tsurface = NULL;
E_Client *ec = NULL;
+ EINA_SAFETY_ON_NULL_RETURN(plane);
EINA_SAFETY_ON_NULL_RETURN(data);
- plane = data->plane;
+ if (!eina_list_data_find(plane->commit_data_list, data))
+ return;
+
renderer = data->renderer;
tsurface = data->tsurface;
ec = data->ec;
if (!_e_plane_pp_commit(plane, data))
{
ERR("fail _e_plane_pp_commit");
- e_plane_commit_data_release(data);
+ e_plane_commit_data_release(plane, data);
return EINA_FALSE;
}
_e_plane_pp_pending_data_remove(plane);
EINA_LIST_FOREACH_SAFE(plane->pp_data_list, l, ll, data)
{
- e_plane_commit_data_release(data);
+ e_plane_commit_data_release(plane, data);
}
eina_list_free(plane->pp_data_list);
plane->pp_data_list = NULL;
EINA_LIST_FOREACH_SAFE(plane->commit_data_list, l, ll, data)
{
- e_plane_commit_data_release(data);
+ e_plane_commit_data_release(plane, data);
}
}
return EINA_TRUE;
}
- e_plane_commit_data_release(data);
+ e_plane_commit_data_release(plane, data);
return EINA_FALSE;
}
else /* plane->ext_state == E_OUTPUT_EXT_MIRROR */