| Index: gpu/ipc/service/child_window_surface_win.cc
|
| diff --git a/gpu/ipc/service/child_window_surface_win.cc b/gpu/ipc/service/child_window_surface_win.cc
|
| deleted file mode 100644
|
| index 36b65a7ef87af76ecdf644f415717220e0beb837..0000000000000000000000000000000000000000
|
| --- a/gpu/ipc/service/child_window_surface_win.cc
|
| +++ /dev/null
|
| @@ -1,176 +0,0 @@
|
| -// Copyright 2015 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 "gpu/ipc/service/child_window_surface_win.h"
|
| -
|
| -#include <memory>
|
| -
|
| -#include "base/compiler_specific.h"
|
| -#include "base/memory/ptr_util.h"
|
| -#include "gpu/ipc/common/gpu_messages.h"
|
| -#include "gpu/ipc/service/gpu_channel_manager.h"
|
| -#include "gpu/ipc/service/gpu_channel_manager_delegate.h"
|
| -#include "ui/display/display_switches.h"
|
| -#include "ui/gfx/native_widget_types.h"
|
| -#include "ui/gl/egl_util.h"
|
| -#include "ui/gl/gl_context.h"
|
| -#include "ui/gl/gl_surface_egl.h"
|
| -#include "ui/gl/scoped_make_current.h"
|
| -
|
| -namespace gpu {
|
| -
|
| -ChildWindowSurfaceWin::ChildWindowSurfaceWin(
|
| - std::unique_ptr<gfx::VSyncProvider> vsync_provider,
|
| - base::WeakPtr<ImageTransportSurfaceDelegate> delegate,
|
| - HWND parent_window)
|
| - : gl::NativeViewGLSurfaceEGL(0, std::move(vsync_provider)),
|
| - child_window_(delegate, parent_window),
|
| - alpha_(true),
|
| - first_swap_(true) {
|
| - // Don't use EGL_ANGLE_window_fixed_size so that we can avoid recreating the
|
| - // window surface, which can cause flicker on DirectComposition.
|
| - enable_fixed_size_angle_ = false;
|
| -}
|
| -
|
| -EGLConfig ChildWindowSurfaceWin::GetConfig() {
|
| - if (!config_) {
|
| - int alpha_size = alpha_ ? 8 : EGL_DONT_CARE;
|
| - int bits_per_channel =
|
| - base::CommandLine::ForCurrentProcess()->HasSwitch(switches::kEnableHDR)
|
| - ? 16
|
| - : 8;
|
| -
|
| - EGLint config_attribs[] = {EGL_ALPHA_SIZE,
|
| - alpha_size,
|
| - EGL_BLUE_SIZE,
|
| - bits_per_channel,
|
| - EGL_GREEN_SIZE,
|
| - bits_per_channel,
|
| - EGL_RED_SIZE,
|
| - bits_per_channel,
|
| - EGL_RENDERABLE_TYPE,
|
| - EGL_OPENGL_ES2_BIT,
|
| - EGL_SURFACE_TYPE,
|
| - EGL_WINDOW_BIT | EGL_PBUFFER_BIT,
|
| - EGL_NONE};
|
| -
|
| - EGLDisplay display = GetHardwareDisplay();
|
| - EGLint num_configs;
|
| - if (!eglChooseConfig(display, config_attribs, NULL, 0, &num_configs)) {
|
| - LOG(ERROR) << "eglChooseConfig failed with error "
|
| - << ui::GetLastEGLErrorString();
|
| - return NULL;
|
| - }
|
| - std::vector<EGLConfig> configs(num_configs);
|
| - if (!eglChooseConfig(display, config_attribs, configs.data(), num_configs,
|
| - &num_configs)) {
|
| - LOG(ERROR) << "eglChooseConfig failed with error "
|
| - << ui::GetLastEGLErrorString();
|
| - return NULL;
|
| - }
|
| - config_ = configs[0];
|
| - for (int i = 0; i < num_configs; i++) {
|
| - EGLint red_bits;
|
| - eglGetConfigAttrib(display, configs[i], EGL_RED_SIZE, &red_bits);
|
| - // Try to pick a configuration with the right number of bits rather
|
| - // than one that just has enough bits.
|
| - if (red_bits == bits_per_channel) {
|
| - config_ = configs[i];
|
| - break;
|
| - }
|
| - }
|
| - }
|
| -
|
| - return config_;
|
| -}
|
| -
|
| -bool ChildWindowSurfaceWin::InitializeNativeWindow() {
|
| - if (window_)
|
| - return true;
|
| -
|
| - bool result = child_window_.Initialize();
|
| - window_ = child_window_.window();
|
| - return result;
|
| -}
|
| -
|
| -bool ChildWindowSurfaceWin::Resize(const gfx::Size& size,
|
| - float scale_factor,
|
| - bool has_alpha) {
|
| - if (!SupportsPostSubBuffer()) {
|
| - if (!MoveWindow(window_, 0, 0, size.width(), size.height(), FALSE)) {
|
| - return false;
|
| - }
|
| - alpha_ = has_alpha;
|
| - return gl::NativeViewGLSurfaceEGL::Resize(size, scale_factor, has_alpha);
|
| - } else {
|
| - if (size == GetSize() && has_alpha == alpha_)
|
| - return true;
|
| -
|
| - // Force a resize and redraw (but not a move, activate, etc.).
|
| - if (!SetWindowPos(window_, nullptr, 0, 0, size.width(), size.height(),
|
| - SWP_NOMOVE | SWP_NOACTIVATE | SWP_NOCOPYBITS |
|
| - SWP_NOOWNERZORDER | SWP_NOZORDER)) {
|
| - return false;
|
| - }
|
| - size_ = size;
|
| - if (has_alpha == alpha_) {
|
| - // A 0-size PostSubBuffer doesn't swap but forces the swap chain to resize
|
| - // to match the window.
|
| - PostSubBuffer(0, 0, 0, 0);
|
| - } else {
|
| - alpha_ = has_alpha;
|
| - config_ = nullptr;
|
| -
|
| - std::unique_ptr<ui::ScopedMakeCurrent> scoped_make_current;
|
| - gl::GLContext* current_context = gl::GLContext::GetCurrent();
|
| - bool was_current = current_context && current_context->IsCurrent(this);
|
| - if (was_current) {
|
| - scoped_make_current.reset(
|
| - new ui::ScopedMakeCurrent(current_context, this));
|
| - current_context->ReleaseCurrent(this);
|
| - }
|
| -
|
| - Destroy();
|
| -
|
| - if (!Initialize()) {
|
| - LOG(ERROR) << "Failed to resize window.";
|
| - return false;
|
| - }
|
| - }
|
| - return true;
|
| - }
|
| -}
|
| -
|
| -gfx::SwapResult ChildWindowSurfaceWin::SwapBuffers() {
|
| - gfx::SwapResult result = NativeViewGLSurfaceEGL::SwapBuffers();
|
| - // Force the driver to finish drawing before clearing the contents to
|
| - // transparent, to reduce or eliminate the period of time where the contents
|
| - // have flashed black.
|
| - if (first_swap_) {
|
| - glFinish();
|
| - first_swap_ = false;
|
| - }
|
| - child_window_.ClearInvalidContents();
|
| - return result;
|
| -}
|
| -
|
| -gfx::SwapResult ChildWindowSurfaceWin::PostSubBuffer(int x,
|
| - int y,
|
| - int width,
|
| - int height) {
|
| - gfx::SwapResult result =
|
| - NativeViewGLSurfaceEGL::PostSubBuffer(x, y, width, height);
|
| - child_window_.ClearInvalidContents();
|
| - return result;
|
| -}
|
| -
|
| -void ChildWindowSurfaceWin::WaitForSnapshotRendering() {
|
| - DCHECK(gl::GLContext::GetCurrent()->IsCurrent(this));
|
| - glFinish();
|
| -}
|
| -
|
| -ChildWindowSurfaceWin::~ChildWindowSurfaceWin() {
|
| -}
|
| -
|
| -} // namespace gpu
|
|
|