|  | // Copyright 2013 The Chromium Authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | #include "cc/resources/texture_mailbox.h" | 
|  |  | 
|  | #include "base/logging.h" | 
|  | #include "cc/resources/shared_bitmap.h" | 
|  |  | 
|  | namespace cc { | 
|  |  | 
|  | TextureMailbox::TextureMailbox() : shared_bitmap_(NULL) { | 
|  | } | 
|  |  | 
|  | TextureMailbox::TextureMailbox(const gpu::MailboxHolder& mailbox_holder) | 
|  | : mailbox_holder_(mailbox_holder), | 
|  | shared_bitmap_(NULL), | 
|  | allow_overlay_(false), | 
|  | nearest_neighbor_(false) { | 
|  | } | 
|  |  | 
|  | TextureMailbox::TextureMailbox(const gpu::Mailbox& mailbox, | 
|  | uint32 target, | 
|  | uint32 sync_point) | 
|  | : mailbox_holder_(mailbox, target, sync_point), | 
|  | shared_bitmap_(NULL), | 
|  | allow_overlay_(false), | 
|  | nearest_neighbor_(false) { | 
|  | } | 
|  |  | 
|  | TextureMailbox::TextureMailbox(SharedBitmap* shared_bitmap, | 
|  | const gfx::Size& size) | 
|  | : shared_bitmap_(shared_bitmap), | 
|  | shared_memory_size_(size), | 
|  | allow_overlay_(false), | 
|  | nearest_neighbor_(false) { | 
|  | // If an embedder of cc gives an invalid TextureMailbox, we should crash | 
|  | // here to identify the offender. | 
|  | CHECK(SharedBitmap::VerifySizeInBytes(shared_memory_size_)); | 
|  | } | 
|  |  | 
|  | TextureMailbox::~TextureMailbox() {} | 
|  |  | 
|  | bool TextureMailbox::Equals(const TextureMailbox& other) const { | 
|  | if (other.IsTexture()) { | 
|  | return IsTexture() && !memcmp(mailbox_holder_.mailbox.name, | 
|  | other.mailbox_holder_.mailbox.name, | 
|  | sizeof(mailbox_holder_.mailbox.name)); | 
|  | } else if (other.IsSharedMemory()) { | 
|  | return IsSharedMemory() && (shared_bitmap_ == other.shared_bitmap_); | 
|  | } | 
|  |  | 
|  | DCHECK(!other.IsValid()); | 
|  | return !IsValid(); | 
|  | } | 
|  |  | 
|  | size_t TextureMailbox::SharedMemorySizeInBytes() const { | 
|  | // UncheckedSizeInBytes is okay because we VerifySizeInBytes in the | 
|  | // constructor and the field is immutable. | 
|  | return SharedBitmap::UncheckedSizeInBytes(shared_memory_size_); | 
|  | } | 
|  |  | 
|  | }  // namespace cc |