| Index: mojo/services/native_viewport/native_viewport_win.cc
|
| diff --git a/mojo/services/native_viewport/native_viewport_win.cc b/mojo/services/native_viewport/native_viewport_win.cc
|
| index 85ef0130685e304fba06c38d6c7e43fcb4a85de6..3654cb7d24a2cded07a08809c3394eda4a748e28 100644
|
| --- a/mojo/services/native_viewport/native_viewport_win.cc
|
| +++ b/mojo/services/native_viewport/native_viewport_win.cc
|
| @@ -3,6 +3,10 @@
|
| // found in the LICENSE file.
|
|
|
| #include "mojo/services/native_viewport/native_viewport.h"
|
| +
|
| +#include "base/bind.h"
|
| +#include "gpu/command_buffer/client/gl_in_process_context.h"
|
| +#include "gpu/command_buffer/client/gles2_implementation.h"
|
| #include "ui/events/event.h"
|
| #include "ui/gfx/win/window_impl.h"
|
|
|
| @@ -32,6 +36,7 @@ class NativeViewportWin : public gfx::WindowImpl,
|
| BEGIN_MSG_MAP_EX(NativeViewportWin)
|
| MESSAGE_RANGE_HANDLER_EX(WM_MOUSEFIRST, WM_MOUSELAST, OnMouseRange)
|
|
|
| + MSG_WM_CREATE(OnCreate)
|
| MSG_WM_PAINT(OnPaint)
|
| MSG_WM_SIZE(OnSize)
|
| MSG_WM_DESTROY(OnDestroy)
|
| @@ -45,6 +50,19 @@ class NativeViewportWin : public gfx::WindowImpl,
|
| SetMsgHandled(handled);
|
| return 0;
|
| }
|
| + LRESULT OnCreate(CREATESTRUCT* create_struct) {
|
| + RECT cr;
|
| + GetClientRect(hwnd(), &cr);
|
| + gpu::GLInProcessContextAttribs attribs;
|
| + gl_context_.reset(gpu::GLInProcessContext::CreateContext(
|
| + false, hwnd(), gfx::Size(cr.right - cr.left, cr.bottom - cr.top),
|
| + false, attribs, gfx::PreferDiscreteGpu));
|
| + gl_context_->SetContextLostCallback(base::Bind(
|
| + &NativeViewportWin::OnGLContextLost, base::Unretained(this)));
|
| +
|
| + delegate_->OnGLContextAvailable(gl_context_->GetImplementation());
|
| + return 0;
|
| + }
|
| void OnPaint(HDC) {
|
| RECT cr;
|
| GetClientRect(hwnd(), &cr);
|
| @@ -65,7 +83,13 @@ class NativeViewportWin : public gfx::WindowImpl,
|
| delegate_->OnDestroyed();
|
| }
|
|
|
| + void OnGLContextLost() {
|
| + gl_context_.reset();
|
| + delegate_->OnGLContextLost();
|
| + }
|
| +
|
| NativeViewportDelegate* delegate_;
|
| + scoped_ptr<gpu::GLInProcessContext> gl_context_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(NativeViewportWin);
|
| };
|
|
|