copy_output_result.cc revision a3f7b4e666c476898878fa745f637129375cd889
1a5728872c7702ddd09537c95bc3cbd20e1f2fb09Daniel Dunbar// Copyright 2013 The Chromium Authors. All rights reserved.
26d507a6d96ea6379bc1df207abe26ad4cbe6563dDouglas Gregor// Use of this source code is governed by a BSD-style license that can be
3db3353f6c9f3ffd291ce9e314e996071252c4285NAKAMURA Takumi// found in the LICENSE file.
4db3353f6c9f3ffd291ce9e314e996071252c4285NAKAMURA Takumi
5db3353f6c9f3ffd291ce9e314e996071252c4285NAKAMURA Takumi#include "cc/output/copy_output_result.h"
66d507a6d96ea6379bc1df207abe26ad4cbe6563dDouglas Gregor
76d507a6d96ea6379bc1df207abe26ad4cbe6563dDouglas Gregor#include "base/logging.h"
86d507a6d96ea6379bc1df207abe26ad4cbe6563dDouglas Gregor#include "cc/resources/texture_mailbox.h"
96d507a6d96ea6379bc1df207abe26ad4cbe6563dDouglas Gregor#include "third_party/skia/include/core/SkBitmap.h"
106d507a6d96ea6379bc1df207abe26ad4cbe6563dDouglas Gregor
116d507a6d96ea6379bc1df207abe26ad4cbe6563dDouglas Gregornamespace cc {
126d507a6d96ea6379bc1df207abe26ad4cbe6563dDouglas Gregor
136d507a6d96ea6379bc1df207abe26ad4cbe6563dDouglas GregorCopyOutputResult::CopyOutputResult() {}
146d507a6d96ea6379bc1df207abe26ad4cbe6563dDouglas Gregor
156d507a6d96ea6379bc1df207abe26ad4cbe6563dDouglas GregorCopyOutputResult::CopyOutputResult(scoped_ptr<SkBitmap> bitmap)
16b9c6261d02f688d0a9a36b736ad5956fbc737854Richard Smith    : size_(bitmap->width(), bitmap->height()),
176d507a6d96ea6379bc1df207abe26ad4cbe6563dDouglas Gregor      bitmap_(bitmap.Pass()) {
18b9c6261d02f688d0a9a36b736ad5956fbc737854Richard Smith  DCHECK(bitmap_);
1960c93c9981c467738369702e7aa23fd58c2b6aacDouglas Gregor}
206d507a6d96ea6379bc1df207abe26ad4cbe6563dDouglas Gregor
216d507a6d96ea6379bc1df207abe26ad4cbe6563dDouglas GregorCopyOutputResult::CopyOutputResult(gfx::Size size,
226d507a6d96ea6379bc1df207abe26ad4cbe6563dDouglas Gregor                                   scoped_ptr<TextureMailbox> texture_mailbox)
236d507a6d96ea6379bc1df207abe26ad4cbe6563dDouglas Gregor    : size_(size),
246d507a6d96ea6379bc1df207abe26ad4cbe6563dDouglas Gregor      texture_mailbox_(texture_mailbox.Pass()) {
256d507a6d96ea6379bc1df207abe26ad4cbe6563dDouglas Gregor  DCHECK(texture_mailbox_);
266d507a6d96ea6379bc1df207abe26ad4cbe6563dDouglas Gregor  DCHECK(texture_mailbox_->IsTexture());
276d507a6d96ea6379bc1df207abe26ad4cbe6563dDouglas Gregor}
286d507a6d96ea6379bc1df207abe26ad4cbe6563dDouglas Gregor
296d507a6d96ea6379bc1df207abe26ad4cbe6563dDouglas GregorCopyOutputResult::~CopyOutputResult() {
306d507a6d96ea6379bc1df207abe26ad4cbe6563dDouglas Gregor  if (texture_mailbox_)
316d507a6d96ea6379bc1df207abe26ad4cbe6563dDouglas Gregor    texture_mailbox_->RunReleaseCallback(0, false);
326d507a6d96ea6379bc1df207abe26ad4cbe6563dDouglas Gregor}
336d507a6d96ea6379bc1df207abe26ad4cbe6563dDouglas Gregor
346d507a6d96ea6379bc1df207abe26ad4cbe6563dDouglas Gregorscoped_ptr<SkBitmap> CopyOutputResult::TakeBitmap() {
356d507a6d96ea6379bc1df207abe26ad4cbe6563dDouglas Gregor  return bitmap_.Pass();
366d507a6d96ea6379bc1df207abe26ad4cbe6563dDouglas Gregor}
376d507a6d96ea6379bc1df207abe26ad4cbe6563dDouglas Gregor
386d507a6d96ea6379bc1df207abe26ad4cbe6563dDouglas Gregorscoped_ptr<TextureMailbox> CopyOutputResult::TakeTexture() {
396d507a6d96ea6379bc1df207abe26ad4cbe6563dDouglas Gregor  return texture_mailbox_.Pass();
406d507a6d96ea6379bc1df207abe26ad4cbe6563dDouglas Gregor}
416d507a6d96ea6379bc1df207abe26ad4cbe6563dDouglas Gregor
426d507a6d96ea6379bc1df207abe26ad4cbe6563dDouglas Gregor}  // namespace cc
436d507a6d96ea6379bc1df207abe26ad4cbe6563dDouglas Gregor