Index: ui/gl/gl_surface_egl.cc |
diff --git a/ui/gl/gl_surface_egl.cc b/ui/gl/gl_surface_egl.cc |
index ae22a28419c53ef447145b2dc161cb699de5010c..2573e678736c99556a1d1789ac99c55fb28ac42f 100644 |
--- a/ui/gl/gl_surface_egl.cc |
+++ b/ui/gl/gl_surface_egl.cc |
@@ -21,6 +21,10 @@ extern "C" { |
} |
#endif |
+#if defined(USE_NATIVE_SURFACE_LINUX) |
+#include "ui/base/linux/native_surface_linux_factory.h" |
+#endif |
+ |
using ui::GetLastEGLErrorString; |
namespace gfx { |
@@ -146,7 +150,7 @@ bool GLSurfaceEGL::InitializeOneOff() { |
initialized = true; |
-#if defined(USE_X11) || defined(OS_ANDROID) |
+#if defined(USE_X11) || defined(OS_ANDROID) || defined(USE_NATIVE_SURFACE_LINUX) |
jonathan.backer
2013/04/30 12:41:20
nit: use a \ to wrap?
rjkroege
2013/05/06 18:46:24
Done.
|
return true; |
#else |
g_software_native_display = EGL_SOFTWARE_DISPLAY_ANGLE; |
@@ -223,6 +227,7 @@ NativeViewGLSurfaceEGL::NativeViewGLSurfaceEGL(bool software, |
supports_post_sub_buffer_(false), |
config_(NULL) { |
software_ = software; |
+ |
#if defined(OS_ANDROID) |
if (window) |
ANativeWindow_acquire(window); |
@@ -256,6 +261,11 @@ bool NativeViewGLSurfaceEGL::Initialize() { |
egl_window_attributes_sub_buffer : |
NULL); |
+#if defined(USE_NATIVE_SURFACE_LINUX) |
+ eglSurfaceAttrib(GetDisplay(), surface_, |
+ EGL_SWAP_BEHAVIOR, EGL_BUFFER_DESTROYED); |
+#endif |
+ |
if (!surface_) { |
LOG(ERROR) << "eglCreateWindowSurface failed with error " |
<< GetLastEGLErrorString(); |
@@ -394,6 +404,18 @@ bool NativeViewGLSurfaceEGL::Resize(const gfx::Size& size) { |
if (size == GetSize()) |
return true; |
+#if defined(USE_NATIVE_SURFACE_LINUX) |
+ ui::NativeSurfaceLinuxFactory *nslf = |
+ ui::NativeSurfaceLinuxFactory::GetInstance(); |
+ if (!nslf->AcceleratedWidgetCanBeResized(window_)) { |
+ LOG(ERROR) << "desired size for GL surface does not match native size"; |
+ LOG(ERROR) << "desired size: " << size.width() << "x" << size.height(); |
+ LOG(ERROR) << "native size: " << GetSize().width() << "x" |
+ << GetSize().height(); |
+ return true; |
+ } |
+#endif |
+ |
GLContext* current_context = GLContext::GetCurrent(); |
bool was_current = current_context && current_context->IsCurrent(this); |
if (was_current) |