Index: ui/gl/gl_surface_osmesa_x11.h |
diff --git a/ui/gl/gl_surface_osmesa_x11.h b/ui/gl/gl_surface_osmesa_x11.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..4a12521060fbd46fc8fbebf28f34a6b3b5c94cec |
--- /dev/null |
+++ b/ui/gl/gl_surface_osmesa_x11.h |
@@ -0,0 +1,52 @@ |
+// Copyright 2016 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef UI_GL_GL_SURFACE_OSMESA_X11_H_ |
+#define UI_GL_GL_SURFACE_OSMESA_X11_H_ |
+ |
+#include <X11/Xlib.h> |
+ |
+#include "base/macros.h" |
+#include "ui/gfx/native_widget_types.h" |
+#include "ui/gl/gl_export.h" |
+#include "ui/gl/gl_surface.h" |
+#include "ui/gl/gl_surface_osmesa.h" |
+ |
+namespace gl { |
+ |
+// This OSMesa GL surface can use XLib to swap the contents of the buffer to a |
+// view. |
+class GL_EXPORT GLSurfaceOSMesaX11 : public GLSurfaceOSMesa { |
+ public: |
+ explicit GLSurfaceOSMesaX11(gfx::AcceleratedWidget window); |
+ |
+ static bool InitializeOneOff(); |
+ |
+ // Implement a subset of GLSurface. |
+ bool Initialize(GLSurface::Format format) override; |
+ void Destroy() override; |
+ bool Resize(const gfx::Size& new_size, |
+ float scale_factor, |
+ bool alpha) override; |
+ bool IsOffscreen() override; |
+ gfx::SwapResult SwapBuffers() override; |
+ bool SupportsPostSubBuffer() override; |
+ gfx::SwapResult PostSubBuffer(int x, int y, int width, int height) override; |
+ |
+ protected: |
+ ~GLSurfaceOSMesaX11() override; |
+ |
+ private: |
+ Display* xdisplay_; |
+ GC window_graphics_context_; |
+ gfx::AcceleratedWidget window_; |
+ GC pixmap_graphics_context_; |
+ Pixmap pixmap_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(GLSurfaceOSMesaX11); |
+}; |
+ |
+} // namespace gl |
+ |
+#endif // UI_GL_GL_SURFACE_OSMESA_X11_H_ |