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

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

Issue 2871993003: Moving the iOS directory to be remoting top level. (Closed)
Patch Set: //remoting/ios was the old landing target for the internal iOS application. Fix. 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/client/ios/display/gl_display_handler.h ('k') | remoting/client/ios/domain/BUILD.gn » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: remoting/client/ios/display/gl_display_handler.mm
diff --git a/remoting/client/ios/display/gl_display_handler.mm b/remoting/client/ios/display/gl_display_handler.mm
deleted file mode 100644
index 4f7ef51d4bccf210a5a507c3830bf499120cf367..0000000000000000000000000000000000000000
--- a/remoting/client/ios/display/gl_display_handler.mm
+++ /dev/null
@@ -1,280 +0,0 @@
-// Copyright 2017 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
-
-#include <array>
-
-#import "remoting/client/ios/display/gl_display_handler.h"
-
-#import "base/mac/bind_objc_block.h"
-#import "remoting/client/display/sys_opengl.h"
-#import "remoting/client/ios/display/gl_demo_screen.h"
-
-#include "base/bind.h"
-#include "base/macros.h"
-#include "base/memory/ptr_util.h"
-#include "base/memory/weak_ptr.h"
-#include "remoting/client/chromoting_client_runtime.h"
-#include "remoting/client/cursor_shape_stub_proxy.h"
-#include "remoting/client/display/gl_canvas.h"
-#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"
-
-namespace remoting {
-namespace GlDisplayHandler {
-
-// The core that lives on the display thread.
-class Core : public protocol::CursorShapeStub, public GlRendererDelegate {
- public:
- Core();
- ~Core() override;
-
- void Initialize();
-
- void SetHandlerDelegate(id<GlDisplayHandlerDelegate> delegate);
-
- // CursorShapeStub interface.
- void SetCursorShape(const protocol::CursorShapeInfo& cursor_shape) override;
-
- // GlRendererDelegate interface.
- bool CanRenderFrame() override;
- void OnFrameRendered() override;
- void OnSizeChanged(int width, int height) override;
-
- void OnFrameReceived(std::unique_ptr<webrtc::DesktopFrame> frame,
- const base::Closure& done);
- 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();
-
- private:
- remoting::ChromotingClientRuntime* runtime_;
-
- // Will be std::move'd when GrabFrameConsumer() is called.
- std::unique_ptr<DualBufferFrameConsumer> owned_frame_consumer_;
- base::WeakPtr<DualBufferFrameConsumer> frame_consumer_;
-
- // TODO(yuweih): Release references once the surface is destroyed.
- GLKView* gl_view_;
- EAGLContext* eagl_context_;
- std::unique_ptr<GlRenderer> renderer_;
- // GlDemoScreen *demo_screen_;
- id<GlDisplayHandlerDelegate> handler_delegate_;
-
- // Used on display thread.
- base::WeakPtr<Core> weak_ptr_;
- base::WeakPtrFactory<Core> weak_factory_;
-
- DISALLOW_COPY_AND_ASSIGN(Core);
-};
-
-Core::Core() : weak_factory_(this) {
- runtime_ = ChromotingClientRuntime::GetInstance();
- DCHECK(!runtime_->display_task_runner()->BelongsToCurrentThread());
-
- weak_ptr_ = weak_factory_.GetWeakPtr();
-
- runtime_->display_task_runner()->PostTask(
- FROM_HERE, base::Bind(&Core::Initialize, base::Unretained(this)));
-
- // Do not bind GlRenderer::OnFrameReceived. |renderer_| is not ready yet.
- owned_frame_consumer_.reset(new remoting::DualBufferFrameConsumer(
- base::Bind(&Core::OnFrameReceived, weak_ptr_),
- runtime_->display_task_runner(),
- protocol::FrameConsumer::PixelFormat::FORMAT_RGBA));
- frame_consumer_ = owned_frame_consumer_->GetWeakPtr();
-}
-
-Core::~Core() {
- DCHECK(runtime_->display_task_runner()->BelongsToCurrentThread());
-}
-
-void Core::Initialize() {
- DCHECK(runtime_->display_task_runner()->BelongsToCurrentThread());
-
- eagl_context_ = [EAGLContext currentContext];
- if (!eagl_context_) {
- // TODO(nicholss): For prod code, make sure to check for ES3 support and
- // fall back to ES2 if needed.
- eagl_context_ =
- [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES3];
- [EAGLContext setCurrentContext:eagl_context_];
- }
-
- renderer_ = remoting::GlRenderer::CreateGlRendererWithDesktop();
-
- // renderer_.RequestCanvasSize();
-
- // demo_screen_ = new GlDemoScreen();
- // renderer_->AddDrawable(demo_screen_->GetWeakPtr());
- renderer_->SetDelegate(weak_ptr_);
-}
-
-void Core::SetHandlerDelegate(id<GlDisplayHandlerDelegate> delegate) {
- DCHECK(runtime_->display_task_runner()->BelongsToCurrentThread());
- handler_delegate_ = delegate;
-}
-
-void Core::SetCursorShape(const protocol::CursorShapeInfo& cursor_shape) {
- DCHECK(runtime_->display_task_runner()->BelongsToCurrentThread());
- renderer_->OnCursorShapeChanged(cursor_shape);
-}
-
-bool Core::CanRenderFrame() {
- DCHECK(runtime_->display_task_runner()->BelongsToCurrentThread());
- return gl_view_ != NULL && eagl_context_ != NULL;
-}
-
-std::unique_ptr<protocol::FrameConsumer> Core::GrabFrameConsumer() {
- DCHECK(owned_frame_consumer_) << "The frame consumer is already grabbed.";
- return std::move(owned_frame_consumer_);
-}
-
-void Core::OnFrameReceived(std::unique_ptr<webrtc::DesktopFrame> frame,
- const base::Closure& done) {
- DCHECK(runtime_->display_task_runner()->BelongsToCurrentThread());
- renderer_->OnFrameReceived(std::move(frame), done);
-}
-
-void Core::OnFrameRendered() {
- [gl_view_ display];
-}
-
-void Core::OnSizeChanged(int width, int height) {
- DCHECK(runtime_->display_task_runner()->BelongsToCurrentThread());
- runtime_->ui_task_runner()->PostTask(
- FROM_HERE, base::BindBlockArc(^() {
- [handler_delegate_ canvasSizeChanged:CGSizeMake(width, height)];
- }));
-}
-
-void Core::Stop() {
- DCHECK(runtime_->display_task_runner()->BelongsToCurrentThread());
-
- eagl_context_ = nil;
- // demo_screen_ = nil;
-}
-
-void Core::SurfaceCreated(GLKView* view) {
- DCHECK(runtime_->display_task_runner()->BelongsToCurrentThread());
- gl_view_ = view;
-
- renderer_->OnSurfaceCreated(
- base::MakeUnique<GlCanvas>(static_cast<int>([eagl_context_ API])));
-
- renderer_->RequestCanvasSize();
-
- runtime_->network_task_runner()->PostTask(
- FROM_HERE, base::Bind(&DualBufferFrameConsumer::RequestFullDesktopFrame,
- frame_consumer_));
-}
-
-void Core::SurfaceChanged(int width, int height) {
- DCHECK(runtime_->display_task_runner()->BelongsToCurrentThread());
- 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_;
-}
-
-base::WeakPtr<remoting::GlDisplayHandler::Core> Core::GetWeakPtr() {
- return weak_ptr_;
-}
-
-} // namespace GlDisplayHandler
-} // namespace remoting
-
-@interface GlDisplayHandler () {
- remoting::GlDisplayHandler::Core* _core;
- remoting::ChromotingClientRuntime* _runtime;
- std::unique_ptr<remoting::QueuedTaskPoster> _uiTaskPoster;
-}
-@end
-
-@implementation GlDisplayHandler
-
-- (id)init {
- self = [super init];
- if (self) {
- _runtime = remoting::ChromotingClientRuntime::GetInstance();
- _core = new remoting::GlDisplayHandler::Core();
- _uiTaskPoster.reset(
- new remoting::QueuedTaskPoster(_runtime->display_task_runner()));
- }
- return self;
-}
-
-#pragma mark - Public
-
-- (void)stop {
- _runtime->display_task_runner()->PostTask(
- FROM_HERE,
- base::Bind(&remoting::GlDisplayHandler::Core::Stop, _core->GetWeakPtr()));
-}
-
-- (std::unique_ptr<remoting::protocol::VideoRenderer>)CreateVideoRenderer {
- return base::MakeUnique<remoting::SoftwareVideoRenderer>(
- _core->GrabFrameConsumer());
-}
-
-- (std::unique_ptr<remoting::protocol::CursorShapeStub>)CreateCursorShapeStub {
- return base::MakeUnique<remoting::CursorShapeStubProxy>(
- _core->GetWeakPtr(), _runtime->display_task_runner());
-}
-
-- (EAGLContext*)GetEAGLContext {
- return _core->GetEAGLContext();
-}
-
-- (void)onSurfaceCreated:(GLKView*)view {
- _runtime->display_task_runner()->PostTask(
- FROM_HERE, base::Bind(&remoting::GlDisplayHandler::Core::SurfaceCreated,
- _core->GetWeakPtr(), view));
-}
-
-- (void)onSurfaceChanged:(const CGRect&)frame {
- _runtime->display_task_runner()->PostTask(
- FROM_HERE,
- base::Bind(&remoting::GlDisplayHandler::Core::SurfaceChanged,
- _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 {
- _runtime->display_task_runner()->PostTask(
- FROM_HERE,
- base::Bind(&remoting::GlDisplayHandler::Core::SetHandlerDelegate,
- _core->GetWeakPtr(), delegate));
-}
-
-- (id<GlDisplayHandlerDelegate>)delegate {
- // Implementation is still required for UNAVAILABLE_ATTRIBUTE.
- NOTREACHED();
- return nil;
-}
-
-@end
« no previous file with comments | « remoting/client/ios/display/gl_display_handler.h ('k') | remoting/client/ios/domain/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698