Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(177)

Unified Diff: ui/gl/gl_surface_egl.cc

Issue 13886018: Add a factory and defines for native Linux surfaces. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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)

Powered by Google App Engine
This is Rietveld 408576698