• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
~SkDiscardableMemoryChrome()7 SkDiscardableMemoryChrome::~SkDiscardableMemoryChrome() {}
8 
lock()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 
data()23 void* SkDiscardableMemoryChrome::data() {
24   return discardable_->Memory();
25 }
26 
unlock()27 void SkDiscardableMemoryChrome::unlock() {
28   discardable_->Unlock();
29 }
30 
SkDiscardableMemoryChrome(scoped_ptr<base::DiscardableMemory> memory)31 SkDiscardableMemoryChrome::SkDiscardableMemoryChrome(
32     scoped_ptr<base::DiscardableMemory> memory)
33     : discardable_(memory.Pass()) {
34 }
35 
Create(size_t bytes)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