Home | History | Annotate | Download | only in ext
      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