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

Unified Diff: remoting/client/ios/chromiumoting/example_view_controller.mm

Issue 2555803002: Adding the iOS app and integration example with GlRenderer. (Closed)
Patch Set: Adjusting how gl_renderer draws layers and added a demo app for CRD iOS. Created 4 years 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/client/ios/chromiumoting/example_view_controller.mm
diff --git a/remoting/client/ios/chromiumoting/example_view_controller.mm b/remoting/client/ios/chromiumoting/example_view_controller.mm
new file mode 100644
index 0000000000000000000000000000000000000000..16535849b959acb3718ae12f23c3323d7cccfb66
--- /dev/null
+++ b/remoting/client/ios/chromiumoting/example_view_controller.mm
@@ -0,0 +1,86 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#if !defined(__has_feature) || !__has_feature(objc_arc)
+#error "This file requires ARC support."
+#endif
+
+#import "remoting/client/ios/chromiumoting/example_view_controller.h"
+
+#import "remoting/client/sys_opengl.h"
+
+#include "base/message_loop/message_loop.h"
+#include "remoting/protocol/frame_stats.h"
+#include "third_party/webrtc/modules/desktop_capture/desktop_frame.h"
+#include "third_party/webrtc/modules/desktop_capture/desktop_geometry.h"
+
+@interface ExampleViewController ()
+
+// Helper functions dealing with the GL Context.
+- (void)setupGL;
+- (void)tearDownGL;
+
+@end
+
+@implementation ExampleViewController
+
+#pragma mark - UIViewController
+
+- (void)viewDidLoad {
+ [super viewDidLoad];
+ _gestures = [[ClientGestures alloc] initWithView:self.view];
+ _context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2];
Yuwei 2016/12/19 23:26:09 The renderer has optimizations that are only for G
+ _runtime = new remoting::ios::AppRuntime();
+ static_cast<GLKView*>(self.view).context = _context;
+ [self setupGL];
+}
+
+- (void)viewDidUnload {
+ [super viewDidUnload];
+ [self tearDownGL];
+
+ if ([EAGLContext currentContext] == _context) {
+ [EAGLContext setCurrentContext:nil];
+ }
+ _context = nil;
+}
+
+- (void)setupGL {
+ displayHandler = [[GlDisplayHandler alloc] initWithRuntime:_runtime];
+ [displayHandler created];
+}
+
+- (void)tearDownGL {
+ // TODO(nicholss): Implement this in a real application.
+}
+
+- (void)viewWillAppear:(BOOL)animated {
+ [super viewWillAppear:animated];
+}
+
+- (void)viewDidAppear:(BOOL)animated {
+ video_renderer_ =
+ (remoting::SoftwareVideoRenderer*)[displayHandler CreateVideoRenderer]
+ .get();
+}
+
+- (void)viewWillDisappear:(BOOL)animated {
+ [super viewWillDisappear:NO];
+}
+
+- (void)viewDidLayoutSubviews {
+ [super viewDidLayoutSubviews];
+}
+
+#pragma mark - GLKViewDelegate
+
+// In general, avoid expensive work in this function to maximize frame rate.
+- (void)glkView:(GLKView*)view drawInRect:(CGRect)rect {
+ if (displayHandler) {
+ [displayHandler glkView:view drawInRect:rect];
+ [displayHandler draw];
+ }
+}
+
+@end

Powered by Google App Engine
This is Rietveld 408576698