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

Unified Diff: ui/gfx/gl/gl_surface_wgl.cc

Issue 10392068: ui: Move gl/ directory out of gfx/, up to ui/. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix mac_rel Created 8 years, 7 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
« no previous file with comments | « ui/gfx/gl/gl_surface_wgl.h ('k') | ui/gfx/gl/gl_surface_win.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/gfx/gl/gl_surface_wgl.cc
diff --git a/ui/gfx/gl/gl_surface_wgl.cc b/ui/gfx/gl/gl_surface_wgl.cc
deleted file mode 100644
index 3d7571ddc991bcdf497e9b7c56072514bc551cfa..0000000000000000000000000000000000000000
--- a/ui/gfx/gl/gl_surface_wgl.cc
+++ /dev/null
@@ -1,366 +0,0 @@
-// Copyright (c) 2012 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/gfx/gl/gl_surface_wgl.h"
-
-#include "base/logging.h"
-#include "base/memory/scoped_ptr.h"
-#include "ui/gfx/gl/gl_bindings.h"
-
-namespace gfx {
-
-namespace {
-const PIXELFORMATDESCRIPTOR kPixelFormatDescriptor = {
- sizeof(kPixelFormatDescriptor), // Size of structure.
- 1, // Default version.
- PFD_DRAW_TO_WINDOW | // Window drawing support.
- PFD_SUPPORT_OPENGL | // OpenGL support.
- PFD_DOUBLEBUFFER, // Double buffering support (not stereo).
- PFD_TYPE_RGBA, // RGBA color mode (not indexed).
- 24, // 24 bit color mode.
- 0, 0, 0, 0, 0, 0, // Don't set RGB bits & shifts.
- 8, 0, // 8 bit alpha
- 0, // No accumulation buffer.
- 0, 0, 0, 0, // Ignore accumulation bits.
- 0, // no z-buffer.
- 0, // no stencil buffer.
- 0, // No aux buffer.
- PFD_MAIN_PLANE, // Main drawing plane (not overlay).
- 0, // Reserved.
- 0, 0, 0, // Layer masks ignored.
-};
-
-LRESULT CALLBACK IntermediateWindowProc(HWND window,
- UINT message,
- WPARAM w_param,
- LPARAM l_param) {
- switch (message) {
- case WM_ERASEBKGND:
- // Prevent windows from erasing the background.
- return 1;
- case WM_PAINT:
- // Do not paint anything.
- PAINTSTRUCT paint;
- if (BeginPaint(window, &paint))
- EndPaint(window, &paint);
- return 0;
- default:
- return DefWindowProc(window, message, w_param, l_param);
- }
-}
-
-class DisplayWGL {
- public:
- DisplayWGL()
- : module_handle_(0),
- window_class_(0),
- window_handle_(0),
- device_context_(0),
- pixel_format_(0) {
- }
-
- ~DisplayWGL() {
- if (window_handle_)
- DestroyWindow(window_handle_);
- if (window_class_)
- UnregisterClass(reinterpret_cast<wchar_t*>(window_class_),
- module_handle_);
- }
-
- bool Init() {
- // We must initialize a GL context before we can bind to extension entry
- // points. This requires the device context for a window.
- if (!GetModuleHandleEx(GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT |
- GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS,
- reinterpret_cast<wchar_t*>(IntermediateWindowProc),
- &module_handle_)) {
- LOG(ERROR) << "GetModuleHandleEx failed.";
- return false;
- }
-
- WNDCLASS intermediate_class;
- intermediate_class.style = CS_OWNDC;
- intermediate_class.lpfnWndProc = IntermediateWindowProc;
- intermediate_class.cbClsExtra = 0;
- intermediate_class.cbWndExtra = 0;
- intermediate_class.hInstance = module_handle_;
- intermediate_class.hIcon = LoadIcon(NULL, IDI_APPLICATION);
- intermediate_class.hCursor = LoadCursor(NULL, IDC_ARROW);
- intermediate_class.hbrBackground = NULL;
- intermediate_class.lpszMenuName = NULL;
- intermediate_class.lpszClassName = L"Intermediate GL Window";
- window_class_ = RegisterClass(&intermediate_class);
- if (!window_class_) {
- LOG(ERROR) << "RegisterClass failed.";
- return false;
- }
-
- window_handle_ = CreateWindow(
- reinterpret_cast<wchar_t*>(window_class_),
- L"",
- WS_OVERLAPPEDWINDOW,
- 0, 0,
- 100, 100,
- NULL,
- NULL,
- NULL,
- NULL);
- if (!window_handle_) {
- LOG(ERROR) << "CreateWindow failed.";
- return false;
- }
-
- device_context_ = GetDC(window_handle_);
- pixel_format_ = ChoosePixelFormat(device_context_,
- &kPixelFormatDescriptor);
- if (pixel_format_ == 0) {
- LOG(ERROR) << "Unable to get the pixel format for GL context.";
- return false;
- }
- if (!SetPixelFormat(device_context_,
- pixel_format_,
- &kPixelFormatDescriptor)) {
- LOG(ERROR) << "Unable to set the pixel format for temporary GL context.";
- return false;
- }
-
- return true;
- }
-
- ATOM window_class() const { return window_class_; }
- HDC device_context() const { return device_context_; }
- int pixel_format() const { return pixel_format_; }
-
- private:
- HINSTANCE module_handle_;
- ATOM window_class_;
- HWND window_handle_;
- HDC device_context_;
- int pixel_format_;
-};
-DisplayWGL* g_display;
-} // namespace
-
-GLSurfaceWGL::GLSurfaceWGL() {
-}
-
-GLSurfaceWGL::~GLSurfaceWGL() {
-}
-
-void* GLSurfaceWGL::GetDisplay() {
- return GetDisplayDC();
-}
-
-bool GLSurfaceWGL::InitializeOneOff() {
- static bool initialized = false;
- if (initialized)
- return true;
-
- DCHECK(g_display == NULL);
- scoped_ptr<DisplayWGL> wgl_display(new DisplayWGL);
- if (!wgl_display->Init())
- return false;
-
- // Create a temporary GL context to bind to extension entry points.
- HGLRC gl_context = wglCreateContext(wgl_display->device_context());
- if (!gl_context) {
- LOG(ERROR) << "Failed to create temporary context.";
- return false;
- }
- if (!wglMakeCurrent(wgl_display->device_context(), gl_context)) {
- LOG(ERROR) << "Failed to make temporary GL context current.";
- wglDeleteContext(gl_context);
- return false;
- }
- // Get bindings to extension functions that cannot be acquired without a
- // current context.
- InitializeGLBindingsGL();
- InitializeGLBindingsWGL();
-
- wglMakeCurrent(NULL, NULL);
- wglDeleteContext(gl_context);
-
- g_display = wgl_display.release();
- initialized = true;
- return true;
-}
-
-HDC GLSurfaceWGL::GetDisplayDC() {
- return g_display->device_context();
-}
-
-NativeViewGLSurfaceWGL::NativeViewGLSurfaceWGL(gfx::AcceleratedWidget window)
- : window_(window),
- child_window_(NULL),
- device_context_(NULL) {
- DCHECK(window);
-}
-
-NativeViewGLSurfaceWGL::~NativeViewGLSurfaceWGL() {
- Destroy();
-}
-
-bool NativeViewGLSurfaceWGL::Initialize() {
- DCHECK(!device_context_);
-
- RECT rect;
- if (!GetClientRect(window_, &rect)) {
- LOG(ERROR) << "GetClientRect failed.\n";
- Destroy();
- return false;
- }
-
- // Create a child window. WGL has problems using a window handle owned by
- // another process.
- child_window_ = CreateWindow(
- reinterpret_cast<wchar_t*>(g_display->window_class()),
- L"",
- WS_CHILDWINDOW | WS_DISABLED | WS_VISIBLE,
- 0, 0,
- rect.right - rect.left,
- rect.bottom - rect.top,
- window_,
- NULL,
- NULL,
- NULL);
- if (!child_window_) {
- LOG(ERROR) << "CreateWindow failed.\n";
- Destroy();
- return false;
- }
-
- // The GL context will render to this window.
- device_context_ = GetDC(child_window_);
- if (!device_context_) {
- LOG(ERROR) << "Unable to get device context for window.";
- Destroy();
- return false;
- }
-
- if (!SetPixelFormat(device_context_,
- g_display->pixel_format(),
- &kPixelFormatDescriptor)) {
- LOG(ERROR) << "Unable to set the pixel format for GL context.";
- Destroy();
- return false;
- }
-
- return true;
-}
-
-void NativeViewGLSurfaceWGL::Destroy() {
- if (child_window_ && device_context_)
- ReleaseDC(child_window_, device_context_);
-
- if (child_window_)
- DestroyWindow(child_window_);
-
- child_window_ = NULL;
- device_context_ = NULL;
-}
-
-bool NativeViewGLSurfaceWGL::IsOffscreen() {
- return false;
-}
-
-bool NativeViewGLSurfaceWGL::SwapBuffers() {
- // Resize the child window to match the parent before swapping. Do not repaint
- // it as it moves.
- RECT rect;
- if (!GetClientRect(window_, &rect))
- return false;
- if (!MoveWindow(child_window_,
- 0, 0,
- rect.right - rect.left,
- rect.bottom - rect.top,
- FALSE)) {
- return false;
- }
-
- DCHECK(device_context_);
- return ::SwapBuffers(device_context_) == TRUE;
-}
-
-gfx::Size NativeViewGLSurfaceWGL::GetSize() {
- RECT rect;
- BOOL result = GetClientRect(child_window_, &rect);
- DCHECK(result);
- return gfx::Size(rect.right - rect.left, rect.bottom - rect.top);
-}
-
-void* NativeViewGLSurfaceWGL::GetHandle() {
- return device_context_;
-}
-
-PbufferGLSurfaceWGL::PbufferGLSurfaceWGL(const gfx::Size& size)
- : size_(size),
- device_context_(NULL),
- pbuffer_(NULL) {
-}
-
-PbufferGLSurfaceWGL::~PbufferGLSurfaceWGL() {
- Destroy();
-}
-
-bool PbufferGLSurfaceWGL::Initialize() {
- DCHECK(!device_context_);
-
- if (!wglCreatePbufferARB) {
- LOG(ERROR) << "wglCreatePbufferARB not available.";
- Destroy();
- return false;
- }
-
- const int kNoAttributes[] = { 0 };
- pbuffer_ = wglCreatePbufferARB(g_display->device_context(),
- g_display->pixel_format(),
- size_.width(), size_.height(),
- kNoAttributes);
-
- if (!pbuffer_) {
- LOG(ERROR) << "Unable to create pbuffer.";
- Destroy();
- return false;
- }
-
- device_context_ = wglGetPbufferDCARB(static_cast<HPBUFFERARB>(pbuffer_));
- if (!device_context_) {
- LOG(ERROR) << "Unable to get pbuffer device context.";
- Destroy();
- return false;
- }
-
- return true;
-}
-
-void PbufferGLSurfaceWGL::Destroy() {
- if (pbuffer_ && device_context_)
- wglReleasePbufferDCARB(static_cast<HPBUFFERARB>(pbuffer_), device_context_);
-
- device_context_ = NULL;
-
- if (pbuffer_) {
- wglDestroyPbufferARB(static_cast<HPBUFFERARB>(pbuffer_));
- pbuffer_ = NULL;
- }
-}
-
-bool PbufferGLSurfaceWGL::IsOffscreen() {
- return true;
-}
-
-bool PbufferGLSurfaceWGL::SwapBuffers() {
- NOTREACHED() << "Attempted to call SwapBuffers on a pbuffer.";
- return false;
-}
-
-gfx::Size PbufferGLSurfaceWGL::GetSize() {
- return size_;
-}
-
-void* PbufferGLSurfaceWGL::GetHandle() {
- return device_context_;
-}
-
-} // namespace gfx
« no previous file with comments | « ui/gfx/gl/gl_surface_wgl.h ('k') | ui/gfx/gl/gl_surface_win.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698