E_CONFIG_VAL(D, T, hwc_sync_mode_change, UCHAR);
E_CONFIG_VAL(D, T, hwc_ignore_primary, UCHAR);
E_CONFIG_VAL(D, T, hwc_use_detach, UCHAR);
+ E_CONFIG_VAL(D, T, use_native_type_buffer, UCHAR);
E_CONFIG_VAL(D, T, nofade, UCHAR);
E_CONFIG_VAL(D, T, smooth_windows, UCHAR);
E_CONFIG_VAL(D, T, first_draw_delay, DOUBLE);
cfg->hwc_sync_mode_change = 0;
cfg->hwc_ignore_primary = 0;
cfg->hwc_use_detach = 0;
+ cfg->use_native_type_buffer = 0; // 1 if use_native(wl_buffer), 0 if use_tbm(tbm_surface)
cfg->nofade = 0;
cfg->smooth_windows = 0; // 1 if gl, 0 if not
cfg->first_draw_delay = 0.15;
if (!(buffer = E_NEW(E_Comp_Wl_Buffer, 1))) return NULL;
shmbuff = wl_shm_buffer_get(resource);
- tbm_surf = wayland_tbm_server_get_surface(NULL, resource);
- if (shmbuff)
+ /* TODO: This option is temporarily. It will be removed later. */
+ /* prefer to use native buffer(wl_buffer) */
+ if (e_comp->use_native_type_buffer)
{
- buffer->type = E_COMP_WL_BUFFER_TYPE_SHM;
-
- buffer->w = wl_shm_buffer_get_width(shmbuff);
- buffer->h = wl_shm_buffer_get_height(shmbuff);
- }
- else if (tbm_surf)
- {
- tbm_surf = wayland_tbm_server_get_surface(e_comp_wl->tbm.server, resource);
- if (!tbm_surf)
- goto err;
-
- if ((ec) && (ec->comp_data->video_client))
+ if (shmbuff)
{
- buffer->type = E_COMP_WL_BUFFER_TYPE_VIDEO;
- buffer->w = buffer->h = 1;
+ buffer->type = E_COMP_WL_BUFFER_TYPE_SHM;
+
+ buffer->w = wl_shm_buffer_get_width(shmbuff);
+ buffer->h = wl_shm_buffer_get_height(shmbuff);
}
else
{
- buffer->type = E_COMP_WL_BUFFER_TYPE_TBM;
- buffer->w = tbm_surface_get_width(tbm_surf);
- buffer->h = tbm_surface_get_height(tbm_surf);
+ if ((ec) && (ec->comp_data->video_client))
+ {
+ buffer->type = E_COMP_WL_BUFFER_TYPE_VIDEO;
+ buffer->w = buffer->h = 1;
+ }
+ else if (e_comp->gl)
+ {
+ buffer->type = E_COMP_WL_BUFFER_TYPE_NATIVE;
+
+ res = e_comp_wl->wl.glapi->evasglQueryWaylandBuffer(e_comp_wl->wl.gl,
+ resource,
+ EVAS_GL_WIDTH,
+ &buffer->w);
+ EINA_SAFETY_ON_FALSE_GOTO(res, err);
+
+ res = e_comp_wl->wl.glapi->evasglQueryWaylandBuffer(e_comp_wl->wl.gl,
+ resource,
+ EVAS_GL_HEIGHT,
+ &buffer->h);
+ EINA_SAFETY_ON_FALSE_GOTO(res, err);
+ }
+ else
+ {
+ tbm_surf = wayland_tbm_server_get_surface(e_comp_wl->tbm.server, resource);
+ if (!tbm_surf)
+ goto err;
+
+ buffer->type = E_COMP_WL_BUFFER_TYPE_NATIVE;
+ buffer->w = tbm_surface_get_width(tbm_surf);
+ buffer->h = tbm_surface_get_height(tbm_surf);
+ buffer->tbm_surface = tbm_surf;
+ }
}
- }
- else if (e_comp->gl)
- {
- buffer->type = E_COMP_WL_BUFFER_TYPE_NATIVE;
-
- res = e_comp_wl->wl.glapi->evasglQueryWaylandBuffer(e_comp_wl->wl.gl,
- resource,
- EVAS_GL_WIDTH,
- &buffer->w);
- EINA_SAFETY_ON_FALSE_GOTO(res, err);
-
- res = e_comp_wl->wl.glapi->evasglQueryWaylandBuffer(e_comp_wl->wl.gl,
- resource,
- EVAS_GL_HEIGHT,
- &buffer->h);
- EINA_SAFETY_ON_FALSE_GOTO(res, err);
- }
- else
- {
- goto err;
- }
+ buffer->shm_buffer = shmbuff;
+ }
+ else
+ {
+ tbm_surf = wayland_tbm_server_get_surface(e_comp_wl->tbm.server, resource);
+
+ if (shmbuff)
+ {
+ buffer->type = E_COMP_WL_BUFFER_TYPE_SHM;
+
+ buffer->w = wl_shm_buffer_get_width(shmbuff);
+ buffer->h = wl_shm_buffer_get_height(shmbuff);
+ }
+ else if (tbm_surf)
+ {
+ tbm_surf = wayland_tbm_server_get_surface(e_comp_wl->tbm.server, resource);
+ if (!tbm_surf)
+ goto err;
+
+ if ((ec) && (ec->comp_data->video_client))
+ {
+ buffer->type = E_COMP_WL_BUFFER_TYPE_VIDEO;
+ buffer->w = buffer->h = 1;
+ }
+ else
+ {
+ buffer->type = E_COMP_WL_BUFFER_TYPE_TBM;
+ buffer->w = tbm_surface_get_width(tbm_surf);
+ buffer->h = tbm_surface_get_height(tbm_surf);
+ }
+ }
+ else if (e_comp->gl)
+ {
+ buffer->type = E_COMP_WL_BUFFER_TYPE_NATIVE;
+
+ res = e_comp_wl->wl.glapi->evasglQueryWaylandBuffer(e_comp_wl->wl.gl,
+ resource,
+ EVAS_GL_WIDTH,
+ &buffer->w);
+ EINA_SAFETY_ON_FALSE_GOTO(res, err);
+
+ res = e_comp_wl->wl.glapi->evasglQueryWaylandBuffer(e_comp_wl->wl.gl,
+ resource,
+ EVAS_GL_HEIGHT,
+ &buffer->h);
+ EINA_SAFETY_ON_FALSE_GOTO(res, err);
+ }
+ else
+ {
+ goto err;
+ }
+
+ buffer->shm_buffer = shmbuff;
+ buffer->tbm_surface = tbm_surf;
+ }
- buffer->shm_buffer = shmbuff;
- buffer->tbm_surface = tbm_surf;
buffer->resource = resource;
wl_signal_init(&buffer->destroy_signal);
buffer->destroy_listener.notify = _e_comp_wl_buffer_cb_destroy;