| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "remoting/client/jni/jni_gl_display_handler.h" | 5 #include "remoting/client/jni/jni_gl_display_handler.h" |
| 6 | 6 |
| 7 #include <android/native_window_jni.h> | 7 #include <android/native_window_jni.h> |
| 8 #include <array> | 8 #include <array> |
| 9 | 9 |
| 10 #include "base/android/jni_android.h" | 10 #include "base/android/jni_android.h" |
| (...skipping 16 matching lines...) Expand all Loading... |
| 27 weak_ptr_ = weak_factory_.GetWeakPtr(); | 27 weak_ptr_ = weak_factory_.GetWeakPtr(); |
| 28 java_display_.Reset(Java_GlDisplay_createJavaDisplayObject( | 28 java_display_.Reset(Java_GlDisplay_createJavaDisplayObject( |
| 29 base::android::AttachCurrentThread(), reinterpret_cast<intptr_t>(this))); | 29 base::android::AttachCurrentThread(), reinterpret_cast<intptr_t>(this))); |
| 30 renderer_.SetDelegate(weak_ptr_); | 30 renderer_.SetDelegate(weak_ptr_); |
| 31 ui_task_poster_.reset(new QueuedTaskPoster(runtime->display_task_runner())); | 31 ui_task_poster_.reset(new QueuedTaskPoster(runtime->display_task_runner())); |
| 32 } | 32 } |
| 33 | 33 |
| 34 JniGlDisplayHandler::~JniGlDisplayHandler() { | 34 JniGlDisplayHandler::~JniGlDisplayHandler() { |
| 35 DCHECK(runtime_->display_task_runner()->BelongsToCurrentThread()); | 35 DCHECK(runtime_->display_task_runner()->BelongsToCurrentThread()); |
| 36 Java_GlDisplay_invalidate(base::android::AttachCurrentThread(), | 36 Java_GlDisplay_invalidate(base::android::AttachCurrentThread(), |
| 37 java_display_.obj()); | 37 java_display_); |
| 38 runtime_->ui_task_runner()->DeleteSoon(FROM_HERE, ui_task_poster_.release()); | 38 runtime_->ui_task_runner()->DeleteSoon(FROM_HERE, ui_task_poster_.release()); |
| 39 } | 39 } |
| 40 | 40 |
| 41 void JniGlDisplayHandler::InitializeClient( | 41 void JniGlDisplayHandler::InitializeClient( |
| 42 const base::android::JavaRef<jobject>& java_client) { | 42 const base::android::JavaRef<jobject>& java_client) { |
| 43 return Java_GlDisplay_initializeClient(base::android::AttachCurrentThread(), | 43 return Java_GlDisplay_initializeClient(base::android::AttachCurrentThread(), |
| 44 java_display_.obj(), | 44 java_display_, java_client); |
| 45 java_client.obj()); | |
| 46 } | 45 } |
| 47 | 46 |
| 48 std::unique_ptr<protocol::CursorShapeStub> | 47 std::unique_ptr<protocol::CursorShapeStub> |
| 49 JniGlDisplayHandler::CreateCursorShapeStub() { | 48 JniGlDisplayHandler::CreateCursorShapeStub() { |
| 50 return base::WrapUnique( | 49 return base::WrapUnique( |
| 51 new CursorShapeStubProxy(weak_ptr_, runtime_->display_task_runner())); | 50 new CursorShapeStubProxy(weak_ptr_, runtime_->display_task_runner())); |
| 52 } | 51 } |
| 53 | 52 |
| 54 std::unique_ptr<protocol::VideoRenderer> | 53 std::unique_ptr<protocol::VideoRenderer> |
| 55 JniGlDisplayHandler::CreateVideoRenderer() { | 54 JniGlDisplayHandler::CreateVideoRenderer() { |
| (...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 166 void JniGlDisplayHandler::SetCursorShape( | 165 void JniGlDisplayHandler::SetCursorShape( |
| 167 const protocol::CursorShapeInfo& cursor_shape) { | 166 const protocol::CursorShapeInfo& cursor_shape) { |
| 168 DCHECK(runtime_->display_task_runner()->BelongsToCurrentThread()); | 167 DCHECK(runtime_->display_task_runner()->BelongsToCurrentThread()); |
| 169 renderer_.OnCursorShapeChanged(cursor_shape); | 168 renderer_.OnCursorShapeChanged(cursor_shape); |
| 170 } | 169 } |
| 171 | 170 |
| 172 // static | 171 // static |
| 173 void JniGlDisplayHandler::NotifyRenderDoneOnUiThread( | 172 void JniGlDisplayHandler::NotifyRenderDoneOnUiThread( |
| 174 base::android::ScopedJavaGlobalRef<jobject> java_display) { | 173 base::android::ScopedJavaGlobalRef<jobject> java_display) { |
| 175 Java_GlDisplay_canvasRendered(base::android::AttachCurrentThread(), | 174 Java_GlDisplay_canvasRendered(base::android::AttachCurrentThread(), |
| 176 java_display.obj()); | 175 java_display); |
| 177 } | 176 } |
| 178 | 177 |
| 179 void JniGlDisplayHandler::SurfaceCreatedOnDisplayThread( | 178 void JniGlDisplayHandler::SurfaceCreatedOnDisplayThread( |
| 180 base::android::ScopedJavaGlobalRef<jobject> surface) { | 179 base::android::ScopedJavaGlobalRef<jobject> surface) { |
| 181 DCHECK(runtime_->display_task_runner()->BelongsToCurrentThread()); | 180 DCHECK(runtime_->display_task_runner()->BelongsToCurrentThread()); |
| 182 renderer_.RequestCanvasSize(); | 181 renderer_.RequestCanvasSize(); |
| 183 ANativeWindow* window = ANativeWindow_fromSurface( | 182 ANativeWindow* window = ANativeWindow_fromSurface( |
| 184 base::android::AttachCurrentThread(), surface.obj()); | 183 base::android::AttachCurrentThread(), surface.obj()); |
| 185 egl_context_.reset(new EglThreadContext()); | 184 egl_context_.reset(new EglThreadContext()); |
| 186 egl_context_->BindToWindow(window); | 185 egl_context_->BindToWindow(window); |
| 187 ANativeWindow_release(window); | 186 ANativeWindow_release(window); |
| 188 renderer_.OnSurfaceCreated(static_cast<int>(egl_context_->client_version())); | 187 renderer_.OnSurfaceCreated(static_cast<int>(egl_context_->client_version())); |
| 189 runtime_->network_task_runner()->PostTask( | 188 runtime_->network_task_runner()->PostTask( |
| 190 FROM_HERE, base::Bind(&DualBufferFrameConsumer::RequestFullDesktopFrame, | 189 FROM_HERE, base::Bind(&DualBufferFrameConsumer::RequestFullDesktopFrame, |
| 191 frame_consumer_)); | 190 frame_consumer_)); |
| 192 } | 191 } |
| 193 | 192 |
| 194 void JniGlDisplayHandler::SurfaceDestroyedOnDisplayThread() { | 193 void JniGlDisplayHandler::SurfaceDestroyedOnDisplayThread() { |
| 195 DCHECK(runtime_->display_task_runner()->BelongsToCurrentThread()); | 194 DCHECK(runtime_->display_task_runner()->BelongsToCurrentThread()); |
| 196 renderer_.OnSurfaceDestroyed(); | 195 renderer_.OnSurfaceDestroyed(); |
| 197 egl_context_.reset(); | 196 egl_context_.reset(); |
| 198 } | 197 } |
| 199 | 198 |
| 200 // static | 199 // static |
| 201 void JniGlDisplayHandler::ChangeCanvasSizeOnUiThread( | 200 void JniGlDisplayHandler::ChangeCanvasSizeOnUiThread( |
| 202 base::android::ScopedJavaGlobalRef<jobject> java_display, | 201 base::android::ScopedJavaGlobalRef<jobject> java_display, |
| 203 int width, | 202 int width, |
| 204 int height) { | 203 int height) { |
| 205 JNIEnv* env = base::android::AttachCurrentThread(); | 204 JNIEnv* env = base::android::AttachCurrentThread(); |
| 206 Java_GlDisplay_changeCanvasSize(env, java_display.obj(), width, height); | 205 Java_GlDisplay_changeCanvasSize(env, java_display, width, height); |
| 207 } | 206 } |
| 208 | 207 |
| 209 } // namespace remoting | 208 } // namespace remoting |
| OLD | NEW |