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

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

Issue 2879743002: [CRD iOS] Hook the touch input feedback (Closed)
Patch Set: Fix dependency and race condition 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
« no previous file with comments | « remoting/ios/display/gl_display_handler.h ('k') | remoting/ios/session/remoting_client.mm » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..2f66b09356c04ceaaf15cd557ce79d2d0d8196d3 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> GrabRendererProxy();
+
// 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,10 @@ class Core : public protocol::CursorShapeStub, public GlRendererDelegate {
private:
remoting::ChromotingClientRuntime* runtime_;
+ // Will be std::move'd when GrabRendererProxy() is called.
+ std::unique_ptr<RendererProxy> owned_renderer_proxy_;
+ 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_;
@@ -93,6 +102,10 @@ Core::Core() : weak_factory_(this) {
runtime_->display_task_runner(),
protocol::FrameConsumer::PixelFormat::FORMAT_RGBA));
frame_consumer_ = owned_frame_consumer_->GetWeakPtr();
+
+ owned_renderer_proxy_.reset(
+ new RendererProxy(runtime_->display_task_runner()));
+ renderer_proxy_ = owned_renderer_proxy_->GetWeakPtr();
}
Core::~Core() {
@@ -113,6 +126,8 @@ void Core::Initialize() {
renderer_ = remoting::GlRenderer::CreateGlRendererWithDesktop();
+ renderer_proxy_->Initialize(renderer_->GetWeakPtr());
+
// renderer_.RequestCanvasSize();
// demo_screen_ = new GlDemoScreen();
@@ -125,6 +140,11 @@ void Core::SetHandlerDelegate(id<GlDisplayHandlerDelegate> delegate) {
handler_delegate_ = delegate;
}
+std::unique_ptr<RendererProxy> Core::GrabRendererProxy() {
+ DCHECK(owned_renderer_proxy_);
+ return std::move(owned_renderer_proxy_);
+}
+
void Core::SetCursorShape(const protocol::CursorShapeInfo& cursor_shape) {
DCHECK(runtime_->display_task_runner()->BelongsToCurrentThread());
renderer_->OnCursorShapeChanged(cursor_shape);
@@ -190,11 +210,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 +224,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 +234,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 +250,10 @@ base::WeakPtr<remoting::GlDisplayHandler::Core> Core::GetWeakPtr() {
base::Bind(&remoting::GlDisplayHandler::Core::Stop, _core->GetWeakPtr()));
}
+- (std::unique_ptr<remoting::RendererProxy>)CreateRendererProxy {
+ return _core->GrabRendererProxy();
+}
+
- (std::unique_ptr<remoting::protocol::VideoRenderer>)CreateVideoRenderer {
return base::MakeUnique<remoting::SoftwareVideoRenderer>(
_core->GrabFrameConsumer());
@@ -265,12 +281,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 {
« no previous file with comments | « remoting/ios/display/gl_display_handler.h ('k') | remoting/ios/session/remoting_client.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698