Index: ui/gl/gl_image_android.cc |
diff --git a/ui/gl/gl_image_android.cc b/ui/gl/gl_image_android.cc |
index 0c7db630aee55f948dff2f2e8643e7ce5670f1bb..fe871e7b5e3b9235503f71b4ed2034ad344472db 100644 |
--- a/ui/gl/gl_image_android.cc |
+++ b/ui/gl/gl_image_android.cc |
@@ -6,6 +6,7 @@ |
#include "base/debug/trace_event.h" |
#include "ui/gl/gl_image_egl.h" |
+#include "ui/gl/gl_image_shm.h" |
#include "ui/gl/gl_image_stub.h" |
#include "ui/gl/gl_implementation.h" |
@@ -28,13 +29,26 @@ scoped_refptr<GLImage> GLImage::CreateGLImageForGpuMemoryBuffer( |
gfx::GpuMemoryBufferHandle buffer, gfx::Size size) { |
TRACE_EVENT0("gpu", "GLImage::CreateGLImageForGpuMemoryBuffer"); |
switch (GetGLImplementation()) { |
- case kGLImplementationEGLGLES2: { |
- scoped_refptr<GLImageEGL> image(new GLImageEGL(size)); |
- if (!image->Initialize(buffer)) |
- return NULL; |
+ case kGLImplementationEGLGLES2: |
+ switch (buffer.type) { |
+ case SHARED_MEMORY_BUFFER: { |
+ scoped_refptr<GLImageShm> image(new GLImageShm(size)); |
+ if (!image->Initialize(buffer)) |
+ return NULL; |
+ |
+ return image; |
+ } |
+ case EGL_CLIENT_BUFFER: { |
+ scoped_refptr<GLImageEGL> image(new GLImageEGL(size)); |
+ if (!image->Initialize(buffer)) |
+ return NULL; |
- return image; |
- } |
+ return image; |
+ } |
+ default: |
+ NOTREACHED(); |
+ return NULL; |
+ } |
case kGLImplementationMockGL: |
return new GLImageStub; |
default: |