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

Unified Diff: remoting/client/jni/jni_gl_display_handler.cc

Issue 2591363002: Adding drawable to CRD andorid and iOS gl rendering pipeline. (Closed)
Patch Set: Trying to fix android. Created 3 years, 11 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
Index: remoting/client/jni/jni_gl_display_handler.cc
diff --git a/remoting/client/jni/jni_gl_display_handler.cc b/remoting/client/jni/jni_gl_display_handler.cc
index 42b2676db8c4a4453883c0ceb9d9f9d1cb1b74da..14bae5cd63b8060344a3626c13090c9a6c86e45a 100644
--- a/remoting/client/jni/jni_gl_display_handler.cc
+++ b/remoting/client/jni/jni_gl_display_handler.cc
@@ -13,6 +13,7 @@
#include "base/memory/ptr_util.h"
#include "jni/GlDisplay_jni.h"
#include "remoting/client/cursor_shape_stub_proxy.h"
+#include "remoting/client/display/gl_canvas.h"
#include "remoting/client/dual_buffer_frame_consumer.h"
#include "remoting/client/jni/chromoting_jni_runtime.h"
#include "remoting/client/jni/egl_thread_context.h"
@@ -62,7 +63,7 @@ class JniGlDisplayHandler::Core : public protocol::CursorShapeStub,
ANativeWindow* window_ = nullptr;
std::unique_ptr<EglThreadContext> egl_context_;
- GlRenderer renderer_;
+ std::unique_ptr<GlRenderer> renderer_;
// Used on display thread.
base::WeakPtr<Core> weak_ptr_;
@@ -74,12 +75,13 @@ class JniGlDisplayHandler::Core : public protocol::CursorShapeStub,
JniGlDisplayHandler::Core::Core(ChromotingJniRuntime* runtime,
base::WeakPtr<JniGlDisplayHandler> shell)
: runtime_(runtime), shell_(shell), weak_factory_(this) {
+ renderer_ = std::move(GlRenderer::CreateGlRendererWithDesktop());
weak_ptr_ = weak_factory_.GetWeakPtr();
- renderer_.SetDelegate(weak_ptr_);
+ renderer_->SetDelegate(weak_ptr_);
owned_frame_consumer_.reset(new DualBufferFrameConsumer(
- base::Bind(&GlRenderer::OnFrameReceived, renderer_.GetWeakPtr()),
- runtime_->display_task_runner(),
- protocol::FrameConsumer::PixelFormat::FORMAT_RGBA));
+ base::Bind(&GlRenderer::OnFrameReceived, renderer_->GetWeakPtr()),
+ runtime_->display_task_runner(),
+ protocol::FrameConsumer::PixelFormat::FORMAT_RGBA));
frame_consumer_ = owned_frame_consumer_->GetWeakPtr();
}
@@ -107,7 +109,7 @@ void JniGlDisplayHandler::Core::OnSizeChanged(int width, int height) {
void JniGlDisplayHandler::Core::SetCursorShape(
const protocol::CursorShapeInfo& cursor_shape) {
DCHECK(runtime_->display_task_runner()->BelongsToCurrentThread());
- renderer_.OnCursorShapeChanged(cursor_shape);
+ renderer_->OnCursorShapeChanged(cursor_shape);
}
std::unique_ptr<protocol::FrameConsumer>
@@ -121,12 +123,15 @@ void JniGlDisplayHandler::Core::SurfaceCreated(
DCHECK(runtime_->display_task_runner()->BelongsToCurrentThread());
DCHECK(!egl_context_);
DCHECK(!window_);
- renderer_.RequestCanvasSize();
+ renderer_->RequestCanvasSize();
window_ = ANativeWindow_fromSurface(base::android::AttachCurrentThread(),
surface.obj());
egl_context_.reset(new EglThreadContext());
egl_context_->BindToWindow(window_);
- renderer_.OnSurfaceCreated(static_cast<int>(egl_context_->client_version()));
+
+ renderer_->OnSurfaceCreated(std::make_unique<GlCanvas>(
Yuwei 2017/01/09 23:11:52 Use base::MakeUnique<Type>(arguments...) and no ne
+ new GlCanvas(static_cast<int>(egl_context_->client_version()))));
+
runtime_->network_task_runner()->PostTask(
FROM_HERE, base::Bind(&DualBufferFrameConsumer::RequestFullDesktopFrame,
frame_consumer_));
@@ -134,14 +139,14 @@ void JniGlDisplayHandler::Core::SurfaceCreated(
void JniGlDisplayHandler::Core::SurfaceChanged(int width, int height) {
DCHECK(runtime_->display_task_runner()->BelongsToCurrentThread());
- renderer_.OnSurfaceChanged(width, height);
+ renderer_->OnSurfaceChanged(width, height);
}
void JniGlDisplayHandler::Core::SurfaceDestroyed() {
DCHECK(runtime_->display_task_runner()->BelongsToCurrentThread());
DCHECK(egl_context_);
DCHECK(window_);
- renderer_.OnSurfaceDestroyed();
+ renderer_->OnSurfaceDestroyed();
egl_context_.reset();
ANativeWindow_release(window_);
window_ = nullptr;
@@ -150,24 +155,24 @@ void JniGlDisplayHandler::Core::SurfaceDestroyed() {
void JniGlDisplayHandler::Core::SetTransformation(
const std::array<float, 9>& matrix) {
DCHECK(runtime_->display_task_runner()->BelongsToCurrentThread());
- renderer_.OnPixelTransformationChanged(matrix);
+ renderer_->OnPixelTransformationChanged(matrix);
}
void JniGlDisplayHandler::Core::MoveCursor(float x, float y) {
DCHECK(runtime_->display_task_runner()->BelongsToCurrentThread());
- renderer_.OnCursorMoved(x, y);
+ renderer_->OnCursorMoved(x, y);
}
void JniGlDisplayHandler::Core::SetCursorVisibility(bool visible) {
DCHECK(runtime_->display_task_runner()->BelongsToCurrentThread());
- renderer_.OnCursorVisibilityChanged(visible);
+ renderer_->OnCursorVisibilityChanged(visible);
}
void JniGlDisplayHandler::Core::StartInputFeedback(float x,
float y,
float diameter) {
DCHECK(runtime_->display_task_runner()->BelongsToCurrentThread());
- renderer_.OnCursorInputFeedback(x, y, diameter);
+ renderer_->OnCursorInputFeedback(x, y, diameter);
}
base::WeakPtr<JniGlDisplayHandler::Core>

Powered by Google App Engine
This is Rietveld 408576698