// 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 "base/memory/ref_counted.h" #include "content/browser/aura/image_transport_factory.h" #include "gpu/command_buffer/common/mailbox.h" namespace content { class GLHelper; // This class holds a texture id and gpu::Mailbox, and deletes the texture // id when the object itself is destroyed. Should only be created if a GLHelper // exists on the ImageTransportFactory. class OwnedMailbox : public base::RefCounted<OwnedMailbox>, public ImageTransportFactoryObserver { public: explicit OwnedMailbox(GLHelper* gl_helper); uint32 texture_id() const { return texture_id_; } uint32 sync_point() const { return sync_point_; } const gpu::Mailbox& mailbox() const { return mailbox_; } void UpdateSyncPoint(uint32 sync_point); protected: virtual ~OwnedMailbox(); virtual void OnLostResources() OVERRIDE; private: friend class base::RefCounted<OwnedMailbox>; uint32 texture_id_; gpu::Mailbox mailbox_; uint32 sync_point_; GLHelper* gl_helper_; }; } // namespace content