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

Unified Diff: remoting/ios/display/gl_display_handler.mm

Issue 2879743002: [CRD iOS] Hook the touch input feedback (Closed)
Patch Set: Rebase Created 3 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
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..d8ac1fb2e9d69e72eebf22d10f0cd3aa505546b9 100644
--- a/remoting/ios/display/gl_display_handler.mm
+++ b/remoting/ios/display/gl_display_handler.mm
@@ -24,10 +24,13 @@
#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/software_video_renderer.h"
+#include "remoting/client/ui/renderer_proxy.h"
namespace remoting {
+
+class ViewMatrix;
+
namespace GlDisplayHandler {
// The core that lives on the display thread.
@@ -40,6 +43,8 @@ class Core : public protocol::CursorShapeStub, public GlRendererDelegate {
void SetHandlerDelegate(id<GlDisplayHandlerDelegate> delegate);
+ std::unique_ptr<RendererProxy> CreateRendererProxy();
+
// CursorShapeStub interface.
void SetCursorShape(const protocol::CursorShapeInfo& cursor_shape) override;
@@ -53,7 +58,7 @@ 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);
+
std::unique_ptr<protocol::FrameConsumer> GrabFrameConsumer();
EAGLContext* GetEAGLContext();
base::WeakPtr<Core> GetWeakPtr();
@@ -61,6 +66,8 @@ class Core : public protocol::CursorShapeStub, public GlRendererDelegate {
private:
remoting::ChromotingClientRuntime* runtime_;
+ base::WeakPtr<RendererProxy> renderer_proxy_;
+
// Will be std::move'd when GrabFrameConsumer() is called.
std::unique_ptr<DualBufferFrameConsumer> owned_frame_consumer_;
base::WeakPtr<DualBufferFrameConsumer> frame_consumer_;
@@ -113,6 +120,10 @@ void Core::Initialize() {
renderer_ = remoting::GlRenderer::CreateGlRendererWithDesktop();
+ if (renderer_proxy_) {
+ renderer_proxy_->Initialize(renderer_->GetWeakPtr());
+ }
+
// renderer_.RequestCanvasSize();
// demo_screen_ = new GlDemoScreen();
@@ -125,6 +136,13 @@ void Core::SetHandlerDelegate(id<GlDisplayHandlerDelegate> delegate) {
handler_delegate_ = delegate;
}
+std::unique_ptr<RendererProxy> Core::CreateRendererProxy() {
+ DCHECK(!renderer_proxy_ && !renderer_);
+ RendererProxy* proxy = new RendererProxy(runtime_->display_task_runner());
+ renderer_proxy_ = proxy->GetWeakPtr();
+ return base::WrapUnique(proxy);
+}
+
void Core::SetCursorShape(const protocol::CursorShapeInfo& cursor_shape) {
DCHECK(runtime_->display_task_runner()->BelongsToCurrentThread());
renderer_->OnCursorShapeChanged(cursor_shape);
@@ -190,11 +208,6 @@ void Core::SurfaceChanged(int width, int height) {
renderer_->OnSurfaceChanged(width, height);
}
-void Core::SetTransformation(const remoting::ViewMatrix& matrix) {
- DCHECK(runtime_->display_task_runner()->BelongsToCurrentThread());
- renderer_->OnPixelTransformationChanged(matrix.ToMatrixArray());
-}
-
EAGLContext* Core::GetEAGLContext() {
return eagl_context_;
}
@@ -209,7 +222,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 +232,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 +248,10 @@ base::WeakPtr<remoting::GlDisplayHandler::Core> Core::GetWeakPtr() {
base::Bind(&remoting::GlDisplayHandler::Core::Stop, _core->GetWeakPtr()));
}
+- (std::unique_ptr<remoting::RendererProxy>)CreateRendererProxy {
+ return _core->CreateRendererProxy();
+}
+
- (std::unique_ptr<remoting::protocol::VideoRenderer>)CreateVideoRenderer {
return base::MakeUnique<remoting::SoftwareVideoRenderer>(
_core->GrabFrameConsumer());
@@ -265,12 +279,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 {

Powered by Google App Engine
This is Rietveld 408576698