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

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

Issue 2874143002: [CRD iOS] Some fixes for rendering (Closed)
Patch Set: Just use presentRenderbuffer to swap buffers 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/app/host_view_controller.mm ('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 c83d8b521be57a57a5306eb64da0645f32daaab5..45fda3159f725adec0fe4f215bdc94877be66863 100644
--- a/remoting/ios/display/gl_display_handler.mm
+++ b/remoting/ios/display/gl_display_handler.mm
@@ -66,7 +66,6 @@ class Core : public protocol::CursorShapeStub, public GlRendererDelegate {
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_;
@@ -133,7 +132,8 @@ void Core::SetCursorShape(const protocol::CursorShapeInfo& cursor_shape) {
bool Core::CanRenderFrame() {
DCHECK(runtime_->display_task_runner()->BelongsToCurrentThread());
- return gl_view_ != NULL && eagl_context_ != NULL;
+
+ return eagl_context_ != nil;
}
std::unique_ptr<protocol::FrameConsumer> Core::GrabFrameConsumer() {
@@ -148,7 +148,7 @@ void Core::OnFrameReceived(std::unique_ptr<webrtc::DesktopFrame> frame,
}
void Core::OnFrameRendered() {
- [gl_view_ display];
+ [eagl_context_ presentRenderbuffer:GL_RENDERBUFFER];
}
void Core::OnSizeChanged(int width, int height) {
@@ -168,7 +168,9 @@ void Core::Stop() {
void Core::SurfaceCreated(GLKView* view) {
DCHECK(runtime_->display_task_runner()->BelongsToCurrentThread());
- gl_view_ = view;
+
+ // Bind the view's framebuffer object to OpenGL.
+ [view bindDrawable];
renderer_->OnSurfaceCreated(
base::MakeUnique<GlCanvas>(static_cast<int>([eagl_context_ API])));
@@ -202,7 +204,7 @@ base::WeakPtr<remoting::GlDisplayHandler::Core> Core::GetWeakPtr() {
} // namespace remoting
@interface GlDisplayHandler () {
- remoting::GlDisplayHandler::Core* _core;
+ std::unique_ptr<remoting::GlDisplayHandler::Core> _core;
remoting::ChromotingClientRuntime* _runtime;
std::unique_ptr<remoting::QueuedTaskPoster> _uiTaskPoster;
}
@@ -214,13 +216,17 @@ base::WeakPtr<remoting::GlDisplayHandler::Core> Core::GetWeakPtr() {
self = [super init];
if (self) {
_runtime = remoting::ChromotingClientRuntime::GetInstance();
- _core = new remoting::GlDisplayHandler::Core();
+ _core.reset(new remoting::GlDisplayHandler::Core());
_uiTaskPoster.reset(
new remoting::QueuedTaskPoster(_runtime->display_task_runner()));
}
return self;
}
+- (void)dealloc {
+ _runtime->display_task_runner()->DeleteSoon(FROM_HERE, _core.release());
+}
+
#pragma mark - Public
- (void)stop {
« no previous file with comments | « remoting/ios/app/host_view_controller.mm ('k') | remoting/ios/session/remoting_client.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698