nsGIFDecoder2* decoder = NS_STATIC_CAST(nsGIFDecoder2*, aClientData);         decoder->mImageContainer->EndFrameDecode(aFrameNumber, aDelayTimeout);  if (decoder->mObserver) decoder->mObserver->OnStopFrame(nsnull, nsnull, decoder->mImageFrame);  decoder->mImageFrame = nsnull;
int EndImageFrame(  void*    aClientData,   PRUint32 aFrameNumber,  PRUint32 aDelayTimeout)  /* Time this frame should be displayed before the next frame                               we can't have this in the image frame init because it doesn't                              show up in the GIF frame header, it shows up in a sub control                              block.*/{  nsGIFDecoder2* decoder = NS_STATIC_CAST(nsGIFDecoder2*, aClientData);    // We actually have the timeout information before we get the lzw encoded image  // data, at least according to the spec, but we delay in setting the timeout for  // the image until here to help ensure that we have the whole image frame decoded before  // we go off and try to display another frame.// XXXXXXXX  // decoder->mImageFrame->SetTimeout(aDelayTimeout);  decoder->mImageContainer->EndFrameDecode(aFrameNumber, aDelayTimeout);  if (decoder->mObserver)    decoder->mObserver->OnStopFrame(nsnull, nsnull, decoder->mImageFrame);  decoder->mImageFrame = nsnull;  return 0;}