iRetcode = execute_delta_image (pData, pDelta, (mng_imagep)pData->pObjzero);
iRetcode = execute_delta_image (pData, pDelta, (mng_imagep)pObject);
mng_retcode process_ani_image (mng_datap   pData,                               mng_objectp pObject){  mng_retcode    iRetcode = MNG_NOERROR;  mng_ani_imagep pImage   = (mng_imagep)pObject;#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_PROCESS_ANI_IMAGE, MNG_LC_START)#endif  if (pData->bHasDHDR)                 /* processing delta-image ? */  {    mng_imagep pDelta = (mng_imagep)pData->pDeltaImage;    if (!pData->iBreakpoint)           /* only execute if not broken before */    {                                  /* make sure to process pixels as well */      pData->bDeltaimmediate = MNG_FALSE;                                       /* execute the delta process */      iRetcode = execute_delta_image (pData, pDelta, (mng_imagep)pData->pObjzero);      if (iRetcode)                    /* on error bail out */        return iRetcode;    }                                       /* now go and shoot it off (if required) */    if ((pDelta->bVisible) && (pDelta->bViewable))      iRetcode = display_image (pData, pDelta, MNG_FALSE);    if (!pData->bTimerset)      pData->bHasDHDR = MNG_FALSE;     /* this image signifies IEND !! */  }  else  if (pData->pCurrentobj)              /* active object ? */  {    mng_imagep     pCurrent = (mng_imagep)pData->pCurrentobj;    mng_imagedatap pBuf     = pCurrent->pImgbuf;    if (!pData->iBreakpoint)           /* don't copy it again ! */    {      if (pBuf->iImgdatasize)          /* buffer present in active object ? */                                       /* then drop it */        MNG_FREE (pData, pBuf->pImgdata, pBuf->iImgdatasize)      if (pBuf->iProfilesize)          /* iCCP profile present ? */                                       /* then drop it */        MNG_FREE (pData, pBuf->pProfile, pBuf->iProfilesize)                                       /* now blatently copy the animation buffer */      MNG_COPY (pBuf, pImage->pImgbuf, sizeof (mng_imagedata))                                       /* copy viewability */      pCurrent->bViewable = pImage->bViewable;      if (pBuf->iImgdatasize)          /* sample buffer present ? */      {                                /* then make a copy */        MNG_ALLOC (pData, pBuf->pImgdata, pBuf->iImgdatasize)        MNG_COPY (pBuf->pImgdata, pImage->pImgbuf->pImgdata, pBuf->iImgdatasize)      }      if (pBuf->iProfilesize)          /* iCCP profile present ? */      {                                /* then make a copy */        MNG_ALLOC (pData, pBuf->pProfile, pBuf->iProfilesize)        MNG_COPY (pBuf->pProfile, pImage->pImgbuf->pProfile, pBuf->iProfilesize)      }    }                                       /* now go and shoot it off (if required) */    if ((pCurrent->bVisible) && (pCurrent->bViewable))      iRetcode = display_image (pData, pCurrent, MNG_FALSE);  }  else  {    mng_imagep pObjzero = (mng_imagep)pData->pObjzero;                                       /* overlay with object 0 status */    pImage->bVisible  = pObjzero->bVisible;    pImage->bViewable = pObjzero->bViewable;    pImage->iPosx     = pObjzero->iPosx;    pImage->iPosy     = pObjzero->iPosy;    pImage->bClipped  = pObjzero->bClipped;    pImage->iClipl    = pObjzero->iClipl;    pImage->iClipr    = pObjzero->iClipr;    pImage->iClipt    = pObjzero->iClipt;    pImage->iClipb    = pObjzero->iClipb;                                       /* now this should do the trick */    if ((pImage->bVisible) && (pImage->bViewable))      iRetcode = display_image (pData, pImage, MNG_FALSE);  }  if (!iRetcode)                       /* all's well ? */  {    if (pData->bTimerset)              /* timer break ? */      pData->iBreakpoint = 99;         /* fictive number; no more processing needed! */    else      pData->iBreakpoint = 0;          /* else clear it */  }#ifdef MNG_SUPPORT_TRACE  MNG_TRACE (pData, MNG_FN_PROCESS_ANI_IMAGE, MNG_LC_END)#endif  return iRetcode;}