From 11ddc952af35fc6aa343de5c61a42e373ea919d2 Mon Sep 17 00:00:00 2001 From: Carsten Haitzler Date: Thu, 11 Feb 2010 13:33:20 +0000 Subject: [PATCH] less overhead... maybe. SVN revision: 46076 --- src/modules/comp/e_mod_comp.c | 82 +++++++++++++---------------------- 1 file changed, 30 insertions(+), 52 deletions(-) diff --git a/src/modules/comp/e_mod_comp.c b/src/modules/comp/e_mod_comp.c index 299310b00..118ca94f2 100644 --- a/src/modules/comp/e_mod_comp.c +++ b/src/modules/comp/e_mod_comp.c @@ -869,11 +869,6 @@ _e_mod_comp_win_del(E_Comp_Win *cw) else if (cw->menu) e_object_delfn_del(E_OBJECT(cw->menu), cw->dfn); cw->dfn = NULL; } - if (cw->native) - { - evas_object_image_native_surface_set(cw->obj, NULL); - cw->native = 0; - } if (cw->pixmap) { ecore_x_pixmap_free(cw->pixmap); @@ -881,6 +876,9 @@ _e_mod_comp_win_del(E_Comp_Win *cw) cw->pw = 0; cw->ph = 0; } +// segv? +// evas_object_image_native_surface_set(cw->obj, NULL); +// cw->native = 0; if (cw->update) { cw->update = 0; @@ -925,53 +923,36 @@ _e_mod_comp_win_show(E_Comp_Win *cw) cw->visible = 1; DBG(" [0x%x] sho ++++++++++\n", cw->win); if ((cw->input_only) || (cw->invalid)) return; -// if (cw->redirected) + if (cw->pixmap) ecore_x_pixmap_free(cw->pixmap); + evas_object_image_size_set(cw->obj, cw->pw, cw->ph); + cw->pixmap = ecore_x_composite_name_window_pixmap_get(cw->win); + if (cw->pixmap) + ecore_x_pixmap_geometry_get(cw->pixmap, NULL, NULL, &(cw->pw), &(cw->ph)); + else { -/* - if (cw->native) evas_object_image_native_surface_set(cw->obj, NULL); - if (cw->pixmap) ecore_x_pixmap_free(cw->pixmap); - evas_object_image_size_set(cw->obj, 1, 1); - cw->pixmap = 0; cw->pw = 0; cw->ph = 0; - cw->native = 0; - ecore_x_composite_unredirect_window(cw->win, ECORE_X_COMPOSITE_UPDATE_MANUAL); - cw->redirected = 0; - */ - if (cw->pixmap) ecore_x_pixmap_free(cw->pixmap); - evas_object_image_size_set(cw->obj, cw->pw, cw->ph); -// ecore_x_window_resize(cw->win, cw->w + 10, cw->h + 10); - cw->pixmap = ecore_x_composite_name_window_pixmap_get(cw->win); - if (cw->pixmap) - ecore_x_pixmap_geometry_get(cw->pixmap, NULL, NULL, &(cw->pw), &(cw->ph)); - else - { - cw->pw = 0; - cw->ph = 0; - } - if ((cw->pw <= 0) || (cw->ph <= 0)) - { - ecore_x_pixmap_free(cw->pixmap); - cw->pixmap = 0; - } - if ((cw->c->gl) && (_comp_mod->conf->texture_from_pixmap) && - (!cw->shaped) && (!cw->shape_changed) && (cw->pixmap)) - { - Evas_Native_Surface ns; - - ns.data.x11.visual = cw->vis; - ns.data.x11.pixmap = cw->pixmap; - evas_object_image_native_surface_set(cw->obj, &ns); - DBG("NATIVE SHOW1 [0x%x] %x %ix%i\n", cw->win, cw->pixmap, cw->pw, cw->ph); - cw->native = 1; - } -// ecore_x_window_resize(cw->win, cw->w, cw->h); - if (cw->pixmap) ecore_x_pixmap_free(cw->pixmap); - cw->pixmap = 0; - cw->pw = 0; - cw->ph = 0; - cw->native = 0; } + if ((cw->pw <= 0) || (cw->ph <= 0)) + { + ecore_x_pixmap_free(cw->pixmap); + cw->pixmap = 0; + } + if ((cw->c->gl) && (_comp_mod->conf->texture_from_pixmap) && + (!cw->shaped) && (!cw->shape_changed) && (cw->pixmap)) + { + Evas_Native_Surface ns; + + ns.data.x11.visual = cw->vis; + ns.data.x11.pixmap = cw->pixmap; + evas_object_image_native_surface_set(cw->obj, &ns); + DBG("NATIVE SHOW1 [0x%x] %x %ix%i\n", cw->win, cw->pixmap, cw->pw, cw->ph); + } + if (cw->pixmap) ecore_x_pixmap_free(cw->pixmap); + cw->pixmap = 0; + cw->pw = 0; + cw->ph = 0; + cw->native = 0; if (!cw->redirected) { ecore_x_composite_redirect_window(cw->win, ECORE_X_COMPOSITE_UPDATE_MANUAL); @@ -1016,7 +997,7 @@ _e_mod_comp_win_show(E_Comp_Win *cw) "base/theme/borders", "e/shadow/box")) ok = 0; - } + } if (!ok) { snprintf(buf, sizeof(buf), "%s/shadow.edj", @@ -1073,15 +1054,12 @@ _e_mod_comp_win_hide(E_Comp_Win *cw) // getting pixmap againand well - getting texture too again. why? if (cw->redirected) { - if (cw->native) evas_object_image_native_surface_set(cw->obj, NULL); if (cw->pixmap) ecore_x_pixmap_free(cw->pixmap); evas_object_image_size_set(cw->obj, 1, 1); cw->pixmap = 0; cw->pw = 0; cw->ph = 0; cw->native = 0; - ecore_x_composite_unredirect_window(cw->win, ECORE_X_COMPOSITE_UPDATE_MANUAL); - ecore_x_composite_redirect_window(cw->win, ECORE_X_COMPOSITE_UPDATE_MANUAL); cw->pixmap = ecore_x_composite_name_window_pixmap_get(cw->win); if (cw->pixmap) ecore_x_pixmap_geometry_get(cw->pixmap, NULL, NULL, &(cw->pw), &(cw->ph));