Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(161)

Side by Side Diff: third_party/WebKit/Source/platform/image-decoders/jpeg/JPEGImageDecoder.cpp

Issue 1962563002: Fix ImageDecoder::frameIsCompleteAtIndex - fully received instead of decoded. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2006 Apple Computer, Inc. 2 * Copyright (C) 2006 Apple Computer, Inc.
3 * 3 *
4 * Portions are Copyright (C) 2001-6 mozilla.org 4 * Portions are Copyright (C) 2001-6 mozilla.org
5 * 5 *
6 * Other contributors: 6 * Other contributors:
7 * Stuart Parmenter <stuart@mozilla.com> 7 * Stuart Parmenter <stuart@mozilla.com>
8 * 8 *
9 * This library is free software; you can redistribute it and/or 9 * This library is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU Lesser General Public 10 * modify it under the terms of the GNU Lesser General Public
(...skipping 956 matching lines...) Expand 10 before | Expand all | Expand 10 after
967 967
968 void JPEGImageDecoder::complete() 968 void JPEGImageDecoder::complete()
969 { 969 {
970 if (m_frameBufferCache.isEmpty()) 970 if (m_frameBufferCache.isEmpty())
971 return; 971 return;
972 972
973 m_frameBufferCache[0].setHasAlpha(false); 973 m_frameBufferCache[0].setHasAlpha(false);
974 m_frameBufferCache[0].setStatus(ImageFrame::FrameComplete); 974 m_frameBufferCache[0].setStatus(ImageFrame::FrameComplete);
975 } 975 }
976 976
977 inline bool isComplete(const JPEGImageDecoder* decoder, bool onlySize)
978 {
979 if (decoder->hasImagePlanes() && !onlySize)
980 return true;
981
982 return decoder->frameIsCompleteAtIndex(0);
983 }
984
985 void JPEGImageDecoder::decode(bool onlySize) 977 void JPEGImageDecoder::decode(bool onlySize)
986 { 978 {
987 if (failed()) 979 if (failed())
988 return; 980 return;
989 981
990 if (!m_reader) { 982 if (!m_reader) {
991 m_reader = adoptPtr(new JPEGImageReader(this)); 983 m_reader = adoptPtr(new JPEGImageReader(this));
992 m_reader->setData(m_data.get()); 984 m_reader->setData(m_data.get());
993 } 985 }
994 986
995 // If we couldn't decode the image but have received all the data, decoding 987 // If we couldn't decode the image but have received all the data, decoding
996 // has failed. 988 // has failed.
997 if (!m_reader->decode(onlySize) && isAllDataReceived()) 989 if (!m_reader->decode(onlySize) && isAllDataReceived())
998 setFailed(); 990 setFailed();
999 991
1000 // If decoding is done or failed, we don't need the JPEGImageReader anymore. 992 // If decoding is done or failed, we don't need the JPEGImageReader anymore.
1001 if (isComplete(this, onlySize) || failed()) 993 if (frameIsCompleteAtIndex(0) || (hasImagePlanes() && !onlySize) || failed() )
1002 m_reader.reset(); 994 m_reader.reset();
1003 } 995 }
1004 996
1005 } // namespace blink 997 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698