Changeset 224017 in webkit
- Timestamp:
- Oct 26, 2017 6:14:00 AM (7 years ago)
- Location:
- releases/WebKitGTK/webkit-2.18/Source/WebCore
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
releases/WebKitGTK/webkit-2.18/Source/WebCore/ChangeLog
r224016 r224017 1 2017-10-26 Carlos Garcia Campos <cgarcia@igalia.com> 2 3 [GTK][Stable] Crash on WebCore::SharedBuffer::data() on 2.18.1 4 https://bugs.webkit.org/show_bug.cgi?id=178852 5 6 Reviewed by Carlos Garcia Campos. 7 8 Add a mutex to control that the image decoders are not used at the same 9 time from the main thread and the decoding thread. 10 11 Backport of the fix to https://bugs.webkit.org/show_bug.cgi?id=178510 12 created by Fujii Hironori <Hironori.Fujii@sony.com>. 13 14 Covered by existent tests. 15 16 * platform/image-decoders/ImageDecoder.cpp: 17 (WebCore::ImageDecoder::frameIsCompleteAtIndex): 18 (WebCore::ImageDecoder::frameHasAlphaAtIndex const): 19 (WebCore::ImageDecoder::frameBytesAtIndex const): 20 (WebCore::ImageDecoder::frameDurationAtIndex): 21 (WebCore::ImageDecoder::createFrameImageAtIndex): 22 * platform/image-decoders/ImageDecoder.h: 23 (WebCore::ImageDecoder::setData): 24 1 25 2017-10-26 Carlos Garcia Campos <cgarcia@igalia.com> 2 26 -
releases/WebKitGTK/webkit-2.18/Source/WebCore/platform/image-decoders/ImageDecoder.cpp
r217260 r224017 173 173 bool ImageDecoder::frameIsCompleteAtIndex(size_t index) 174 174 { 175 LockHolder lockHolder(m_mutex); 175 176 ImageFrame* buffer = frameBufferAtIndex(index); 176 177 return buffer && buffer->isComplete(); … … 179 180 bool ImageDecoder::frameHasAlphaAtIndex(size_t index) const 180 181 { 182 LockHolder lockHolder(m_mutex); 181 183 if (m_frameBufferCache.size() <= index) 182 184 return true; … … 188 190 unsigned ImageDecoder::frameBytesAtIndex(size_t index) const 189 191 { 192 LockHolder lockHolder(m_mutex); 190 193 if (m_frameBufferCache.size() <= index) 191 194 return 0; … … 196 199 float ImageDecoder::frameDurationAtIndex(size_t index) 197 200 { 201 LockHolder lockHolder(m_mutex); 198 202 ImageFrame* buffer = frameBufferAtIndex(index); 199 203 if (!buffer || buffer->isInvalid()) … … 212 216 NativeImagePtr ImageDecoder::createFrameImageAtIndex(size_t index, SubsamplingLevel, const DecodingOptions&) 213 217 { 218 LockHolder lockHolder(m_mutex); 214 219 // Zero-height images can cause problems for some ports. If we have an empty image dimension, just bail. 215 220 if (size().isEmpty()) -
releases/WebKitGTK/webkit-2.18/Source/WebCore/platform/image-decoders/ImageDecoder.h
r218799 r224017 34 34 #include "SharedBuffer.h" 35 35 #include <wtf/Assertions.h> 36 #include <wtf/Lock.h> 36 37 #include <wtf/Optional.h> 37 38 #include <wtf/RefPtr.h> … … 76 77 virtual void setData(SharedBuffer& data, bool allDataReceived) 77 78 { 79 LockHolder lockHolder(m_mutex); 78 80 if (m_encodedDataStatus == EncodedDataStatus::Error) 79 81 return; … … 209 211 RefPtr<SharedBuffer> m_data; // The encoded data. 210 212 Vector<ImageFrame, 1> m_frameBufferCache; 213 mutable Lock m_mutex; 211 214 bool m_scaled { false }; 212 215 Vector<int> m_scaledColumns;
Note: See TracChangeset
for help on using the changeset viewer.