| Index: content/common/gpu/image_transport_surface.h
|
| ===================================================================
|
| --- content/common/gpu/image_transport_surface.h (revision 108480)
|
| +++ content/common/gpu/image_transport_surface.h (working copy)
|
| @@ -8,9 +8,12 @@
|
|
|
| #if defined(ENABLE_GPU)
|
|
|
| +#include "base/callback.h"
|
| #include "base/memory/ref_counted.h"
|
| +#include "base/memory/scoped_ptr.h"
|
| #include "ipc/ipc_channel.h"
|
| #include "ipc/ipc_message.h"
|
| +#include "ui/gfx/gl/gl_surface.h"
|
| #include "ui/gfx/size.h"
|
| #include "ui/gfx/native_widget_types.h"
|
| #include "ui/gfx/surface/transport_dib.h"
|
| @@ -48,9 +51,13 @@
|
|
|
| class ImageTransportSurface {
|
| public:
|
| + ImageTransportSurface();
|
| + virtual ~ImageTransportSurface();
|
| +
|
| virtual void OnNewSurfaceACK(
|
| uint64 surface_id, TransportDIB::Handle surface_handle) = 0;
|
| virtual void OnBuffersSwappedACK() = 0;
|
| + virtual void OnResizeViewACK() = 0;
|
| virtual void OnResize(gfx::Size size) = 0;
|
|
|
| // Creates the appropriate surface depending on the GL implementation.
|
| @@ -60,6 +67,8 @@
|
| int32 renderer_id,
|
| int32 command_buffer_id,
|
| gfx::PluginWindowHandle handle);
|
| + private:
|
| + DISALLOW_COPY_AND_ASSIGN(ImageTransportSurface);
|
| };
|
|
|
| class ImageTransportHelper : public IPC::Channel::Listener {
|
| @@ -87,10 +96,13 @@
|
| GpuHostMsg_AcceleratedSurfaceBuffersSwapped_Params params);
|
| void SendAcceleratedSurfaceRelease(
|
| GpuHostMsg_AcceleratedSurfaceRelease_Params params);
|
| + void SendResizeView(const gfx::Size& size);
|
|
|
| // Whether or not we should execute more commands.
|
| void SetScheduled(bool is_scheduled);
|
|
|
| + void DeferToFence(base::Closure task);
|
| +
|
| // Make the surface's context current.
|
| bool MakeCurrent();
|
|
|
| @@ -101,10 +113,14 @@
|
| // IPC::Message handlers.
|
| void OnNewSurfaceACK(uint64 surface_id, TransportDIB::Handle surface_handle);
|
| void OnBuffersSwappedACK();
|
| + void OnResizeViewACK();
|
|
|
| // Backbuffer resize callback.
|
| void Resize(gfx::Size size);
|
|
|
| + // Set the default swap interval on the surface.
|
| + void SetSwapInterval();
|
| +
|
| // Weak pointers that point to objects that outlive this helper.
|
| ImageTransportSurface* surface_;
|
| GpuChannelManager* manager_;
|
| @@ -118,6 +134,36 @@
|
| DISALLOW_COPY_AND_ASSIGN(ImageTransportHelper);
|
| };
|
|
|
| +// An implementation of ImageTransportSurface that implements GLSurface through
|
| +// GLSurfaceAdapter, thereby forwarding GLSurface methods through to it.
|
| +class PassThroughImageTransportSurface
|
| + : public gfx::GLSurfaceAdapter,
|
| + public ImageTransportSurface {
|
| + public:
|
| + PassThroughImageTransportSurface(GpuChannelManager* manager,
|
| + int32 render_view_id,
|
| + int32 renderer_id,
|
| + int32 command_buffer_id,
|
| + gfx::GLSurface* surface);
|
| + virtual ~PassThroughImageTransportSurface();
|
| +
|
| + // GLSurface implementation.
|
| + virtual bool Initialize();
|
| + virtual void Destroy();
|
| +
|
| + // ImageTransportSurface implementation.
|
| + virtual void OnNewSurfaceACK(
|
| + uint64 surface_id, TransportDIB::Handle surface_handle) OVERRIDE;
|
| + virtual void OnBuffersSwappedACK() OVERRIDE;
|
| + virtual void OnResizeViewACK() OVERRIDE;
|
| + virtual void OnResize(gfx::Size size) OVERRIDE;
|
| +
|
| + private:
|
| + scoped_ptr<ImageTransportHelper> helper_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(PassThroughImageTransportSurface);
|
| +};
|
| +
|
| #endif // defined(ENABLE_GPU)
|
|
|
| #endif // CONTENT_COMMON_GPU_IMAGE_TRANSPORT_SURFACE_H_
|
|
|