copy_output_result.cc revision 5d1f7b1de12d16ceb2c938c56701a3e8bfa558f7
156ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson// Copyright 2013 The Chromium Authors. All rights reserved. 256ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson// Use of this source code is governed by a BSD-style license that can be 356ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson// found in the LICENSE file. 456ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson 556ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson#include "cc/output/copy_output_result.h" 656ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson 756ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson#include "base/logging.h" 856ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson#include "cc/resources/single_release_callback.h" 956ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson#include "cc/resources/texture_mailbox.h" 1056ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson#include "third_party/skia/include/core/SkBitmap.h" 1156ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson 1256ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodsonnamespace cc { 1356ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson 1456ed4167b942ec265f9cee70ac4d71d10b3835ceBen DodsonCopyOutputResult::CopyOutputResult() {} 1556ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson 1656ed4167b942ec265f9cee70ac4d71d10b3835ceBen DodsonCopyOutputResult::CopyOutputResult(scoped_ptr<SkBitmap> bitmap) 1756ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson : size_(bitmap->width(), bitmap->height()), 1856ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson bitmap_(bitmap.Pass()) { 1956ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson DCHECK(bitmap_); 2056ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson} 2156ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson 2256ed4167b942ec265f9cee70ac4d71d10b3835ceBen DodsonCopyOutputResult::CopyOutputResult( 2356ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson const gfx::Size& size, 2456ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson const TextureMailbox& texture_mailbox, 2556ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson scoped_ptr<SingleReleaseCallback> release_callback) 2656ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson : size_(size), 2756ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson texture_mailbox_(texture_mailbox), 2856ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson release_callback_(release_callback.Pass()) { 2956ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson DCHECK(texture_mailbox_.IsTexture()); 3056ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson} 3156ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson 3256ed4167b942ec265f9cee70ac4d71d10b3835ceBen DodsonCopyOutputResult::~CopyOutputResult() { 3356ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson if (release_callback_) 3456ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson release_callback_->Run(0, false); 3556ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson} 3656ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson 3756ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodsonscoped_ptr<SkBitmap> CopyOutputResult::TakeBitmap() { 3856ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson return bitmap_.Pass(); 3956ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson} 4056ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson 4156ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodsonvoid CopyOutputResult::TakeTexture( 4256ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson TextureMailbox* texture_mailbox, 4356ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson scoped_ptr<SingleReleaseCallback>* release_callback) { 4456ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson *texture_mailbox = texture_mailbox_; 4556ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson *release_callback = release_callback_.Pass(); 4656ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson 4756ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson texture_mailbox_ = TextureMailbox(); 4856ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson} 4956ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson 5056ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson} // namespace cc 5156ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson