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

Issue 2338473002: [Remoting Android] JniGlDisplayHandler calls invalidate() on UI thread (Closed)

Created:
4 years, 3 months ago by Yuwei
Modified:
4 years, 3 months ago
CC:
chromium-reviews, chromoting-reviews_chromium.org
Target Ref:
refs/pending/heads/master
Project:
chromium
Visibility:
Public.

Description

[Remoting Android] JniGlDisplayHandler calls invalidate() on UI thread Currently the native pointer in GlDisplay is used on UI thread and null'ed on display thread, and we check whether the pointer is null before using it. If invalidate() is called between the check and actually calling the native function then the app may crash. This CL fixes this by making JniGlDisplayHandler call invalidate() on UI thread. BUG=646116 Committed: https://crrev.com/800d69331486e09464761a89d431027dd4d0acff Cr-Commit-Position: refs/heads/master@{#419841}

Patch Set 1 #

Total comments: 1

Patch Set 2 : s/Native callbacks/Callbacks by native counterpart/ #

Total comments: 2

Patch Set 3 : null-check ui_task_poster_ before using it #

Total comments: 7

Patch Set 4 : Reviewer's Feedback #

Total comments: 10

Patch Set 5 : Reviewer's Feedback #

Patch Set 6 : Merge ToT #

Patch Set 7 : add null-check in deleter #

Total comments: 11

Patch Set 8 : Invalidate->Dtor pattern #

Patch Set 9 : Remove DisplayUpdaterFactory #

Total comments: 6

Patch Set 10 : Reviewer's Feedback #

Unified diffs Side-by-side diffs Delta from patch set Stats (+66 lines, -84 lines) Patch
M remoting/android/java/src/org/chromium/chromoting/jni/GlDisplay.java View 1 2 3 4 5 6 7 8 9 3 chunks +3 lines, -5 lines 0 comments Download
M remoting/client/jni/chromoting_jni_instance.cc View 1 2 3 4 5 6 7 8 1 chunk +0 lines, -1 line 0 comments Download
M remoting/client/jni/display_updater_factory.h View 1 2 3 4 5 6 7 8 1 chunk +0 lines, -39 lines 0 comments Download
M remoting/client/jni/jni_client.h View 1 2 3 4 5 6 7 3 chunks +3 lines, -4 lines 0 comments Download
M remoting/client/jni/jni_client.cc View 1 2 3 4 5 6 7 5 chunks +7 lines, -10 lines 0 comments Download
M remoting/client/jni/jni_gl_display_handler.h View 1 2 3 4 5 6 7 8 9 3 chunks +23 lines, -11 lines 0 comments Download
M remoting/client/jni/jni_gl_display_handler.cc View 1 2 3 4 5 6 7 8 9 5 chunks +30 lines, -14 lines 0 comments Download

Messages

