| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2012 Google Inc. All rights reserved. | 2 * Copyright (C) 2012 Google 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 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 67 std::unique_ptr<ImageDecoder> actualDecoder = | 67 std::unique_ptr<ImageDecoder> actualDecoder = |
| 68 ImageDecoder::create(data, dataComplete, alphaOption, colorBehavior); | 68 ImageDecoder::create(data, dataComplete, alphaOption, colorBehavior); |
| 69 if (!actualDecoder) | 69 if (!actualDecoder) |
| 70 return nullptr; | 70 return nullptr; |
| 71 | 71 |
| 72 std::unique_ptr<DeferredImageDecoder> decoder( | 72 std::unique_ptr<DeferredImageDecoder> decoder( |
| 73 new DeferredImageDecoder(std::move(actualDecoder))); | 73 new DeferredImageDecoder(std::move(actualDecoder))); |
| 74 | 74 |
| 75 // Since we've just instantiated a fresh decoder, there's no need to reset its | 75 // Since we've just instantiated a fresh decoder, there's no need to reset its |
| 76 // data. | 76 // data. |
| 77 decoder->setDataInternal(data.release(), dataComplete, false); | 77 decoder->setDataInternal(std::move(data), dataComplete, false); |
| 78 | 78 |
| 79 return decoder; | 79 return decoder; |
| 80 } | 80 } |
| 81 | 81 |
| 82 std::unique_ptr<DeferredImageDecoder> DeferredImageDecoder::createForTesting( | 82 std::unique_ptr<DeferredImageDecoder> DeferredImageDecoder::createForTesting( |
| 83 std::unique_ptr<ImageDecoder> actualDecoder) { | 83 std::unique_ptr<ImageDecoder> actualDecoder) { |
| 84 return WTF::wrapUnique(new DeferredImageDecoder(std::move(actualDecoder))); | 84 return WTF::wrapUnique(new DeferredImageDecoder(std::move(actualDecoder))); |
| 85 } | 85 } |
| 86 | 86 |
| 87 DeferredImageDecoder::DeferredImageDecoder( | 87 DeferredImageDecoder::DeferredImageDecoder( |
| (...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 322 sk_sp<SkROBuffer> roBuffer(m_rwBuffer->newRBufferSnapshot()); | 322 sk_sp<SkROBuffer> roBuffer(m_rwBuffer->newRBufferSnapshot()); |
| 323 RefPtr<SegmentReader> segmentReader = | 323 RefPtr<SegmentReader> segmentReader = |
| 324 SegmentReader::createFromSkROBuffer(std::move(roBuffer)); | 324 SegmentReader::createFromSkROBuffer(std::move(roBuffer)); |
| 325 | 325 |
| 326 SkImageInfo info = SkImageInfo::MakeN32( | 326 SkImageInfo info = SkImageInfo::MakeN32( |
| 327 decodedSize.width(), decodedSize.height(), | 327 decodedSize.width(), decodedSize.height(), |
| 328 knownToBeOpaque ? kOpaque_SkAlphaType : kPremul_SkAlphaType, | 328 knownToBeOpaque ? kOpaque_SkAlphaType : kPremul_SkAlphaType, |
| 329 m_colorSpaceForSkImages); | 329 m_colorSpaceForSkImages); |
| 330 | 330 |
| 331 DecodingImageGenerator* generator = new DecodingImageGenerator( | 331 DecodingImageGenerator* generator = new DecodingImageGenerator( |
| 332 m_frameGenerator, info, segmentReader.release(), m_allDataReceived, index, | 332 m_frameGenerator, info, std::move(segmentReader), m_allDataReceived, |
| 333 m_frameData[index].m_uniqueID); | 333 index, m_frameData[index].m_uniqueID); |
| 334 sk_sp<SkImage> image = SkImage::MakeFromGenerator( | 334 sk_sp<SkImage> image = SkImage::MakeFromGenerator( |
| 335 generator); // SkImage takes ownership of the generator. | 335 generator); // SkImage takes ownership of the generator. |
| 336 if (!image) | 336 if (!image) |
| 337 return nullptr; | 337 return nullptr; |
| 338 | 338 |
| 339 // We can consider decoded bitmap constant and reuse uniqueID only after all | 339 // We can consider decoded bitmap constant and reuse uniqueID only after all |
| 340 // data is received. We reuse it also for multiframe images when image data | 340 // data is received. We reuse it also for multiframe images when image data |
| 341 // is partially received but the frame data is fully received. | 341 // is partially received but the frame data is fully received. |
| 342 if (m_allDataReceived || m_frameData[index].m_isComplete) { | 342 if (m_allDataReceived || m_frameData[index].m_isComplete) { |
| 343 DCHECK(m_frameData[index].m_uniqueID == | 343 DCHECK(m_frameData[index].m_uniqueID == |
| (...skipping 19 matching lines...) Expand all Loading... |
| 363 | 363 |
| 364 namespace WTF { | 364 namespace WTF { |
| 365 template <> | 365 template <> |
| 366 struct VectorTraits<blink::DeferredFrameData> | 366 struct VectorTraits<blink::DeferredFrameData> |
| 367 : public SimpleClassVectorTraits<blink::DeferredFrameData> { | 367 : public SimpleClassVectorTraits<blink::DeferredFrameData> { |
| 368 STATIC_ONLY(VectorTraits); | 368 STATIC_ONLY(VectorTraits); |
| 369 static const bool canInitializeWithMemset = | 369 static const bool canInitializeWithMemset = |
| 370 false; // Not all DeferredFrameData members initialize to 0. | 370 false; // Not all DeferredFrameData members initialize to 0. |
| 371 }; | 371 }; |
| 372 } | 372 } |
| OLD | NEW |