From 4bafaa704d713c5487a555a1b2da49cf5478c64a Mon Sep 17 00:00:00 2001 From: Carsten Haitzler Date: Fri, 12 Mar 2010 08:47:13 +0000 Subject: [PATCH] reparent initwin to compositor win so init win doesnt hang while e gets up and going. SVN revision: 47153 --- src/modules/comp/e_mod_comp.c | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/src/modules/comp/e_mod_comp.c b/src/modules/comp/e_mod_comp.c index c0c43dd8b..522ba21c2 100644 --- a/src/modules/comp/e_mod_comp.c +++ b/src/modules/comp/e_mod_comp.c @@ -14,13 +14,11 @@ // 3. for unmapped windows - when window goes out of unmapped comp cache // make a miniature copy (1/4 width+height?) and set property on window // with pixmap id -// 6. other engine fast-paths (gl specifically)! // 8. transparenty property // 9. shortcut lots of stuff to draw inside the compositor - shelf, // wallpaper, efm - hell even menus and anything else in e (this is what // e18 was mostly about) -// 10. fullscreen windows need to be able to bypass compositing -// 11. handle root window resize! +// 10. fullscreen windows need to be able to bypass compositing *seems buggy* // ////////////////////////////////////////////////////////////////////////// @@ -1997,7 +1995,22 @@ _e_mod_comp_add(E_Manager *man) { E_Comp_Win *cw; int x, y, w, h, border; + char *wname = NULL, *wclass = NULL; + ecore_x_icccm_name_class_get(wins[i], &wname, &wclass); + if ((man->initwin == wins[i]) || + ((wname) && (wclass) && (!strcmp(wname, "E")) && + (!strcmp(wclass, "Init_Window")))) + { + free(wname); + free(wclass); + ecore_x_window_reparent(wins[i], c->win, 0, 0); + ecore_x_sync(); + continue; + } + if (wname) free(wname); + if (wclass) free(wclass); + wname = wclass = NULL; cw = _e_mod_comp_win_add(c, wins[i]); if (!cw) continue; ecore_x_window_geometry_get(cw->win, &x, &y, &w, &h); @@ -2005,9 +2018,7 @@ _e_mod_comp_add(E_Manager *man) if (wins[i] == c->win) continue; _e_mod_comp_win_configure(cw, x, y, w, h, border); if (ecore_x_window_visible_get(wins[i])) - { - _e_mod_comp_win_show(cw); - } + _e_mod_comp_win_show(cw); } free(wins); }