Index: ui/gl/init/gl_surface_ozone.cc |
diff --git a/ui/gl/init/gl_surface_ozone.cc b/ui/gl/init/gl_surface_ozone.cc |
deleted file mode 100644 |
index a7315beebfb376e802d9b4a766d13ec1b41c9a1e..0000000000000000000000000000000000000000 |
--- a/ui/gl/init/gl_surface_ozone.cc |
+++ /dev/null |
@@ -1,194 +0,0 @@ |
-// 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. |
- |
-#include "ui/gl/init/gl_surface_ozone.h" |
- |
-#include <stddef.h> |
- |
-#include <vector> |
- |
-#include "base/bind.h" |
-#include "base/callback.h" |
-#include "base/location.h" |
-#include "base/logging.h" |
-#include "base/macros.h" |
-#include "base/memory/scoped_vector.h" |
-#include "base/memory/weak_ptr.h" |
-#include "base/threading/worker_pool.h" |
-#include "ui/gl/egl_util.h" |
-#include "ui/gl/gl_context.h" |
-#include "ui/gl/gl_image.h" |
-#include "ui/gl/gl_implementation.h" |
-#include "ui/gl/gl_surface_egl.h" |
-#include "ui/gl/gl_surface_osmesa.h" |
-#include "ui/gl/gl_surface_overlay.h" |
-#include "ui/gl/gl_surface_stub.h" |
-#include "ui/gl/scoped_binders.h" |
-#include "ui/gl/scoped_make_current.h" |
-#include "ui/ozone/gl/gl_image_ozone_native_pixmap.h" |
-#include "ui/ozone/public/native_pixmap.h" |
-#include "ui/ozone/public/ozone_platform.h" |
-#include "ui/ozone/public/surface_factory_ozone.h" |
-#include "ui/ozone/public/surface_ozone_egl.h" |
- |
-namespace gl { |
- |
-namespace { |
- |
-// Helper function for base::Bind to create callback to eglChooseConfig. |
-bool EglChooseConfig(EGLDisplay display, |
- const int32_t* attribs, |
- EGLConfig* configs, |
- int32_t config_size, |
- int32_t* num_configs) { |
- return eglChooseConfig(display, attribs, configs, config_size, num_configs); |
-} |
- |
-// Helper function for base::Bind to create callback to eglGetConfigAttrib. |
-bool EglGetConfigAttribute(EGLDisplay display, |
- EGLConfig config, |
- int32_t attribute, |
- int32_t* value) { |
- return eglGetConfigAttrib(display, config, attribute, value); |
-} |
- |
-// Populates EglConfigCallbacks with appropriate callbacks. |
-ui::EglConfigCallbacks GetEglConfigCallbacks(EGLDisplay display) { |
- ui::EglConfigCallbacks callbacks; |
- callbacks.choose_config = base::Bind(EglChooseConfig, display); |
- callbacks.get_config_attribute = base::Bind(EglGetConfigAttribute, display); |
- callbacks.get_last_error_string = base::Bind(&ui::GetLastEGLErrorString); |
- return callbacks; |
-} |
- |
-// A thin wrapper around GLSurfaceEGL that owns the EGLNativeWindow. |
-class GL_EXPORT GLSurfaceOzoneEGL : public NativeViewGLSurfaceEGL { |
- public: |
- GLSurfaceOzoneEGL(std::unique_ptr<ui::SurfaceOzoneEGL> ozone_surface, |
- gfx::AcceleratedWidget widget); |
- |
- // GLSurface: |
- bool Initialize(GLSurface::Format format) override; |
- bool Resize(const gfx::Size& size, |
- float scale_factor, |
- bool has_alpha) override; |
- gfx::SwapResult SwapBuffers() override; |
- bool ScheduleOverlayPlane(int z_order, |
- gfx::OverlayTransform transform, |
- GLImage* image, |
- const gfx::Rect& bounds_rect, |
- const gfx::RectF& crop_rect) override; |
- EGLConfig GetConfig() override; |
- |
- private: |
- using NativeViewGLSurfaceEGL::Initialize; |
- |
- ~GLSurfaceOzoneEGL() override; |
- |
- bool ReinitializeNativeSurface(); |
- |
- // The native surface. Deleting this is allowed to free the EGLNativeWindow. |
- std::unique_ptr<ui::SurfaceOzoneEGL> ozone_surface_; |
- gfx::AcceleratedWidget widget_; |
- |
- DISALLOW_COPY_AND_ASSIGN(GLSurfaceOzoneEGL); |
-}; |
- |
-GLSurfaceOzoneEGL::GLSurfaceOzoneEGL( |
- std::unique_ptr<ui::SurfaceOzoneEGL> ozone_surface, |
- gfx::AcceleratedWidget widget) |
- : NativeViewGLSurfaceEGL(ozone_surface->GetNativeWindow()), |
- ozone_surface_(std::move(ozone_surface)), |
- widget_(widget) {} |
- |
-bool GLSurfaceOzoneEGL::Initialize(GLSurface::Format format) { |
- format_ = format; |
- return Initialize(ozone_surface_->CreateVSyncProvider()); |
-} |
- |
-bool GLSurfaceOzoneEGL::Resize(const gfx::Size& size, |
- float scale_factor, |
- bool has_alpha) { |
- if (!ozone_surface_->ResizeNativeWindow(size)) { |
- if (!ReinitializeNativeSurface() || |
- !ozone_surface_->ResizeNativeWindow(size)) |
- return false; |
- } |
- |
- return NativeViewGLSurfaceEGL::Resize(size, scale_factor, has_alpha); |
-} |
- |
-gfx::SwapResult GLSurfaceOzoneEGL::SwapBuffers() { |
- gfx::SwapResult result = NativeViewGLSurfaceEGL::SwapBuffers(); |
- if (result != gfx::SwapResult::SWAP_ACK) |
- return result; |
- |
- return ozone_surface_->OnSwapBuffers() ? gfx::SwapResult::SWAP_ACK |
- : gfx::SwapResult::SWAP_FAILED; |
-} |
- |
-bool GLSurfaceOzoneEGL::ScheduleOverlayPlane(int z_order, |
- gfx::OverlayTransform transform, |
- GLImage* image, |
- const gfx::Rect& bounds_rect, |
- const gfx::RectF& crop_rect) { |
- return image->ScheduleOverlayPlane(widget_, z_order, transform, bounds_rect, |
- crop_rect); |
-} |
- |
-EGLConfig GLSurfaceOzoneEGL::GetConfig() { |
- if (!config_) { |
- ui::EglConfigCallbacks callbacks = GetEglConfigCallbacks(GetDisplay()); |
- config_ = ozone_surface_->GetEGLSurfaceConfig(callbacks); |
- } |
- if (config_) |
- return config_; |
- return NativeViewGLSurfaceEGL::GetConfig(); |
-} |
- |
-GLSurfaceOzoneEGL::~GLSurfaceOzoneEGL() { |
- Destroy(); // The EGL surface must be destroyed before SurfaceOzone. |
-} |
- |
-bool GLSurfaceOzoneEGL::ReinitializeNativeSurface() { |
- std::unique_ptr<ui::ScopedMakeCurrent> scoped_make_current; |
- GLContext* current_context = GLContext::GetCurrent(); |
- bool was_current = current_context && current_context->IsCurrent(this); |
- if (was_current) { |
- scoped_make_current.reset(new ui::ScopedMakeCurrent(current_context, this)); |
- } |
- |
- Destroy(); |
- ozone_surface_ = ui::OzonePlatform::GetInstance() |
- ->GetSurfaceFactoryOzone() |
- ->CreateEGLSurfaceForWidget(widget_); |
- if (!ozone_surface_) { |
- LOG(ERROR) << "Failed to create native surface."; |
- return false; |
- } |
- |
- window_ = ozone_surface_->GetNativeWindow(); |
- if (!Initialize(format_)) { |
- LOG(ERROR) << "Failed to initialize."; |
- return false; |
- } |
- |
- return true; |
-} |
- |
-} // namespace |
- |
-scoped_refptr<GLSurface> CreateViewGLSurfaceOzone( |
- gfx::AcceleratedWidget window) { |
- std::unique_ptr<ui::SurfaceOzoneEGL> surface_ozone = |
- ui::OzonePlatform::GetInstance() |
- ->GetSurfaceFactoryOzone() |
- ->CreateEGLSurfaceForWidget(window); |
- if (!surface_ozone) |
- return nullptr; |
- return InitializeGLSurface( |
- new GLSurfaceOzoneEGL(std::move(surface_ozone), window)); |
-} |
- |
-} // namespace gl |