Total messages: 26 (7 generated)
Yuwei
PTAL. Thanks! https://codereview.chromium.org/2338473002/diff/1/remoting/client/jni/display_updater_factory.h File remoting/client/jni/display_updater_factory.h (right): https://codereview.chromium.org/2338473002/diff/1/remoting/client/jni/display_updater_factory.h#newcode24 remoting/client/jni/display_updater_factory.h:24: virtual ~DisplayUpdaterFactory() {} Tried to make this ...
4 years, 3 months ago (2016-09-12 20:49:06 UTC) #2
Yuwei
https://codereview.chromium.org/2338473002/diff/20001/remoting/client/jni/jni_gl_display_handler.cc File remoting/client/jni/jni_gl_display_handler.cc (right): https://codereview.chromium.org/2338473002/diff/20001/remoting/client/jni/jni_gl_display_handler.cc#newcode68 remoting/client/jni/jni_gl_display_handler.cc:68: ui_task_poster_.reset(); Releasing |ui_task_poster_| here may not be very safe ...
4 years, 3 months ago (2016-09-12 21:34:44 UTC) #3
Hzj_jie
https://codereview.chromium.org/2338473002/diff/40001/remoting/client/jni/display_updater_factory.h File remoting/client/jni/display_updater_factory.h (right): https://codereview.chromium.org/2338473002/diff/40001/remoting/client/jni/display_updater_factory.h#newcode24 remoting/client/jni/display_updater_factory.h:24: virtual ~DisplayUpdaterFactory() {} protected? https://codereview.chromium.org/2338473002/diff/40001/remoting/client/jni/display_updater_factory.h#newcode29 remoting/client/jni/display_updater_factory.h:29: virtual void Destroy() ...
4 years, 3 months ago (2016-09-13 17:56:29 UTC) #5
Yuwei
https://codereview.chromium.org/2338473002/diff/40001/remoting/client/jni/display_updater_factory.h File remoting/client/jni/display_updater_factory.h (right): https://codereview.chromium.org/2338473002/diff/40001/remoting/client/jni/display_updater_factory.h#newcode24 remoting/client/jni/display_updater_factory.h:24: virtual ~DisplayUpdaterFactory() {} On 2016/09/13 17:56:29, Hzj_jie wrote: > ...
4 years, 3 months ago (2016-09-13 18:25:18 UTC) #6
Yuwei
ptal https://codereview.chromium.org/2338473002/diff/20001/remoting/client/jni/jni_gl_display_handler.cc File remoting/client/jni/jni_gl_display_handler.cc (right): https://codereview.chromium.org/2338473002/diff/20001/remoting/client/jni/jni_gl_display_handler.cc#newcode68 remoting/client/jni/jni_gl_display_handler.cc:68: ui_task_poster_.reset(); On 2016/09/12 21:34:44, Yuwei wrote: > Releasing ...
4 years, 3 months ago (2016-09-13 19:06:18 UTC) #7
Hzj_jie
lgtm https://codereview.chromium.org/2338473002/diff/60001/remoting/android/java/src/org/chromium/chromoting/jni/GlDisplay.java File remoting/android/java/src/org/chromium/chromoting/jni/GlDisplay.java (right): https://codereview.chromium.org/2338473002/diff/60001/remoting/android/java/src/org/chromium/chromoting/jni/GlDisplay.java#newcode33 remoting/android/java/src/org/chromium/chromoting/jni/GlDisplay.java:33: private long mNativeJniGlDisplay; Now you can move this ...
4 years, 3 months ago (2016-09-13 19:32:12 UTC) #9
Yuwei
Thanks! PTAL https://codereview.chromium.org/2338473002/diff/60001/remoting/android/java/src/org/chromium/chromoting/jni/GlDisplay.java File remoting/android/java/src/org/chromium/chromoting/jni/GlDisplay.java (right): https://codereview.chromium.org/2338473002/diff/60001/remoting/android/java/src/org/chromium/chromoting/jni/GlDisplay.java#newcode33 remoting/android/java/src/org/chromium/chromoting/jni/GlDisplay.java:33: private long mNativeJniGlDisplay; On 2016/09/13 19:32:12, Hzj_jie ...
4 years, 3 months ago (2016-09-13 20:49:41 UTC) #11
Yuwei
ping!
4 years, 3 months ago (2016-09-15 23:23:27 UTC) #12
Lambros
lgtm https://codereview.chromium.org/2338473002/diff/120001/remoting/client/jni/display_updater_factory.h File remoting/client/jni/display_updater_factory.h (right): https://codereview.chromium.org/2338473002/diff/120001/remoting/client/jni/display_updater_factory.h#newcode24 remoting/client/jni/display_updater_factory.h:24: // A deleter that calls Destroy() to delete ...
4 years, 3 months ago (2016-09-16 01:44:12 UTC) #13
Yuwei
https://codereview.chromium.org/2338473002/diff/120001/remoting/client/jni/display_updater_factory.h File remoting/client/jni/display_updater_factory.h (right): https://codereview.chromium.org/2338473002/diff/120001/remoting/client/jni/display_updater_factory.h#newcode24 remoting/client/jni/display_updater_factory.h:24: // A deleter that calls Destroy() to delete the ...
4 years, 3 months ago (2016-09-16 21:49:45 UTC) #14
Sergey Ulanov
https://codereview.chromium.org/2338473002/diff/120001/remoting/client/jni/display_updater_factory.h File remoting/client/jni/display_updater_factory.h (right): https://codereview.chromium.org/2338473002/diff/120001/remoting/client/jni/display_updater_factory.h#newcode22 remoting/client/jni/display_updater_factory.h:22: class DisplayUpdaterFactory { Do we need to keep this ...
4 years, 3 months ago (2016-09-19 21:14:56 UTC) #15
Yuwei
https://codereview.chromium.org/2338473002/diff/120001/remoting/client/jni/jni_client.h File remoting/client/jni/jni_client.h (right): https://codereview.chromium.org/2338473002/diff/120001/remoting/client/jni/jni_client.h#newcode160 remoting/client/jni/jni_client.h:160: std::unique_ptr<DisplayUpdaterFactory, DisplayUpdaterFactory::Deleter> On 2016/09/19 21:14:56, Sergey Ulanov wrote: > ...
4 years, 3 months ago (2016-09-19 22:30:37 UTC) #16
Yuwei
https://codereview.chromium.org/2338473002/diff/120001/remoting/client/jni/jni_client.h File remoting/client/jni/jni_client.h (right): https://codereview.chromium.org/2338473002/diff/120001/remoting/client/jni/jni_client.h#newcode160 remoting/client/jni/jni_client.h:160: std::unique_ptr<DisplayUpdaterFactory, DisplayUpdaterFactory::Deleter> On 2016/09/19 22:30:37, Yuwei wrote: > On ...
4 years, 3 months ago (2016-09-19 22:38:32 UTC) #17
Yuwei
PTAL. Thanks! Changes: * Removed the DisplayUpdaterFactory interface * Defined the lifetime as ctor->initialize->invalidate->dtor similar ...
4 years, 3 months ago (2016-09-19 23:52:11 UTC) #18
Sergey Ulanov
LGTM. I think it would be best to split JniGlDisplayHandler into two classes: one for ...
4 years, 3 months ago (2016-09-20 18:09:34 UTC) #19
Yuwei
Thanks! > I think it would be best to split JniGlDisplayHandler into two classes: one ...
4 years, 3 months ago (2016-09-20 19:20:38 UTC) #20
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.org/2338473002/180001
4 years, 3 months ago (2016-09-20 19:22:01 UTC) #23
commit-bot: I haz the power
Committed patchset #10 (id:180001)
4 years, 3 months ago (2016-09-20 19:33:50 UTC) #24
commit-bot: I haz the power
4 years, 3 months ago (2016-09-20 19:37:56 UTC) #26
Message was sent while issue was closed.
Patchset 10 (id:??) landed as
https://crrev.com/800d69331486e09464761a89d431027dd4d0acff
Cr-Commit-Position: refs/heads/master@{#419841}

Powered by Google App Engine
This is Rietveld 408576698