| Index: remoting/ios/display/gl_display_handler.mm
|
| diff --git a/remoting/ios/display/gl_display_handler.mm b/remoting/ios/display/gl_display_handler.mm
|
| index e8565efe59caca346cf60c5f644219eacb3b6fcc..908bea8c9658a45025385cef600b1ac4301ef227 100644
|
| --- a/remoting/ios/display/gl_display_handler.mm
|
| +++ b/remoting/ios/display/gl_display_handler.mm
|
| @@ -24,14 +24,17 @@
|
| #include "remoting/client/display/gl_renderer.h"
|
| #include "remoting/client/display/gl_renderer_delegate.h"
|
| #include "remoting/client/dual_buffer_frame_consumer.h"
|
| -#include "remoting/client/queued_task_poster.h"
|
| +#include "remoting/client/render_stub_proxy.h"
|
| #include "remoting/client/software_video_renderer.h"
|
| +#include "remoting/client/view_matrix.h"
|
|
|
| namespace remoting {
|
| namespace GlDisplayHandler {
|
|
|
| // The core that lives on the display thread.
|
| -class Core : public protocol::CursorShapeStub, public GlRendererDelegate {
|
| +class Core : public protocol::CursorShapeStub,
|
| + public RenderStub,
|
| + public GlRendererDelegate {
|
| public:
|
| Core();
|
| ~Core() override;
|
| @@ -53,7 +56,13 @@ class Core : public protocol::CursorShapeStub, public GlRendererDelegate {
|
| void Stop();
|
| void SurfaceCreated(GLKView* view);
|
| void SurfaceChanged(int width, int height);
|
| - void SetTransformation(const remoting::ViewMatrix& matrix);
|
| +
|
| + // RenderStub interface.
|
| + void SetTransformation(const remoting::ViewMatrix& matrix) override;
|
| + void SetCursorPosition(float x, float y) override;
|
| + void SetCursorVisibility(bool visible) override;
|
| + void StartInputFeedback(float x, float y, float diameter) override;
|
| +
|
| std::unique_ptr<protocol::FrameConsumer> GrabFrameConsumer();
|
| EAGLContext* GetEAGLContext();
|
| base::WeakPtr<Core> GetWeakPtr();
|
| @@ -195,6 +204,20 @@ void Core::SetTransformation(const remoting::ViewMatrix& matrix) {
|
| renderer_->OnPixelTransformationChanged(matrix.ToMatrixArray());
|
| }
|
|
|
| +void Core::SetCursorPosition(float x, float y) {
|
| + DCHECK(runtime_->display_task_runner()->BelongsToCurrentThread());
|
| + renderer_->OnCursorMoved(x, y);
|
| +}
|
| +
|
| +void Core::SetCursorVisibility(bool visible) {
|
| + DCHECK(runtime_->display_task_runner()->BelongsToCurrentThread());
|
| + renderer_->OnCursorVisibilityChanged(visible);
|
| +}
|
| +void Core::StartInputFeedback(float x, float y, float diameter) {
|
| + DCHECK(runtime_->display_task_runner()->BelongsToCurrentThread());
|
| + renderer_->OnCursorInputFeedback(x, y, diameter);
|
| +}
|
| +
|
| EAGLContext* Core::GetEAGLContext() {
|
| return eagl_context_;
|
| }
|
| @@ -209,7 +232,6 @@ base::WeakPtr<remoting::GlDisplayHandler::Core> Core::GetWeakPtr() {
|
| @interface GlDisplayHandler () {
|
| std::unique_ptr<remoting::GlDisplayHandler::Core> _core;
|
| remoting::ChromotingClientRuntime* _runtime;
|
| - std::unique_ptr<remoting::QueuedTaskPoster> _uiTaskPoster;
|
| }
|
| @end
|
|
|
| @@ -220,8 +242,6 @@ base::WeakPtr<remoting::GlDisplayHandler::Core> Core::GetWeakPtr() {
|
| if (self) {
|
| _runtime = remoting::ChromotingClientRuntime::GetInstance();
|
| _core.reset(new remoting::GlDisplayHandler::Core());
|
| - _uiTaskPoster.reset(
|
| - new remoting::QueuedTaskPoster(_runtime->display_task_runner()));
|
| }
|
| return self;
|
| }
|
| @@ -238,6 +258,11 @@ base::WeakPtr<remoting::GlDisplayHandler::Core> Core::GetWeakPtr() {
|
| base::Bind(&remoting::GlDisplayHandler::Core::Stop, _core->GetWeakPtr()));
|
| }
|
|
|
| +- (std::unique_ptr<remoting::RenderStub>)CreateRenderStub {
|
| + return base::MakeUnique<remoting::RenderStubProxy>(
|
| + _core->GetWeakPtr(), _runtime->display_task_runner());
|
| +}
|
| +
|
| - (std::unique_ptr<remoting::protocol::VideoRenderer>)CreateVideoRenderer {
|
| return base::MakeUnique<remoting::SoftwareVideoRenderer>(
|
| _core->GrabFrameConsumer());
|
| @@ -265,12 +290,6 @@ base::WeakPtr<remoting::GlDisplayHandler::Core> Core::GetWeakPtr() {
|
| _core->GetWeakPtr(), frame.size.width, frame.size.height));
|
| }
|
|
|
| -- (void)onPixelTransformationChanged:(const remoting::ViewMatrix&)matrix {
|
| - _uiTaskPoster->AddTask(
|
| - base::Bind(&remoting::GlDisplayHandler::Core::SetTransformation,
|
| - _core->GetWeakPtr(), matrix));
|
| -}
|
| -
|
| #pragma mark - Properties
|
|
|
| - (void)setDelegate:(id<GlDisplayHandlerDelegate>)delegate {
|
|
|