17d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 27d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 37d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// found in the LICENSE file. 47d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 57d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "cc/output/copy_output_result.h" 67d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 77d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "base/logging.h" 87d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "cc/resources/texture_mailbox.h" 97d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "third_party/skia/include/core/SkBitmap.h" 107d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 117d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)namespace cc { 127d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 137d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)CopyOutputResult::CopyOutputResult() {} 147d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 157d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)CopyOutputResult::CopyOutputResult(scoped_ptr<SkBitmap> bitmap) 167d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) : size_(bitmap->width(), bitmap->height()), 177d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) bitmap_(bitmap.Pass()) { 187d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) DCHECK(bitmap_); 197d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)} 207d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 21d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)CopyOutputResult::CopyOutputResult( 225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) const gfx::Size& size, 23d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) const TextureMailbox& texture_mailbox, 24d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) scoped_ptr<SingleReleaseCallback> release_callback) 257d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) : size_(size), 26d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) texture_mailbox_(texture_mailbox), 27d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) release_callback_(release_callback.Pass()) { 28d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) DCHECK(texture_mailbox_.IsTexture()); 297d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)} 307d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 31a3f7b4e666c476898878fa745f637129375cd889Ben MurdochCopyOutputResult::~CopyOutputResult() { 32d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) if (release_callback_) 33d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) release_callback_->Run(0, false); 34a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch} 357d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 367d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)scoped_ptr<SkBitmap> CopyOutputResult::TakeBitmap() { 377d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) return bitmap_.Pass(); 387d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)} 397d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 40d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)void CopyOutputResult::TakeTexture( 41d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) TextureMailbox* texture_mailbox, 42d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) scoped_ptr<SingleReleaseCallback>* release_callback) { 43d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) *texture_mailbox = texture_mailbox_; 44d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) *release_callback = release_callback_.Pass(); 45d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) 46d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) texture_mailbox_ = TextureMailbox(); 477d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)} 487d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 497d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)} // namespace cc 50