1 // Copyright 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "SkDiscardableMemory_chrome.h" 6 7 SkDiscardableMemoryChrome::~SkDiscardableMemoryChrome() {} 8 9 bool SkDiscardableMemoryChrome::lock() { 10 const base::LockDiscardableMemoryStatus status = discardable_->Lock(); 11 switch (status) { 12 case base::DISCARDABLE_MEMORY_SUCCESS: 13 return true; 14 case base::DISCARDABLE_MEMORY_PURGED: 15 discardable_->Unlock(); 16 return false; 17 default: 18 discardable_.reset(); 19 return false; 20 } 21 } 22 23 void* SkDiscardableMemoryChrome::data() { 24 return discardable_->Memory(); 25 } 26 27 void SkDiscardableMemoryChrome::unlock() { 28 discardable_->Unlock(); 29 } 30 31 SkDiscardableMemoryChrome::SkDiscardableMemoryChrome( 32 scoped_ptr<base::DiscardableMemory> memory) 33 : discardable_(memory.Pass()) { 34 } 35 36 SkDiscardableMemory* SkDiscardableMemory::Create(size_t bytes) { 37 scoped_ptr<base::DiscardableMemory> discardable( 38 base::DiscardableMemory::CreateLockedMemory(bytes)); 39 if (!discardable) 40 return NULL; 41 return new SkDiscardableMemoryChrome(discardable.Pass()); 42 } 43