Enlightenment CVS committal Author : kwo Project : e16 Module : e
Dir : e16/e/src Modified Files: E.h areas.c borders.c desktops.c misc.c slideout.c startup.c Log Message: Fix various animation effects. =================================================================== RCS file: /cvsroot/enlightenment/e16/e/src/E.h,v retrieving revision 1.326 retrieving revision 1.327 diff -u -3 -r1.326 -r1.327 --- E.h 7 Sep 2004 19:36:33 -0000 1.326 +++ E.h 11 Sep 2004 10:45:21 -0000 1.327 @@ -2391,6 +2391,8 @@ char *EDirUserCache(void); void Quicksort(void **a, int l, int r, int (*CompareFunc) (void *d1, void *d2)); +void ETimedLoopInit(int k1, int k2, int speed); +int ETimedLoopNext(void); void __PRINTF__ Eprintf(const char *fmt, ...); /* moveresize.c */ =================================================================== RCS file: /cvsroot/enlightenment/e16/e/src/areas.c,v retrieving revision 1.73 retrieving revision 1.74 diff -u -3 -r1.73 -r1.74 --- areas.c 13 Aug 2004 20:41:25 -0000 1.73 +++ areas.c 11 Sep 2004 10:45:21 -0000 1.74 @@ -21,7 +21,6 @@ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include "E.h" -#include <sys/time.h> static int area_w = 3; static int area_h = 3; @@ -186,10 +185,7 @@ void SlideWindowsBy(Window * win, int num, int dx, int dy, int speed) { - int i, k, spd, x, y, min; - struct timeval timev1, timev2; - int dsec, dusec; - double tm; + int i, k, x, y; struct _xy { int x, y; @@ -199,16 +195,14 @@ if (num < 1) EDBUG_RETURN_; - spd = 16; - min = 2; xy = Emalloc(sizeof(struct _xy) * num); for (i = 0; i < num; i++) GetWinXY(win[i], &(xy[i].x), &(xy[i].y)); - for (k = 0; k <= 1024; k += spd) + ETimedLoopInit(0, 1024, speed); + for (k = 0; k <= 1024;) { - gettimeofday(&timev1, NULL); for (i = 0; i < num; i++) { x = ((xy[i].x * (1024 - k)) + ((xy[i].x + dx) * k)) >> 10; @@ -216,18 +210,8 @@ EMoveWindow(disp, win[i], x, y); } XSync(disp, False); - gettimeofday(&timev2, NULL); - dsec = timev2.tv_sec - timev1.tv_sec; - dusec = timev2.tv_usec - timev1.tv_usec; - if (dusec < 0) - { - dsec--; - dusec += 1000000; - } - tm = (double)dsec + (((double)dusec) / 1000000); - spd = (int)((double)speed * tm); - if (spd < min) - spd = min; + + k = ETimedLoopNext(); } for (i = 0; i < num; i++) =================================================================== RCS file: /cvsroot/enlightenment/e16/e/src/borders.c,v retrieving revision 1.227 retrieving revision 1.228 diff -u -3 -r1.227 -r1.228 --- borders.c 31 Aug 2004 17:24:39 -0000 1.227 +++ borders.c 11 Sep 2004 10:45:21 -0000 1.228 @@ -184,15 +184,11 @@ void SlideEwinTo(EWin * ewin, int fx, int fy, int tx, int ty, int speed) { - int k, spd, x, y, min, tmpx, tmpy, tmpw, tmph; - struct timeval timev1, timev2; - int dsec, dusec; - double tm; + int k, x, y, tmpx, tmpy; char firstlast; EDBUG(3, "SlideEwinTo"); - spd = 16; - min = 2; + firstlast = 0; Mode.doingslide = 1; SoundPlay("SOUND_WINDOW_SLIDE"); @@ -200,42 +196,33 @@ if (Conf.slidemode > 0) GrabX(); - for (k = 0; k <= 1024; k += spd) + ETimedLoopInit(0, 1024, speed); + for (k = 0; k <= 1024;) { - gettimeofday(&timev1, NULL); x = ((fx * (1024 - k)) + (tx * k)) >> 10; y = ((fy * (1024 - k)) + (ty * k)) >> 10; tmpx = x; tmpy = y; - tmpw = ewin->client.w; - tmph = ewin->client.h; if (Conf.slidemode == 0) EMoveWindow(disp, ewin->win, tmpx, tmpy); else - DrawEwinShape(ewin, Conf.slidemode, tmpx, tmpy, tmpw, tmph, - firstlast); + DrawEwinShape(ewin, Conf.slidemode, tmpx, tmpy, + ewin->client.w, ewin->client.h, firstlast); if (firstlast == 0) firstlast = 1; XSync(disp, False); - gettimeofday(&timev2, NULL); - dsec = timev2.tv_sec - timev1.tv_sec; - dusec = timev2.tv_usec - timev1.tv_usec; - if (dusec < 0) - { - dsec--; - dusec += 1000000; - } - tm = (double)dsec + (((double)dusec) / 1000000); - spd = (int)((double)speed * tm); - if (spd < min) - spd = min; + + k = ETimedLoopNext(); } DrawEwinShape(ewin, Conf.slidemode, x, y, ewin->client.w, ewin->client.h, 2); MoveEwin(ewin, tx, ty); Mode.doingslide = 0; + if (Conf.slidemode > 0) UngrabX(); + SoundPlay("SOUND_WINDOW_SLIDE_END"); + EDBUG_RETURN_; } @@ -243,11 +230,7 @@ SlideEwinsTo(EWin ** ewin, int *fx, int *fy, int *tx, int *ty, int num_wins, int speed) { - int k, spd, *x = NULL, *y = - NULL, min, tmpx, tmpy, tmpw, tmph, i; - struct timeval timev1, timev2; - int dsec, dusec; - double tm; + int k, *x = NULL, *y = NULL, tmpx, tmpy, tmpw, tmph, i; char firstlast; EDBUG(3, "SlideEwinsTo"); @@ -257,48 +240,38 @@ x = Emalloc(sizeof(int) * num_wins); y = Emalloc(sizeof(int) * num_wins); } - spd = 16; - min = 2; + firstlast = 0; Mode.doingslide = 1; SoundPlay("SOUND_WINDOW_SLIDE"); + if (Conf.slidemode > 0) GrabX(); - for (k = 0; k <= 1024; k += spd) + + ETimedLoopInit(0, 1024, speed); + for (k = 0; k <= 1024;) { for (i = 0; i < num_wins; i++) { - if (ewin[i]) - { - gettimeofday(&timev1, NULL); - x[i] = ((fx[i] * (1024 - k)) + (tx[i] * k)) >> 10; - y[i] = ((fy[i] * (1024 - k)) + (ty[i] * k)) >> 10; - tmpx = x[i]; - tmpy = y[i]; - tmpw = ewin[i]->client.w; - tmph = ewin[i]->client.h; - if (ewin[i]->menu) - EMoveWindow(disp, ewin[i]->win, tmpx, tmpy); - else - DrawEwinShape(ewin[i], 0, tmpx, tmpy, tmpw, tmph, - firstlast); - if (firstlast == 0) - firstlast = 1; - XSync(disp, False); - gettimeofday(&timev2, NULL); - dsec = timev2.tv_sec - timev1.tv_sec; - dusec = timev2.tv_usec - timev1.tv_usec; - if (dusec < 0) - { - dsec--; - dusec += 1000000; - } - tm = (double)dsec + (((double)dusec) / 1000000); - spd = (int)((double)speed * tm); - if (spd < min) - spd = min; - } + if (!ewin[i]) + continue; + + x[i] = ((fx[i] * (1024 - k)) + (tx[i] * k)) >> 10; + y[i] = ((fy[i] * (1024 - k)) + (ty[i] * k)) >> 10; + tmpx = x[i]; + tmpy = y[i]; + tmpw = ewin[i]->client.w; + tmph = ewin[i]->client.h; + if (ewin[i]->menu) + EMoveWindow(disp, ewin[i]->win, tmpx, tmpy); + else + DrawEwinShape(ewin[i], 0, tmpx, tmpy, tmpw, tmph, firstlast); + if (firstlast == 0) + firstlast = 1; + XSync(disp, False); } + /* We may loop faster here than originally intended */ + k = ETimedLoopNext(); } for (i = 0; i < num_wins; i++) @@ -314,11 +287,14 @@ Mode.doingslide = 0; if (Conf.slidemode > 0) UngrabX(); + SoundPlay("SOUND_WINDOW_SLIDE_END"); + if (x) Efree(x); if (y) Efree(y); + EDBUG_RETURN_; } @@ -2694,11 +2670,7 @@ EwinShade(EWin * ewin) { XSetWindowAttributes att; - int i, j, speed, a, b, c, d, ww, hh; - int k, spd, min; - struct timeval timev1, timev2; - int dsec, dusec; - double tm; + int i, j, k, speed, a, b, c, d, ww, hh; char pq; EDBUG(4, "EwinShade"); @@ -2717,8 +2689,6 @@ Mode.queue_up = 0; speed = Conf.shadespeed; - spd = 32; - min = 2; GrabX(); @@ -2730,43 +2700,35 @@ MinShadeSize(ewin, &b, &d); a = ewin->w; if ((Conf.animate_shading) || (ewin->menu)) - for (k = 0; k <= 1024; k += spd) - { - gettimeofday(&timev1, NULL); - i = ((a * (1024 - k)) + (b * k)) >> 10; - ewin->w = i; - if (ewin->w < 1) - ewin->w = 1; - ww = ewin->w - ewin->border->border.left - - ewin->border->border.right; - if (ww < 1) - ww = 1; - hh = ewin->client.h; - EMoveResizeWindow(disp, ewin->win_container, - ewin->border->border.left, - ewin->border->border.top, ww, hh); - EMoveResizeWindow(disp, ewin->win, ewin->x, ewin->y, ewin->w, - ewin->h); - CalcEwinSizes(ewin); - if (ewin->client.shaped) - EShapeCombineShape(disp, ewin->win_container, - ShapeBounding, -(ewin->client.w - ww), - 0, ewin->client.win, ShapeBounding, - ShapeSet); - EwinPropagateShapes(ewin); - gettimeofday(&timev2, NULL); - dsec = timev2.tv_sec - timev1.tv_sec; - dusec = timev2.tv_usec - timev1.tv_usec; - if (dusec < 0) - { - dsec--; - dusec += 1000000; - } - tm = (double)dsec + (((double)dusec) / 1000000); - spd = (int)((double)speed * tm); - if (spd < min) - spd = min; - } + { + ETimedLoopInit(0, 1024, speed); + for (k = 0; k <= 1024;) + { + i = ((a * (1024 - k)) + (b * k)) >> 10; + ewin->w = i; + if (ewin->w < 1) + ewin->w = 1; + ww = ewin->w - ewin->border->border.left - + ewin->border->border.right; + if (ww < 1) + ww = 1; + hh = ewin->client.h; + EMoveResizeWindow(disp, ewin->win_container, + ewin->border->border.left, + ewin->border->border.top, ww, hh); + EMoveResizeWindow(disp, ewin->win, ewin->x, ewin->y, ewin->w, + ewin->h); + CalcEwinSizes(ewin); + if (ewin->client.shaped) + EShapeCombineShape(disp, ewin->win_container, + ShapeBounding, -(ewin->client.w - ww), + 0, ewin->client.win, ShapeBounding, + ShapeSet); + EwinPropagateShapes(ewin); + + k = ETimedLoopNext(); + } + } ewin->shaded = 2; ewin->w = b; EMoveResizeWindow(disp, ewin->win_container, -30, -30, 1, 1); @@ -2782,44 +2744,36 @@ c = ewin->x; d = ewin->x + ewin->w - b; if ((Conf.animate_shading) || (ewin->menu)) - for (k = 0; k <= 1024; k += spd) - { - gettimeofday(&timev1, NULL); - i = ((a * (1024 - k)) + (b * k)) >> 10; - j = ((c * (1024 - k)) + (d * k)) >> 10; - ewin->w = i; - ewin->x = j; - if (ewin->w < 1) - ewin->w = 1; - ww = ewin->w - ewin->border->border.left - - ewin->border->border.right; - if (ww < 1) - ww = 1; - hh = ewin->client.h; - EMoveResizeWindow(disp, ewin->win_container, - ewin->border->border.left, - ewin->border->border.top, ww, hh); - EMoveResizeWindow(disp, ewin->win, ewin->x, ewin->y, ewin->w, - ewin->h); - CalcEwinSizes(ewin); - if (ewin->client.shaped) - EShapeCombineShape(disp, ewin->win_container, - ShapeBounding, 0, 0, ewin->client.win, - ShapeBounding, ShapeSet); - EwinPropagateShapes(ewin); - gettimeofday(&timev2, NULL); - dsec = timev2.tv_sec - timev1.tv_sec; - dusec = timev2.tv_usec - timev1.tv_usec; - if (dusec < 0) - { - dsec--; - dusec += 1000000; - } - tm = (double)dsec + (((double)dusec) / 1000000); - spd = (int)((double)speed * tm); - if (spd < min) - spd = min; - } + { + ETimedLoopInit(0, 1024, speed); + for (k = 0; k <= 1024;) + { + i = ((a * (1024 - k)) + (b * k)) >> 10; + j = ((c * (1024 - k)) + (d * k)) >> 10; + ewin->w = i; + ewin->x = j; + if (ewin->w < 1) + ewin->w = 1; + ww = ewin->w - ewin->border->border.left - + ewin->border->border.right; + if (ww < 1) + ww = 1; + hh = ewin->client.h; + EMoveResizeWindow(disp, ewin->win_container, + ewin->border->border.left, + ewin->border->border.top, ww, hh); + EMoveResizeWindow(disp, ewin->win, ewin->x, ewin->y, ewin->w, + ewin->h); + CalcEwinSizes(ewin); + if (ewin->client.shaped) + EShapeCombineShape(disp, ewin->win_container, + ShapeBounding, 0, 0, ewin->client.win, + ShapeBounding, ShapeSet); + EwinPropagateShapes(ewin); + + k = ETimedLoopNext(); + } + } ewin->shaded = 2; ewin->w = b; ewin->x = d; @@ -2835,44 +2789,36 @@ MinShadeSize(ewin, &b, &d); b = d; if ((Conf.animate_shading) || (ewin->menu)) - for (k = 0; k <= 1024; k += spd) - { - gettimeofday(&timev1, NULL); - i = ((a * (1024 - k)) + (b * k)) >> 10; - ewin->h = i; - if (ewin->h < 1) - ewin->h = 1; - hh = ewin->h - ewin->border->border.top - - ewin->border->border.bottom; - if (hh < 1) - hh = 1; - ww = ewin->client.w; - EMoveResizeWindow(disp, ewin->win_container, - ewin->border->border.left, - ewin->border->border.top, ww, hh); - EMoveResizeWindow(disp, ewin->win, ewin->x, ewin->y, ewin->w, - ewin->h); - CalcEwinSizes(ewin); - if (ewin->client.shaped) - EShapeCombineShape(disp, ewin->win_container, - ShapeBounding, 0, - -(ewin->client.h - hh), - ewin->client.win, ShapeBounding, - ShapeSet); - EwinPropagateShapes(ewin); - gettimeofday(&timev2, NULL); - dsec = timev2.tv_sec - timev1.tv_sec; - dusec = timev2.tv_usec - timev1.tv_usec; - if (dusec < 0) - { - dsec--; - dusec += 1000000; - } - tm = (double)dsec + (((double)dusec) / 1000000); - spd = (int)((double)speed * tm); - if (spd < min) - spd = min; - } + { + ETimedLoopInit(0, 1024, speed); + for (k = 0; k <= 1024;) + { + i = ((a * (1024 - k)) + (b * k)) >> 10; + ewin->h = i; + if (ewin->h < 1) + ewin->h = 1; + hh = ewin->h - ewin->border->border.top - + ewin->border->border.bottom; + if (hh < 1) + hh = 1; + ww = ewin->client.w; + EMoveResizeWindow(disp, ewin->win_container, + ewin->border->border.left, + ewin->border->border.top, ww, hh); + EMoveResizeWindow(disp, ewin->win, ewin->x, ewin->y, ewin->w, + ewin->h); + CalcEwinSizes(ewin); + if (ewin->client.shaped) + EShapeCombineShape(disp, ewin->win_container, + ShapeBounding, 0, + -(ewin->client.h - hh), + ewin->client.win, ShapeBounding, + ShapeSet); + EwinPropagateShapes(ewin); + + k = ETimedLoopNext(); + } + } ewin->shaded = 2; ewin->h = b; EMoveResizeWindow(disp, ewin->win_container, -30, -30, 1, 1); @@ -2889,44 +2835,35 @@ c = ewin->y; d = ewin->y + ewin->h - b; if ((Conf.animate_shading) || (ewin->menu)) - for (k = 0; k <= 1024; k += spd) - { - gettimeofday(&timev1, NULL); - i = ((a * (1024 - k)) + (b * k)) >> 10; - j = ((c * (1024 - k)) + (d * k)) >> 10; - ewin->h = i; - ewin->y = j; - if (ewin->h < 1) - ewin->h = 1; - hh = ewin->h - ewin->border->border.top - - ewin->border->border.bottom; - if (hh < 1) - hh = 1; - ww = ewin->client.w; - EMoveResizeWindow(disp, ewin->win_container, - ewin->border->border.left, - ewin->border->border.top, ww, hh); - EMoveResizeWindow(disp, ewin->win, ewin->x, ewin->y, ewin->w, - ewin->h); - CalcEwinSizes(ewin); - if (ewin->client.shaped) - EShapeCombineShape(disp, ewin->win_container, - ShapeBounding, 0, 0, ewin->client.win, - ShapeBounding, ShapeSet); - EwinPropagateShapes(ewin); - gettimeofday(&timev2, NULL); - dsec = timev2.tv_sec - timev1.tv_sec; - dusec = timev2.tv_usec - timev1.tv_usec; - if (dusec < 0) - { - dsec--; - dusec += 1000000; - } - tm = (double)dsec + (((double)dusec) / 1000000); - spd = (int)((double)speed * tm); - if (spd < min) - spd = min; - } + { + ETimedLoopInit(0, 1024, speed); + for (k = 0; k <= 1024;) + { + i = ((a * (1024 - k)) + (b * k)) >> 10; + j = ((c * (1024 - k)) + (d * k)) >> 10; + ewin->h = i; + ewin->y = j; + if (ewin->h < 1) + ewin->h = 1; + hh = ewin->h - ewin->border->border.top - + ewin->border->border.bottom; + if (hh < 1) + hh = 1; + ww = ewin->client.w; + EMoveResizeWindow(disp, ewin->win_container, + ewin->border->border.left, + ewin->border->border.top, ww, hh); + EMoveResizeWindow(disp, ewin->win, ewin->x, ewin->y, ewin->w, + ewin->h); + CalcEwinSizes(ewin); + if (ewin->client.shaped) + EShapeCombineShape(disp, ewin->win_container, + ShapeBounding, 0, 0, ewin->client.win, + ShapeBounding, ShapeSet); + EwinPropagateShapes(ewin); + k = ETimedLoopNext(); + } + } ewin->shaded = 2; ewin->h = b; ewin->y = d; @@ -2963,14 +2900,11 @@ EwinUnShade(EWin * ewin) { XSetWindowAttributes att; - int i, j, speed, a, b, c, d; - int k, spd, min; - struct timeval timev1, timev2; - int dsec, dusec; - double tm; + int i, j, k, speed, a, b, c, d; char pq; EDBUG(4, "EwinUnShade"); + if (GetZoomEWin() == ewin) EDBUG_RETURN_; if (!ewin->shaded || ewin->iconified) @@ -2980,8 +2914,6 @@ Mode.queue_up = 0; speed = Conf.shadespeed; - spd = 32; - min = 2; GrabX(); @@ -3002,41 +2934,33 @@ EMapWindow(disp, ewin->client.win); EMapWindow(disp, ewin->win_container); if ((Conf.animate_shading) || (ewin->menu)) - for (k = 0; k <= 1024; k += spd) - { - gettimeofday(&timev1, NULL); - i = ((a * (1024 - k)) + (b * k)) >> 10; - ewin->w = i; - EMoveResizeWindow(disp, ewin->win_container, - ewin->border->border.left, - ewin->border->border.top, - ewin->w - ewin->border->border.left - - ewin->border->border.right, ewin->client.h); - EMoveResizeWindow(disp, ewin->win, ewin->x, ewin->y, ewin->w, - ewin->h); - CalcEwinSizes(ewin); - if (ewin->client.shaped) - EShapeCombineShape(disp, ewin->win_container, - ShapeBounding, - -(ewin->client.w - - (ewin->w - ewin->border->border.left - - ewin->border->border.right)), 0, - ewin->client.win, ShapeBounding, - ShapeSet); - EwinPropagateShapes(ewin); - gettimeofday(&timev2, NULL); - dsec = timev2.tv_sec - timev1.tv_sec; - dusec = timev2.tv_usec - timev1.tv_usec; - if (dusec < 0) - { - dsec--; - dusec += 1000000; - } - tm = (double)dsec + (((double)dusec) / 1000000); - spd = (int)((double)speed * tm); - if (spd < min) - spd = min; - } + { + ETimedLoopInit(0, 1024, speed); + for (k = 0; k <= 1024;) + { + i = ((a * (1024 - k)) + (b * k)) >> 10; + ewin->w = i; + EMoveResizeWindow(disp, ewin->win_container, + ewin->border->border.left, + ewin->border->border.top, + ewin->w - ewin->border->border.left - + ewin->border->border.right, ewin->client.h); + EMoveResizeWindow(disp, ewin->win, ewin->x, ewin->y, ewin->w, + ewin->h); + CalcEwinSizes(ewin); + if (ewin->client.shaped) + EShapeCombineShape(disp, ewin->win_container, + ShapeBounding, + -(ewin->client.w - + (ewin->w - ewin->border->border.left - + ewin->border->border.right)), 0, + ewin->client.win, ShapeBounding, + ShapeSet); + EwinPropagateShapes(ewin); + + k = ETimedLoopNext(); + } + } ewin->w = b; MoveResizeEwin(ewin, ewin->x, ewin->y, ewin->client.w, ewin->client.h); XSync(disp, False); @@ -3059,39 +2983,31 @@ EMapWindow(disp, ewin->client.win); EMapWindow(disp, ewin->win_container); if ((Conf.animate_shading) || (ewin->menu)) - for (k = 0; k <= 1024; k += spd) - { - gettimeofday(&timev1, NULL); - i = ((a * (1024 - k)) + (b * k)) >> 10; - j = ((c * (1024 - k)) + (d * k)) >> 10; - ewin->w = i; - ewin->x = j; - EMoveResizeWindow(disp, ewin->win_container, - ewin->border->border.left, - ewin->border->border.top, - ewin->w - ewin->border->border.left - - ewin->border->border.right, ewin->client.h); - EMoveResizeWindow(disp, ewin->win, ewin->x, ewin->y, ewin->w, - ewin->h); - CalcEwinSizes(ewin); - if (ewin->client.shaped) - EShapeCombineShape(disp, ewin->win_container, - ShapeBounding, 0, 0, ewin->client.win, - ShapeBounding, ShapeSet); - EwinPropagateShapes(ewin); - gettimeofday(&timev2, NULL); - dsec = timev2.tv_sec - timev1.tv_sec; - dusec = timev2.tv_usec - timev1.tv_usec; - if (dusec < 0) - { - dsec--; - dusec += 1000000; - } - tm = (double)dsec + (((double)dusec) / 1000000); - spd = (int)((double)speed * tm); - if (spd < min) - spd = min; - } + { + ETimedLoopInit(0, 1024, speed); + for (k = 0; k <= 1024;) + { + i = ((a * (1024 - k)) + (b * k)) >> 10; + j = ((c * (1024 - k)) + (d * k)) >> 10; + ewin->w = i; + ewin->x = j; + EMoveResizeWindow(disp, ewin->win_container, + ewin->border->border.left, + ewin->border->border.top, + ewin->w - ewin->border->border.left - + ewin->border->border.right, ewin->client.h); + EMoveResizeWindow(disp, ewin->win, ewin->x, ewin->y, ewin->w, + ewin->h); + CalcEwinSizes(ewin); + if (ewin->client.shaped) + EShapeCombineShape(disp, ewin->win_container, + ShapeBounding, 0, 0, ewin->client.win, + ShapeBounding, ShapeSet); + EwinPropagateShapes(ewin); + + k = ETimedLoopNext(); + } + } ewin->w = b; ewin->x = d; MoveResizeEwin(ewin, ewin->x, ewin->y, ewin->client.w, ewin->client.h); @@ -3112,41 +3028,33 @@ EMapWindow(disp, ewin->client.win); EMapWindow(disp, ewin->win_container); if ((Conf.animate_shading) || (ewin->menu)) - for (k = 0; k <= 1024; k += spd) - { - gettimeofday(&timev1, NULL); - i = ((a * (1024 - k)) + (b * k)) >> 10; - ewin->h = i; - EMoveResizeWindow(disp, ewin->win_container, - ewin->border->border.left, - ewin->border->border.top, ewin->client.w, - ewin->h - ewin->border->border.top - - ewin->border->border.bottom); - EMoveResizeWindow(disp, ewin->win, ewin->x, ewin->y, ewin->w, - ewin->h); - CalcEwinSizes(ewin); - if (ewin->client.shaped) - EShapeCombineShape(disp, ewin->win_container, - ShapeBounding, 0, - -(ewin->client.h - - (ewin->h - ewin->border->border.top - - ewin->border->border.bottom)), - ewin->client.win, ShapeBounding, - ShapeSet); - EwinPropagateShapes(ewin); - gettimeofday(&timev2, NULL); - dsec = timev2.tv_sec - timev1.tv_sec; - dusec = timev2.tv_usec - timev1.tv_usec; - if (dusec < 0) - { - dsec--; - dusec += 1000000; - } - tm = (double)dsec + (((double)dusec) / 1000000); - spd = (int)((double)speed * tm); - if (spd < min) - spd = min; - } + { + ETimedLoopInit(0, 1024, speed); + for (k = 0; k <= 1024;) + { + i = ((a * (1024 - k)) + (b * k)) >> 10; + ewin->h = i; + EMoveResizeWindow(disp, ewin->win_container, + ewin->border->border.left, + ewin->border->border.top, ewin->client.w, + ewin->h - ewin->border->border.top - + ewin->border->border.bottom); + EMoveResizeWindow(disp, ewin->win, ewin->x, ewin->y, ewin->w, + ewin->h); + CalcEwinSizes(ewin); + if (ewin->client.shaped) + EShapeCombineShape(disp, ewin->win_container, + ShapeBounding, 0, + -(ewin->client.h - + (ewin->h - ewin->border->border.top - + ewin->border->border.bottom)), + ewin->client.win, ShapeBounding, + ShapeSet); + EwinPropagateShapes(ewin); + + k = ETimedLoopNext(); + } + } ewin->h = b; MoveResizeEwin(ewin, ewin->x, ewin->y, ewin->client.w, ewin->client.h); XSync(disp, False); @@ -3169,39 +3077,31 @@ EMapWindow(disp, ewin->client.win); EMapWindow(disp, ewin->win_container); if ((Conf.animate_shading) || (ewin->menu)) - for (k = 0; k <= 1024; k += spd) - { - gettimeofday(&timev1, NULL); - i = ((a * (1024 - k)) + (b * k)) >> 10; - j = ((c * (1024 - k)) + (d * k)) >> 10; - ewin->h = i; - ewin->y = j; - EMoveResizeWindow(disp, ewin->win_container, - ewin->border->border.left, - ewin->border->border.top, ewin->client.w, - ewin->h - ewin->border->border.top - - ewin->border->border.bottom); - EMoveResizeWindow(disp, ewin->win, ewin->x, ewin->y, ewin->w, - ewin->h); - CalcEwinSizes(ewin); - if (ewin->client.shaped) - EShapeCombineShape(disp, ewin->win_container, - ShapeBounding, 0, 0, ewin->client.win, - ShapeBounding, ShapeSet); - EwinPropagateShapes(ewin); - gettimeofday(&timev2, NULL); - dsec = timev2.tv_sec - timev1.tv_sec; - dusec = timev2.tv_usec - timev1.tv_usec; - if (dusec < 0) - { - dsec--; - dusec += 1000000; - } - tm = (double)dsec + (((double)dusec) / 1000000); - spd = (int)((double)speed * tm); - if (spd < min) - spd = min; - } + { + ETimedLoopInit(0, 1024, speed); + for (k = 0; k <= 1024;) + { + i = ((a * (1024 - k)) + (b * k)) >> 10; + j = ((c * (1024 - k)) + (d * k)) >> 10; + ewin->h = i; + ewin->y = j; + EMoveResizeWindow(disp, ewin->win_container, + ewin->border->border.left, + ewin->border->border.top, ewin->client.w, + ewin->h - ewin->border->border.top - + ewin->border->border.bottom); + EMoveResizeWindow(disp, ewin->win, ewin->x, ewin->y, ewin->w, + ewin->h); + CalcEwinSizes(ewin); + if (ewin->client.shaped) + EShapeCombineShape(disp, ewin->win_container, + ShapeBounding, 0, 0, ewin->client.win, + ShapeBounding, ShapeSet); + EwinPropagateShapes(ewin); + + k = ETimedLoopNext(); + } + } ewin->h = b; ewin->y = d; MoveResizeEwin(ewin, ewin->x, ewin->y, ewin->client.w, ewin->client.h); =================================================================== RCS file: /cvsroot/enlightenment/e16/e/src/desktops.c,v retrieving revision 1.100 retrieving revision 1.101 diff -u -3 -r1.100 -r1.101 --- desktops.c 13 Aug 2004 20:54:53 -0000 1.100 +++ desktops.c 11 Sep 2004 10:45:21 -0000 1.101 @@ -23,7 +23,6 @@ #define DECLARE_STRUCT_BUTTON #include "E.h" #include <time.h> -#include <sys/time.h> #define EDESK_EVENT_MASK \ (KeyPressMask | KeyReleaseMask | ButtonPressMask | ButtonReleaseMask | \ @@ -188,37 +187,25 @@ void SlideWindowTo(Window win, int fx, int fy, int tx, int ty, int speed) { - int k, spd, x, y, min; - struct timeval timev1, timev2; - int dsec, dusec; - double tm; + int k, x, y; EDBUG(5, "SlideWindowTo"); - spd = 16; - min = 2; + GrabX(); - for (k = 0; k <= 1024; k += spd) + + ETimedLoopInit(0, 1024, speed); + for (k = 0; k <= 1024;) { - gettimeofday(&timev1, NULL); x = ((fx * (1024 - k)) + (tx * k)) >> 10; y = ((fy * (1024 - k)) + (ty * k)) >> 10; EMoveWindow(disp, win, x, y); XSync(disp, False); - gettimeofday(&timev2, NULL); - dsec = timev2.tv_sec - timev1.tv_sec; - dusec = timev2.tv_usec - timev1.tv_usec; - if (dusec < 0) - { - dsec--; - dusec += 1000000; - } - tm = (double)dsec + (((double)dusec) / 1000000); - spd = (int)((double)speed * tm); - if (spd < min) - spd = min; + + k = ETimedLoopNext(); } EMoveWindow(disp, win, tx, ty); UngrabX(); + EDBUG_RETURN_; } =================================================================== RCS file: /cvsroot/enlightenment/e16/e/src/misc.c,v retrieving revision 1.58 retrieving revision 1.59 diff -u -3 -r1.58 -r1.59 --- misc.c 2 Jun 2004 22:44:33 -0000 1.58 +++ misc.c 11 Sep 2004 10:45:21 -0000 1.59 @@ -21,6 +21,7 @@ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include "E.h" +#include <sys/time.h> static char *userDir = NULL; static char *cacheDir = NULL; @@ -180,6 +181,61 @@ } } +/* + * Stuff to make loops for animated effects. + */ +struct timeval etl_tv_last; +static int etl_speed; +static int etl_k1, etl_k2, etl_ki; +static double etl_k; + +void +ETimedLoopInit(int k1, int k2, int speed) +{ + etl_k1 = k1; + etl_k2 = k2; + etl_speed = speed; + + etl_k = 1.0 * etl_k1; + gettimeofday(&etl_tv_last, NULL); +} + +int +ETimedLoopNext(void) +{ + struct timeval tv; + int dsec, dusec; + double spd, tm; + + etl_ki++; /* Increment iteration count */ + + /* Find elapsed time since loop start */ + gettimeofday(&tv, NULL); + dsec = tv.tv_sec - etl_tv_last.tv_sec; + dusec = tv.tv_usec - etl_tv_last.tv_usec; + etl_tv_last.tv_sec = tv.tv_sec; + etl_tv_last.tv_usec = tv.tv_usec; + if (dusec < 0) + { + dsec--; + dusec += 1000000; + } + tm = (double)dsec + (((double)dusec) / 1000000); + + spd = ((double)etl_speed * tm); + if (spd < 0.001) /* More or less arbitrary limit */ + spd = 0.001; +#if 0 + Eprintf("SlideEwinTo k=%4f tm=%.3f spd=%f\n", etl_k, 1e3 * tm, spd); +#endif + etl_k += spd; + + return (int)etl_k; +} + +/* + * Debug/error message printing. + */ void Eprintf(const char *fmt, ...) { =================================================================== RCS file: /cvsroot/enlightenment/e16/e/src/slideout.c,v retrieving revision 1.22 retrieving revision 1.23 diff -u -3 -r1.22 -r1.23 --- slideout.c 7 Jun 2004 16:46:08 -0000 1.22 +++ slideout.c 11 Sep 2004 10:45:21 -0000 1.23 @@ -22,7 +22,6 @@ */ #define DECLARE_STRUCT_BUTTON #include "E.h" -#include <sys/time.h> struct _slideout { @@ -42,39 +41,27 @@ SlideWindowSizeTo(Window win, int fx, int fy, int tx, int ty, int fw, int fh, int tw, int th, int speed) { - int k, spd, x, y, min, w, h; - struct timeval timev1, timev2; - int dsec, dusec; - double tm; + int k, x, y, w, h; EDBUG(5, "SlideWindowTo"); - spd = 16; - min = 2; + GrabX(); - for (k = 0; k <= 1024; k += spd) + + ETimedLoopInit(0, 1024, speed); + for (k = 0; k <= 1024;) { - gettimeofday(&timev1, NULL); x = ((fx * (1024 - k)) + (tx * k)) >> 10; y = ((fy * (1024 - k)) + (ty * k)) >> 10; w = ((fw * (1024 - k)) + (tw * k)) >> 10; h = ((fh * (1024 - k)) + (th * k)) >> 10; EMoveResizeWindow(disp, win, x, y, w, h); XSync(disp, False); - gettimeofday(&timev2, NULL); - dsec = timev2.tv_sec - timev1.tv_sec; - dusec = timev2.tv_usec - timev1.tv_usec; - if (dusec < 0) - { - dsec--; - dusec += 1000000; - } - tm = (double)dsec + (((double)dusec) / 1000000); - spd = (int)((double)speed * tm); - if (spd < min) - spd = min; + + k = ETimedLoopNext(); } EMoveResizeWindow(disp, win, tx, ty, tw, th); UngrabX(); + EDBUG_RETURN_; } =================================================================== RCS file: /cvsroot/enlightenment/e16/e/src/startup.c,v retrieving revision 1.44 retrieving revision 1.45 diff -u -3 -r1.44 -r1.45 --- startup.c 3 Jun 2004 18:04:46 -0000 1.44 +++ startup.c 11 Sep 2004 10:45:21 -0000 1.45 @@ -21,7 +21,6 @@ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include "E.h" -#include <sys/time.h> #include <time.h> static int @@ -234,23 +233,15 @@ } else { - int k, spd, x, y, xOffset, yOffset, ty, fy; - int min, speed; - - /* we have this many so that we save on lines o code - eAndroid */ - struct timeval timev1, timev2; - int dsec, dusec; - double tm; + int k, x, y, xOffset, yOffset, ty, fy; if ((!ic) || (!bg)) EDBUG_RETURN_; - speed = Conf.slidespeedcleanup / 2; - spd = 16; - min = 2; fy = 0; - for (k = 0; k <= 1024; k += spd) + ETimedLoopInit(0, 1024, Conf.slidespeedcleanup / 2); + for (k = 0; k <= 1024;) { if (bg_sideways) { /* so we can have two different slide methods */ @@ -268,22 +259,12 @@ yOffset = ((fy * (1024 - k)) + (ty * k)) >> 10; y = ty; } - gettimeofday(&timev1, NULL); + EMoveWindow(disp, w1, x + xOffset, -y - yOffset); EMoveWindow(disp, w2, -x - xOffset, y + yOffset); XSync(disp, False); - gettimeofday(&timev2, NULL); - dsec = timev2.tv_sec - timev1.tv_sec; - dusec = timev2.tv_usec - timev1.tv_usec; - if (dusec < 0) - { - dsec--; - dusec += 1000000; - } - tm = (double)dsec + (((double)dusec) / 1000000); - spd = (int)((double)speed * tm); - if (spd < min) - spd = min; + + k = ETimedLoopNext(); } EDestroyWindow(disp, w1); ------------------------------------------------------- This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170 Project Admins to receive an Apple iPod Mini FREE for your judgement on who ports your project to Linux PPC the best. Sponsored by IBM. Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php _______________________________________________ enlightenment-cvs mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs