| --- libmng_data.h.orig 2007-04-20 10:41:58.000000000 +0200 |
| +++ libmng_data.h 2007-07-14 00:00:00.000000000 +0200 |
| @@ -658,6 +658,9 @@ |
| mng_int32 iFrameclipb; |
| |
| mng_uint32 iNextdelay; /* delay *after* next image */ |
| + |
| + mng_bool bForcedelay; |
| + mng_uint32 iAccumdelay; |
| #endif |
| |
| #ifndef MNG_SKIPCHUNK_SHOW |
| --- libmng_display.c.orig 2007-04-20 10:41:58.000000000 +0200 |
| +++ libmng_display.c 2007-07-14 00:00:00.000000000 +0200 |
| @@ -384,8 +384,9 @@ |
| |
| { |
| #ifndef MNG_SKIPCHUNK_FRAM |
| - if (pData->iFramedelay > 0) /* real delay ? */ |
| + if (pData->iFramedelay > 0 || pData->bForcedelay) /* real delay ? */ |
| { /* let the app refresh first ? */ |
| + pData->bForcedelay = MNG_FALSE; |
| if ((pData->bRunning) && (!pData->bSkipping) && |
| (pData->iUpdatetop < pData->iUpdatebottom) && (pData->iUpdateleft < pData->iUpdateright)) |
| if (!pData->fRefresh (((mng_handle)pData), |
| @@ -455,6 +456,7 @@ |
| pData->iFrametime = pData->iFrametime + iWaitfor; |
| /* setup for next delay */ |
| pData->iFramedelay = pData->iNextdelay; |
| + pData->iAccumdelay += pData->iFramedelay; |
| #endif |
| } |
| |
| @@ -3340,6 +3342,9 @@ |
| MNG_TRACE (pData, MNG_FN_PROCESS_DISPLAY_MEND, MNG_LC_START); |
| #endif |
| |
| + pData->bForcedelay = pData->iAccumdelay ? MNG_FALSE : MNG_TRUE; |
| + pData->iAccumdelay = 0; |
| + |
| #ifdef MNG_SUPPORT_DYNAMICMNG |
| if (pData->bStopafterseek) /* need to stop after this ? */ |
| { |
| --- libmng_hlapi.c.orig 2007-07-06 18:23:04.000000000 +0200 |
| +++ libmng_hlapi.c 2007-07-14 00:00:00.000000000 +0200 |
| @@ -446,6 +446,9 @@ |
| pData->iFrameclipb = 0; |
| |
| pData->iNextdelay = 1; |
| + |
| + pData->bForcedelay = MNG_FALSE; |
| + pData->iAccumdelay = 0; |
| #endif |
| |
| #ifndef MNG_SKIPCHUNK_SHOW |
| @@ -1737,6 +1740,9 @@ |
| pData->iFrameclipb = 0; |
| |
| pData->iNextdelay = 1; |
| + |
| + pData->bForcedelay = MNG_FALSE; |
| + pData->iAccumdelay = 0; |
| #endif |
| |
| #ifndef MNG_SKIPCHUNK_SHOW |