| Index: ui/ozone/platform/cast/gl_surface_cast.cc
|
| diff --git a/ui/ozone/platform/cast/gl_surface_cast.cc b/ui/ozone/platform/cast/gl_surface_cast.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..6dc6099cd7d903a45df4e5fdc93e043442557169
|
| --- /dev/null
|
| +++ b/ui/ozone/platform/cast/gl_surface_cast.cc
|
| @@ -0,0 +1,71 @@
|
| +// 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/ozone/platform/cast/gl_surface_cast.h"
|
| +
|
| +#include "ui/ozone/common/egl_util.h"
|
| +#include "ui/ozone/platform/cast/surface_factory_cast.h"
|
| +
|
| +namespace ui {
|
| +
|
| +GLSurfaceCast::GLSurfaceCast(gfx::AcceleratedWidget widget,
|
| + SurfaceFactoryCast* parent)
|
| + : NativeViewGLSurfaceEGL(parent->GetNativeWindow()),
|
| + widget_(widget),
|
| + parent_(parent) {
|
| + DCHECK(parent_);
|
| +}
|
| +
|
| +gfx::SwapResult GLSurfaceCast::SwapBuffers() {
|
| + gfx::SwapResult result = NativeViewGLSurfaceEGL::SwapBuffers();
|
| + if (result == gfx::SwapResult::SWAP_ACK)
|
| + parent_->OnSwapBuffers();
|
| +
|
| + return result;
|
| +}
|
| +
|
| +bool GLSurfaceCast::Resize(const gfx::Size& size,
|
| + float scale_factor,
|
| + bool has_alpha) {
|
| + return parent_->ResizeDisplay(size) &&
|
| + NativeViewGLSurfaceEGL::Resize(size, scale_factor, has_alpha);
|
| +}
|
| +
|
| +bool GLSurfaceCast::ScheduleOverlayPlane(int z_order,
|
| + gfx::OverlayTransform transform,
|
| + gl::GLImage* image,
|
| + const gfx::Rect& bounds_rect,
|
| + const gfx::RectF& crop_rect) {
|
| + return image->ScheduleOverlayPlane(widget_, z_order, transform, bounds_rect,
|
| + crop_rect);
|
| +}
|
| +
|
| +EGLConfig GLSurfaceCast::GetConfig() {
|
| + if (!config_) {
|
| + EGLint config_attribs[] = {EGL_BUFFER_SIZE,
|
| + 32,
|
| + EGL_ALPHA_SIZE,
|
| + 8,
|
| + EGL_BLUE_SIZE,
|
| + 8,
|
| + EGL_GREEN_SIZE,
|
| + 8,
|
| + EGL_RED_SIZE,
|
| + 8,
|
| + EGL_RENDERABLE_TYPE,
|
| + EGL_OPENGL_ES2_BIT,
|
| + EGL_SURFACE_TYPE,
|
| + EGL_WINDOW_BIT,
|
| + EGL_NONE};
|
| + config_ = ChooseEGLConfig(GetDisplay(), config_attribs);
|
| + }
|
| + return config_;
|
| +}
|
| +
|
| +GLSurfaceCast::~GLSurfaceCast() {
|
| + Destroy();
|
| + parent_->ChildDestroyed();
|
| +}
|
| +
|
| +} // namespace ui
|
|
|