Index: examples/sample_app/sample_app.cc |
diff --git a/examples/sample_app/sample_app.cc b/examples/sample_app/sample_app.cc |
index 26eac514b0281d87b7aeb339951c3b32710ef2e9..afc80fab887fe4f9d45eb03cd849f4311bb0bbef 100644 |
--- a/examples/sample_app/sample_app.cc |
+++ b/examples/sample_app/sample_app.cc |
@@ -21,20 +21,24 @@ |
namespace examples { |
-class SampleApp : public mojo::ApplicationDelegate, |
- public mojo::NativeViewportClient { |
+class SampleApp |
+ : public mojo::ApplicationDelegate, |
+ public mojo::NativeViewportClient, |
+ public mojo::InterfaceImpl<mojo::NativeViewportEventDispatcher> { |
public: |
SampleApp() : weak_factory_(this) {} |
- virtual ~SampleApp() { |
+ ~SampleApp() override { |
// TODO(darin): Fix shutdown so we don't need to leak this. |
mojo_ignore_result(gles2_client_.release()); |
} |
- virtual void Initialize(mojo::ApplicationImpl* app) override { |
+ void Initialize(mojo::ApplicationImpl* app) override { |
app->ConnectToService("mojo:native_viewport_service", &viewport_); |
viewport_.set_client(this); |
+ SetEventDispatcher(); |
+ |
// TODO(jamesr): Should be mojo:gpu_service |
app->ConnectToService("mojo:native_viewport_service", &gpu_service_); |
@@ -47,16 +51,16 @@ class SampleApp : public mojo::ApplicationDelegate, |
viewport_->Show(); |
} |
- virtual void OnDestroyed() override { mojo::RunLoop::current()->Quit(); } |
+ void OnDestroyed() override { mojo::RunLoop::current()->Quit(); } |
- virtual void OnSizeChanged(mojo::SizePtr size) override { |
+ void OnSizeChanged(mojo::SizePtr size) override { |
assert(size); |
if (gles2_client_) |
gles2_client_->SetSize(*size); |
} |
- virtual void OnEvent(mojo::EventPtr event, |
- const mojo::Callback<void()>& callback) override { |
+ void OnEvent(mojo::EventPtr event, |
+ const mojo::Callback<void()>& callback) override { |
assert(event); |
if (event->location_data && event->location_data->in_view_location) |
gles2_client_->HandleInputEvent(*event); |
@@ -64,6 +68,12 @@ class SampleApp : public mojo::ApplicationDelegate, |
} |
private: |
+ void SetEventDispatcher() { |
+ mojo::NativeViewportEventDispatcherPtr proxy; |
+ mojo::WeakBindToProxy(this, &proxy); |
+ viewport_->SetEventDispatcher(proxy.Pass()); |
+ } |
+ |
void OnCreatedNativeViewport(uint64_t native_viewport_id) { |
mojo::SizePtr size = mojo::Size::New(); |
size->width = 800; |