Home | History | Annotate | Download | only in compositor
      1 // Copyright 2014 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef CONTENT_BROWSER_COMPOSITOR_OWNED_MAILBOX_H_
      6 #define CONTENT_BROWSER_COMPOSITOR_OWNED_MAILBOX_H_
      7 
      8 #include "base/memory/ref_counted.h"
      9 #include "content/browser/compositor/image_transport_factory.h"
     10 #include "content/common/content_export.h"
     11 #include "gpu/command_buffer/common/mailbox_holder.h"
     12 
     13 namespace content {
     14 
     15 class GLHelper;
     16 
     17 // This class holds a texture id and gpu::Mailbox, and deletes the texture
     18 // id when the object itself is destroyed. Should only be created if a GLHelper
     19 // exists on the ImageTransportFactory.
     20 class CONTENT_EXPORT OwnedMailbox : public base::RefCounted<OwnedMailbox>,
     21                                     public ImageTransportFactoryObserver {
     22  public:
     23   explicit OwnedMailbox(GLHelper* gl_helper);
     24 
     25   const gpu::MailboxHolder& holder() const { return mailbox_holder_; }
     26   const gpu::Mailbox& mailbox() const { return mailbox_holder_.mailbox; }
     27   uint32 texture_id() const { return texture_id_; }
     28   uint32 target() const { return mailbox_holder_.texture_target; }
     29   uint32 sync_point() const { return mailbox_holder_.sync_point; }
     30   void UpdateSyncPoint(uint32 sync_point);
     31   void Destroy();
     32 
     33  protected:
     34   virtual ~OwnedMailbox();
     35 
     36   // ImageTransportFactoryObserver implementation.
     37   virtual void OnLostResources() OVERRIDE;
     38 
     39  private:
     40   friend class base::RefCounted<OwnedMailbox>;
     41 
     42   uint32 texture_id_;
     43   gpu::MailboxHolder mailbox_holder_;
     44   GLHelper* gl_helper_;
     45 };
     46 
     47 }  // namespace content
     48 
     49 #endif  // CONTENT_BROWSER_COMPOSITOR_OWNED_MAILBOX_H_
     50