Chromium Code Reviews

Side by Side Diff: third_party/WebKit/Source/platform/image-decoders/gif/GIFImageDecoder.cpp

Issue 1962563002: Fix ImageDecoder::frameIsCompleteAtIndex - fully received instead of decoded. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: BMPDecoder + remove partial Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff |
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2006 Apple Computer, Inc. All rights reserved. 2 * Copyright (C) 2006 Apple Computer, Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 65 matching lines...)
76 // stream. In these cases we should just loop once. 76 // stream. In these cases we should just loop once.
77 if (isAllDataReceived() && parseCompleted() && m_reader->imagesCount() == 1) 77 if (isAllDataReceived() && parseCompleted() && m_reader->imagesCount() == 1)
78 m_repetitionCount = cAnimationNone; 78 m_repetitionCount = cAnimationNone;
79 else if (failed() || (m_reader && (!m_reader->imagesCount()))) 79 else if (failed() || (m_reader && (!m_reader->imagesCount())))
80 m_repetitionCount = cAnimationLoopOnce; 80 m_repetitionCount = cAnimationLoopOnce;
81 else if (m_reader && m_reader->loopCount() != cLoopCountNotSeen) 81 else if (m_reader && m_reader->loopCount() != cLoopCountNotSeen)
82 m_repetitionCount = m_reader->loopCount(); 82 m_repetitionCount = m_reader->loopCount();
83 return m_repetitionCount; 83 return m_repetitionCount;
84 } 84 }
85 85
86 bool GIFImageDecoder::frameIsCompleteAtIndex(size_t index) const 86 bool GIFImageDecoder::frameIsFullyReceivedAtIndex(size_t index) const
87 { 87 {
88 return m_reader && (index < m_reader->imagesCount()) && m_reader->frameConte xt(index)->isComplete(); 88 return (m_reader && (index < m_reader->imagesCount()) && m_reader->frameCont ext(index)->isComplete())
89 || ImageDecoder::frameIsFullyReceivedAtIndex(index);
89 } 90 }
90 91
91 float GIFImageDecoder::frameDurationAtIndex(size_t index) const 92 float GIFImageDecoder::frameDurationAtIndex(size_t index) const
92 { 93 {
93 return (m_reader && (index < m_reader->imagesCount()) && 94 return (m_reader && (index < m_reader->imagesCount()) &&
94 m_reader->frameContext(index)->isHeaderDefined()) ? 95 m_reader->frameContext(index)->isHeaderDefined()) ?
95 m_reader->frameContext(index)->delayTime() : 0; 96 m_reader->frameContext(index)->delayTime() : 0;
96 } 97 }
97 98
98 bool GIFImageDecoder::setFailed() 99 bool GIFImageDecoder::setFailed()
(...skipping 269 matching lines...)
368 369
369 // Update our status to be partially complete. 370 // Update our status to be partially complete.
370 buffer->setStatus(ImageFrame::FramePartial); 371 buffer->setStatus(ImageFrame::FramePartial);
371 372
372 // Reset the alpha pixel tracker for this frame. 373 // Reset the alpha pixel tracker for this frame.
373 m_currentBufferSawAlpha = false; 374 m_currentBufferSawAlpha = false;
374 return true; 375 return true;
375 } 376 }
376 377
377 } // namespace blink 378 } // namespace blink
OLDNEW

Powered by Google App Engine