Enlightenment CVS committal Author : kwo Project : e16 Module : e
Dir : e16/e/src Modified Files: pager.c Log Message: Pager update tweaks. =================================================================== RCS file: /cvs/e/e16/e/src/pager.c,v retrieving revision 1.257 retrieving revision 1.258 diff -u -3 -r1.257 -r1.258 --- pager.c 27 Jan 2008 18:38:53 -0000 1.257 +++ pager.c 30 Jan 2008 23:34:04 -0000 1.258 @@ -54,6 +54,10 @@ #define PAGER_MODE_SNAP 1 #define PAGER_MODE_LIVE 2 +#define PAGER_UPD_EWIN_GEOM 0 +#define PAGER_UPD_EWIN_GONE 1 +#define PAGER_UPD_EWIN_DAMAGE 2 + #define EwinGetVX(ew) (ew->vx) #define EwinGetVY(ew) (ew->vy) #define EwinGetVX2(ew) (ew->vx + EoGetW(ew)) @@ -485,7 +489,7 @@ } static void -PagerUpdate(Pager * p, int x1, int y1, int x2, int y2) +PagerUpdate(Pager * p, int why, int x1, int y1, int x2, int y2) { if (!Conf_pagers.enable) return; @@ -500,7 +504,7 @@ p->y2 = y2; p->do_update = 1; - Mode_pagers.update_pending = 1; + Mode_pagers.update_pending |= 1 << why; } static void @@ -772,6 +776,7 @@ typedef struct { + int why; int x1, y1, x2, y2; } pager_update_data; @@ -780,17 +785,18 @@ { pager_update_data *pud = (pager_update_data *) prm; - PagerUpdate(p, pud->x1, pud->y1, pud->x2, pud->y2); + PagerUpdate(p, pud->why, pud->x1, pud->y1, pud->x2, pud->y2); } static void -PagersUpdate(Desk * dsk, int x1, int y1, int x2, int y2) +PagersUpdate(Desk * dsk, int why, int x1, int y1, int x2, int y2) { pager_update_data pud; if (ecore_list_count(pager_list) <= 0) return; + pud.why = why; pud.x1 = x1; pud.y1 = y1; pud.x2 = x2; @@ -823,21 +829,25 @@ PagersCheckUpdate(void) { static double tlast = 0.; - double t; + double t, dt; if (!Mode_pagers.update_pending || !Conf_pagers.enable) return; - t = GetTime(); - if (t - tlast < .05) + if (Mode_pagers.update_pending == (1 << PAGER_UPD_EWIN_DAMAGE)) { - /* The purpose of this timer is to trigger the idler */ - if (!Mode_pagers.timer_pending) - DoIn("pg-upd", .1, _PagersUpdateTimeout, 0, NULL); - Mode_pagers.timer_pending = 1; - return; + t = GetTime(); + dt = (Conf_pagers.scanspeed > 0) ? 1. / Conf_pagers.scanspeed : .1; + if (t - tlast < dt) + { + /* The purpose of this timer is to trigger the idler */ + if (!Mode_pagers.timer_pending) + DoIn("pg-upd", dt, _PagersUpdateTimeout, 0, NULL); + Mode_pagers.timer_pending = 1; + return; + } + tlast = t; } - tlast = t; PagersForeach(NULL, PagerCheckUpdate, NULL); @@ -925,17 +935,17 @@ switch (why) { - case 0: /* Change */ + case PAGER_UPD_EWIN_GEOM: if (!EoIsShown(ewin) || ewin->state.animated) return; break; - case 1: /* Gone */ + case PAGER_UPD_EWIN_GONE: if (ewin == HiwinGetEwin(hiwin, 0)) PagerHiwinHide(); break; - case 2: /* Damage */ + case PAGER_UPD_EWIN_DAMAGE: if (ewin->type == EWIN_TYPE_PAGER) return; if (PagersGetMode() != PAGER_MODE_LIVE) @@ -944,7 +954,7 @@ } dsk = (EoIsFloating(ewin)) ? DesksGetCurrent() : EoGetDesk(ewin); - PagersUpdate(dsk, EwinGetVX(ewin), EwinGetVY(ewin), + PagersUpdate(dsk, why, EwinGetVX(ewin), EwinGetVY(ewin), EwinGetVX2(ewin), EwinGetVY2(ewin)); } @@ -2018,7 +2028,8 @@ PagerHiwinHide(); break; case ESIGNAL_AREA_SWITCH_DONE: - PagersUpdate(DesksGetCurrent(), 0, 0, 99999, 99999); + PagersUpdate(DesksGetCurrent(), PAGER_UPD_EWIN_GEOM, + 0, 0, 99999, 99999); UpdatePagerSel(); break; @@ -2045,13 +2056,13 @@ break; case ESIGNAL_EWIN_UNMAP: - PagersUpdateEwin((EWin *) prm, 1); + PagersUpdateEwin((EWin *) prm, PAGER_UPD_EWIN_GONE); break; case ESIGNAL_EWIN_CHANGE: - PagersUpdateEwin((EWin *) prm, 0); + PagersUpdateEwin((EWin *) prm, PAGER_UPD_EWIN_GEOM); break; case ESIGNAL_EWIN_DAMAGE: - PagersUpdateEwin((EWin *) prm, 2); + PagersUpdateEwin((EWin *) prm, PAGER_UPD_EWIN_DAMAGE); break; } } ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs