Index: ui/ozone/demo/egl_demo.cc |
diff --git a/ui/ozone/demo/egl_demo.cc b/ui/ozone/demo/egl_demo.cc |
index 00084fc2ca757b3918a72f2e990ba2d87ce7071e..707cdb190131ca1068856123e777dfcc1c193ec0 100644 |
--- a/ui/ozone/demo/egl_demo.cc |
+++ b/ui/ozone/demo/egl_demo.cc |
@@ -4,25 +4,72 @@ |
#include "base/at_exit.h" |
#include "base/command_line.h" |
+#include "base/message_loop/message_loop.h" |
#include "ui/gfx/geometry/size.h" |
#include "ui/gl/gl_bindings.h" |
#include "ui/gl/gl_context.h" |
#include "ui/gl/gl_surface.h" |
#include "ui/ozone/public/ozone_platform.h" |
#include "ui/ozone/public/surface_factory_ozone.h" |
+#include "ui/platform_window/platform_window.h" |
+#include "ui/platform_window/platform_window_delegate.h" |
+ |
+const int kTestWindowWidth = 800; |
+const int kTestWindowHeight = 600; |
+ |
+class DemoWindow : public ui::PlatformWindowDelegate { |
+ public: |
+ DemoWindow() : widget_(gfx::kNullAcceleratedWidget) { |
+ platform_window_ = ui::OzonePlatform::GetInstance()->CreatePlatformWindow( |
+ this, gfx::Rect(kTestWindowWidth, kTestWindowHeight)); |
+ } |
+ virtual ~DemoWindow() {} |
+ |
+ gfx::AcceleratedWidget GetAcceleratedWidget() { |
+ // TODO(spang): We should start rendering asynchronously. |
+ CHECK_NE(widget_, gfx::kNullAcceleratedWidget) |
+ << "widget not available synchronously"; |
+ return widget_; |
+ } |
+ |
+ gfx::Size GetSize() { return platform_window_->GetBounds().size(); } |
+ |
+ // PlatformWindowDelegate: |
+ virtual void OnBoundsChanged(const gfx::Rect& new_bounds) OVERRIDE {} |
+ virtual void OnDamageRect(const gfx::Rect& damaged_region) OVERRIDE {} |
+ virtual void DispatchEvent(ui::Event* event) OVERRIDE {} |
+ virtual void OnCloseRequest() OVERRIDE {} |
+ virtual void OnClosed() OVERRIDE {} |
+ virtual void OnWindowStateChanged( |
+ ui::PlatformWindowState new_state) OVERRIDE {} |
+ virtual void OnLostCapture() OVERRIDE {} |
+ virtual void OnAcceleratedWidgetAvailable( |
+ gfx::AcceleratedWidget widget) OVERRIDE { |
+ CHECK_NE(widget, gfx::kNullAcceleratedWidget); |
+ widget_ = widget; |
+ } |
+ |
+ private: |
+ scoped_ptr<ui::PlatformWindow> platform_window_; |
+ gfx::AcceleratedWidget widget_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(DemoWindow); |
+}; |
int main(int argc, char** argv) { |
CommandLine::Init(argc, argv); |
base::AtExitManager exit_manager; |
+ base::MessageLoopForUI message_loop; |
+ |
ui::OzonePlatform::InitializeForUI(); |
if (!gfx::GLSurface::InitializeOneOff()) |
LOG(FATAL) << "Failed to initialize GL"; |
- gfx::AcceleratedWidget widget = |
- ui::SurfaceFactoryOzone::GetInstance()->GetAcceleratedWidget(); |
+ DemoWindow window; |
+ |
scoped_refptr<gfx::GLSurface> surface = |
- gfx::GLSurface::CreateViewGLSurface(widget); |
+ gfx::GLSurface::CreateViewGLSurface(window.GetAcceleratedWidget()); |
if (!surface) |
LOG(FATAL) << "Failed to create GL surface"; |
@@ -31,7 +78,8 @@ int main(int argc, char** argv) { |
if (!context) |
LOG(FATAL) << "Failed to create GL context"; |
- const gfx::Size window_size(800, 600); |
+ gfx::Size window_size = window.GetSize(); |
+ |
int iterations = 120; |
surface->Resize(window_size); |