Index: remoting/client/ios/session/remoting_client.mm |
diff --git a/remoting/client/ios/session/remoting_client.mm b/remoting/client/ios/session/remoting_client.mm |
index bf0ce370f951d0705bd673a90cac4679ad8eb289..c56275bd169ae27c17f54269db7d6fba9ab39a3a 100644 |
--- a/remoting/client/ios/session/remoting_client.mm |
+++ b/remoting/client/ios/session/remoting_client.mm |
@@ -8,6 +8,8 @@ |
#import "remoting/client/ios/session/remoting_client.h" |
+#include <memory> |
+ |
#import "base/mac/bind_objc_block.h" |
#import "ios/third_party/material_components_ios/src/components/Dialogs/src/MaterialDialogs.h" |
#import "remoting/client/ios/display/gl_display_handler.h" |
@@ -18,6 +20,7 @@ |
#include "remoting/client/chromoting_client_runtime.h" |
#include "remoting/client/chromoting_session.h" |
#include "remoting/client/connect_to_host_info.h" |
+#include "remoting/client/gesture_interpreter.h" |
#include "remoting/client/ios/session/remoting_client_session_delegate.h" |
#include "remoting/protocol/session.h" |
#include "remoting/protocol/video_renderer.h" |
@@ -36,6 +39,7 @@ NSString* const kHostSessionPin = @"kHostSessionPin"; |
ClientSessionDetails* _sessionDetails; |
// Call _secretFetchedCallback on the network thread. |
remoting::protocol::SecretFetchedCallback _secretFetchedCallback; |
+ std::unique_ptr<remoting::GestureInterpreter> _gestureInterpreter; |
} |
@end |
@@ -108,6 +112,12 @@ NSString* const kHostSessionPin = @"kHostSessionPin"; |
base::WeakPtr<remoting::protocol::AudioStub> audioPlayer = nullptr; |
_displayHandler = [[GlDisplayHandler alloc] init]; |
+ _displayHandler.delegate = self; |
+ __weak GlDisplayHandler* weakDisplayHandler = _displayHandler; |
+ _gestureInterpreter.reset(new remoting::GestureInterpreter( |
+ base::BindBlockArc(^(const remoting::ViewMatrix& matrix) { |
+ [weakDisplayHandler onPixelTransformationChanged:matrix]; |
+ }))); |
_runtime->ui_task_runner()->PostTask( |
FROM_HERE, base::BindBlockArc(^{ |
@@ -138,6 +148,10 @@ NSString* const kHostSessionPin = @"kHostSessionPin"; |
return _sessionDetails.hostInfo; |
} |
+- (remoting::GestureInterpreter*)gestureInterpreter { |
+ return _gestureInterpreter.get(); |
+} |
+ |
#pragma mark - ChromotingSession::Delegate |
- (void)onConnectionState:(remoting::protocol::ConnectionToHost::State)state |
@@ -201,4 +215,18 @@ NSString* const kHostSessionPin = @"kHostSessionPin"; |
type, message); |
} |
+- (void)surfaceChanged:(const CGRect&)frame { |
+ [_displayHandler onSurfaceChanged:frame]; |
+ _gestureInterpreter->OnSurfaceSizeChanged(frame.size.width, |
+ frame.size.height); |
+} |
+ |
+#pragma mark - GlDisplayHandlerDelegate |
+ |
+- (void)canvasSizeChanged:(CGSize)size { |
+ if (_gestureInterpreter) { |
+ _gestureInterpreter->OnDesktopSizeChanged(size.width, size.height); |
+ } |
+} |
+ |
@end |