E Comp (Wayland): Only fetch pixmap from wayland if we are a 'border'

window and 'borderless' (helps reduce apparent lag people were having).

NB: This is only enabled IF you do it on purpose with
--enable-wayland-clients when building E17. If NOT, then it defaults
to the code path that was there pre-existing.



SVN revision: 67576
This commit is contained in:
Christopher Michael 2012-01-28 22:52:47 +00:00
parent 9619be1673
commit a764120adf
1 changed files with 21 additions and 18 deletions

View File

@ -443,7 +443,7 @@ _e_mod_comp_win_ready_timeout_setup(E_Comp_Win *cw)
else else
{ {
cw->ready_timeout = ecore_timer_add cw->ready_timeout = ecore_timer_add
(_comp_mod->conf->first_draw_delay, _e_mod_comp_cb_win_show_ready_timeout, cw); (_comp_mod->conf->first_draw_delay, _e_mod_comp_cb_win_show_ready_timeout, cw);
} }
} }
@ -511,13 +511,13 @@ _e_mod_comp_win_update(E_Comp_Win *cw)
if ((!cw->pixmap) || (cw->needpix)) if ((!cw->pixmap) || (cw->needpix))
{ {
Ecore_X_Pixmap pm; Ecore_X_Pixmap pm = 0;
/* #ifdef HAVE_WAYLAND */ #ifdef HAVE_WAYLAND
/* pm = e_mod_comp_wl_pixmap_get(cw->win); */ if ((cw->bd) && (cw->bd->borderless))
/* #endif */ pm = e_mod_comp_wl_pixmap_get(cw->win);
#endif
pm = ecore_x_composite_name_window_pixmap_get(cw->win); if (!pm) pm = ecore_x_composite_name_window_pixmap_get(cw->win);
if (pm) if (pm)
{ {
Ecore_X_Pixmap oldpm; Ecore_X_Pixmap oldpm;
@ -601,7 +601,7 @@ _e_mod_comp_win_update(E_Comp_Win *cw)
/* #ifdef HAVE_WAYLAND */ /* #ifdef HAVE_WAYLAND */
/* DBG("DEBUG - pm now %x\n", e_mod_comp_wl_pixmap_get(cw->win)); */ /* DBG("DEBUG - pm now %x\n", e_mod_comp_wl_pixmap_get(cw->win)); */
/* #endif */ /* #endif */
DBG("DEBUG - pm now %x\n", ecore_x_composite_name_window_pixmap_get(cw->win)); /* DBG("DEBUG - pm now %x\n", ecore_x_composite_name_window_pixmap_get(cw->win)); */
evas_object_image_size_set(cw->obj, cw->pw, cw->ph); evas_object_image_size_set(cw->obj, cw->pw, cw->ph);
EINA_LIST_FOREACH(cw->obj_mirror, l, o) EINA_LIST_FOREACH(cw->obj_mirror, l, o)
{ {
@ -1118,11 +1118,12 @@ nocomp:
printf(" redr\n"); printf(" redr\n");
ecore_x_composite_redirect_window(cw->win, ECORE_X_COMPOSITE_UPDATE_MANUAL); ecore_x_composite_redirect_window(cw->win, ECORE_X_COMPOSITE_UPDATE_MANUAL);
/* #ifdef HAVE_WAYLAND */ #ifdef HAVE_WAYLAND
/* cw->pixmap = e_mod_comp_wl_pixmap_get(cw->win); */ if ((cw->bd) && (cw->bd->borderless))
/* #endif */ cw->pixmap = e_mod_comp_wl_pixmap_get(cw->win);
/* if (!cw->pixmap) */ #endif
cw->pixmap = ecore_x_composite_name_window_pixmap_get(cw->win); if (!cw->pixmap)
cw->pixmap = ecore_x_composite_name_window_pixmap_get(cw->win);
if (cw->pixmap) if (cw->pixmap)
{ {
ecore_x_pixmap_geometry_get(cw->pixmap, NULL, NULL, &(cw->pw), &(cw->ph)); ecore_x_pixmap_geometry_get(cw->pixmap, NULL, NULL, &(cw->pw), &(cw->ph));
@ -2058,15 +2059,17 @@ _e_mod_comp_win_show(E_Comp_Win *cw)
} }
else else
cw->dmg_updates = 1; cw->dmg_updates = 1;
if ((!cw->redirected) || (!cw->pixmap)) if ((!cw->redirected) || (!cw->pixmap))
{ {
// we redirect all subwindows anyway // we redirect all subwindows anyway
// ecore_x_composite_redirect_window(cw->win, ECORE_X_COMPOSITE_UPDATE_MANUAL); // ecore_x_composite_redirect_window(cw->win, ECORE_X_COMPOSITE_UPDATE_MANUAL);
/* #ifdef HAVE_WAYLAND */ #ifdef HAVE_WAYLAND
/* cw->pixmap = e_mod_comp_wl_pixmap_get(cw->win); */ if ((cw->bd) && (cw->bd->borderless))
/* #endif */ cw->pixmap = e_mod_comp_wl_pixmap_get(cw->win);
/* if (!cw->pixmap) */ #endif
cw->pixmap = ecore_x_composite_name_window_pixmap_get(cw->win); if (!cw->pixmap)
cw->pixmap = ecore_x_composite_name_window_pixmap_get(cw->win);
if (cw->pixmap) if (cw->pixmap)
{ {
ecore_x_pixmap_geometry_get(cw->pixmap, NULL, NULL, &(cw->pw), &(cw->ph)); ecore_x_pixmap_geometry_get(cw->pixmap, NULL, NULL, &(cw->pw), &(cw->ph));