1--- libmng_data.h.orig 2007-04-20 10:41:58.000000000 +0200 2+++ libmng_data.h 2007-07-14 00:00:00.000000000 +0200 3@@ -658,6 +658,9 @@ 4 mng_int32 iFrameclipb; 5 6 mng_uint32 iNextdelay; /* delay *after* next image */ 7+ 8+ mng_bool bForcedelay; 9+ mng_uint32 iAccumdelay; 10 #endif 11 12 #ifndef MNG_SKIPCHUNK_SHOW 13--- libmng_display.c.orig 2007-04-20 10:41:58.000000000 +0200 14+++ libmng_display.c 2007-07-14 00:00:00.000000000 +0200 15@@ -384,8 +384,9 @@ 16 17 { 18 #ifndef MNG_SKIPCHUNK_FRAM 19- if (pData->iFramedelay > 0) /* real delay ? */ 20+ if (pData->iFramedelay > 0 || pData->bForcedelay) /* real delay ? */ 21 { /* let the app refresh first ? */ 22+ pData->bForcedelay = MNG_FALSE; 23 if ((pData->bRunning) && (!pData->bSkipping) && 24 (pData->iUpdatetop < pData->iUpdatebottom) && (pData->iUpdateleft < pData->iUpdateright)) 25 if (!pData->fRefresh (((mng_handle)pData), 26@@ -455,6 +456,7 @@ 27 pData->iFrametime = pData->iFrametime + iWaitfor; 28 /* setup for next delay */ 29 pData->iFramedelay = pData->iNextdelay; 30+ pData->iAccumdelay += pData->iFramedelay; 31 #endif 32 } 33 34@@ -3340,6 +3342,9 @@ 35 MNG_TRACE (pData, MNG_FN_PROCESS_DISPLAY_MEND, MNG_LC_START); 36 #endif 37 38+ pData->bForcedelay = pData->iAccumdelay ? MNG_FALSE : MNG_TRUE; 39+ pData->iAccumdelay = 0; 40+ 41 #ifdef MNG_SUPPORT_DYNAMICMNG 42 if (pData->bStopafterseek) /* need to stop after this ? */ 43 { 44--- libmng_hlapi.c.orig 2007-07-06 18:23:04.000000000 +0200 45+++ libmng_hlapi.c 2007-07-14 00:00:00.000000000 +0200 46@@ -446,6 +446,9 @@ 47 pData->iFrameclipb = 0; 48 49 pData->iNextdelay = 1; 50+ 51+ pData->bForcedelay = MNG_FALSE; 52+ pData->iAccumdelay = 0; 53 #endif 54 55 #ifndef MNG_SKIPCHUNK_SHOW 56@@ -1737,6 +1740,9 @@ 57 pData->iFrameclipb = 0; 58 59 pData->iNextdelay = 1; 60+ 61+ pData->bForcedelay = MNG_FALSE; 62+ pData->iAccumdelay = 0; 63 #endif 64 65 #ifndef MNG_SKIPCHUNK_SHOW 66