1 // Copyright (c) 2012 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.
5 #include "content/common/gpu/image_transport_surface.h"
7 #include "base/logging.h"
8 #include "content/common/gpu/gpu_command_buffer_stub.h"
9 #include "content/common/gpu/gpu_surface_lookup.h"
10 #include "ui/gl/gl_surface_egl.h"
15 scoped_refptr
<gfx::GLSurface
> ImageTransportSurface::CreateNativeSurface(
16 GpuChannelManager
* manager
,
17 GpuCommandBufferStub
* stub
,
18 const gfx::GLSurfaceHandle
& handle
) {
19 DCHECK(GpuSurfaceLookup::GetInstance());
20 DCHECK_EQ(handle
.transport_type
, gfx::NATIVE_DIRECT
);
21 ANativeWindow
* window
=
22 GpuSurfaceLookup::GetInstance()->AcquireNativeWidget(
24 scoped_refptr
<gfx::GLSurface
> surface
=
25 new gfx::NativeViewGLSurfaceEGL(window
);
26 bool initialize_success
= surface
->Initialize();
28 ANativeWindow_release(window
);
29 if (!initialize_success
)
30 return scoped_refptr
<gfx::GLSurface
>();
32 return scoped_refptr
<gfx::GLSurface
>(new PassThroughImageTransportSurface(
33 manager
, stub
, surface
.get(), false));
36 } // namespace content