OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "cc/tiles/software_image_decode_cache.h" | 5 #include "cc/tiles/software_image_decode_cache.h" |
6 | 6 |
7 #include <inttypes.h> | 7 #include <inttypes.h> |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 | 9 |
10 #include <algorithm> | 10 #include <algorithm> |
(...skipping 569 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
580 base::DiscardableMemoryAllocator::GetInstance() | 580 base::DiscardableMemoryAllocator::GetInstance() |
581 ->AllocateLockedDiscardableMemory(decoded_info.minRowBytes() * | 581 ->AllocateLockedDiscardableMemory(decoded_info.minRowBytes() * |
582 decoded_info.height()); | 582 decoded_info.height()); |
583 } | 583 } |
584 if (target_color_space) { | 584 if (target_color_space) { |
585 TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("cc.debug"), | 585 TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("cc.debug"), |
586 "SoftwareImageDecodeCache::GetOriginalSizeImageDecode - " | 586 "SoftwareImageDecodeCache::GetOriginalSizeImageDecode - " |
587 "color conversion"); | 587 "color conversion"); |
588 image = image->makeColorSpace(target_color_space, | 588 image = image->makeColorSpace(target_color_space, |
589 SkTransferFunctionBehavior::kIgnore); | 589 SkTransferFunctionBehavior::kIgnore); |
590 DCHECK(image); | 590 // Because image is a lazy-decode image, the call to makeColorSpace will |
| 591 // fail if image decode fails. |
| 592 if (!image) { |
| 593 decoded_pixels->Unlock(); |
| 594 return nullptr; |
| 595 } |
591 } | 596 } |
592 { | 597 { |
593 TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("cc.debug"), | 598 TRACE_EVENT0(TRACE_DISABLED_BY_DEFAULT("cc.debug"), |
594 "SoftwareImageDecodeCache::GetOriginalSizeImageDecode - " | 599 "SoftwareImageDecodeCache::GetOriginalSizeImageDecode - " |
595 "read pixels"); | 600 "read pixels"); |
596 bool result = image->readPixels(decoded_info, decoded_pixels->data(), | 601 bool result = image->readPixels(decoded_info, decoded_pixels->data(), |
597 decoded_info.minRowBytes(), 0, 0, | 602 decoded_info.minRowBytes(), 0, 0, |
598 SkImage::kDisallow_CachingHint); | 603 SkImage::kDisallow_CachingHint); |
599 | 604 |
600 if (!result) { | 605 if (!result) { |
(...skipping 580 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1181 } | 1186 } |
1182 } | 1187 } |
1183 } | 1188 } |
1184 | 1189 |
1185 void SoftwareImageDecodeCache::OnPurgeMemory() { | 1190 void SoftwareImageDecodeCache::OnPurgeMemory() { |
1186 base::AutoLock lock(lock_); | 1191 base::AutoLock lock(lock_); |
1187 ReduceCacheUsageUntilWithinLimit(0); | 1192 ReduceCacheUsageUntilWithinLimit(0); |
1188 } | 1193 } |
1189 | 1194 |
1190 } // namespace cc | 1195 } // namespace cc |
OLD | NEW |