|
|
Created:
6 years, 4 months ago by dshwang Modified:
6 years, 4 months ago CC:
chromium-reviews, posciak+watch_chromium.org, avayvod+watch_chromium.org, jam, mcasas+watch_chromium.org, feature-media-reviews_chromium.org, darin-cc_chromium.org, wjia+watch_chromium.org Base URL:
https://chromium.googlesource.com/chromium/src.git@master Project:
chromium Visibility:
Public. |
Descriptionmedia: Fix not-thread-safe access to variables in android media code.
There are 3 big changes;
1. Initialize and bind StreamTextureProxy to the impl thread when the main
thread is blocked.
2. Set stream texture size when the video size is changed, instead of adhoc in
rendering code.
3. Add lots of thread checks.
BUG=N/A
Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=289315
Patch Set 1 #
Total comments: 3
Patch Set 2 : Set the differed size when establishing surface #
Total comments: 1
Patch Set 3 : fix errata on comment #Messages
Total messages: 19 (0 generated)
qinmin@, sievers@, could you review? IMO this CL can fix not-reproducible crash bug in android.
https://codereview.chromium.org/448063003/diff/1/content/renderer/media/andro... File content/renderer/media/android/webmediaplayer_android.cc (right): https://codereview.chromium.org/448063003/diff/1/content/renderer/media/andro... content/renderer/media/android/webmediaplayer_android.cc:1145: stream_texture_proxy_->BindToCurrentThread(stream_id_); I don't think this is correct, the stream_texture_proxy is created on main thread, but lives on the compositor thread
https://codereview.chromium.org/448063003/diff/1/content/renderer/media/andro... File content/renderer/media/android/webmediaplayer_android.cc (right): https://codereview.chromium.org/448063003/diff/1/content/renderer/media/andro... content/renderer/media/android/webmediaplayer_android.cc:1145: stream_texture_proxy_->BindToCurrentThread(stream_id_); On 2014/08/08 22:02:58, qinmin wrote: > I don't think this is correct, the stream_texture_proxy is created on main > thread, but lives on the compositor thread As above comments, I bind the proxy to the compositor thread because only compositor thread calls this method with client argument.
lgtm https://codereview.chromium.org/448063003/diff/1/content/renderer/media/andro... File content/renderer/media/android/webmediaplayer_android.cc (right): https://codereview.chromium.org/448063003/diff/1/content/renderer/media/andro... content/renderer/media/android/webmediaplayer_android.cc:1145: stream_texture_proxy_->BindToCurrentThread(stream_id_); i see, i missed the non-null check on client. On 2014/08/09 06:01:26, dshwang wrote: > On 2014/08/08 22:02:58, qinmin wrote: > > I don't think this is correct, the stream_texture_proxy is created on main > > thread, but lives on the compositor thread > > As above comments, I bind the proxy to the compositor thread because only > compositor thread calls this method with client argument.
On 2014/08/10 18:33:51, qinmin wrote: > lgtm > > https://codereview.chromium.org/448063003/diff/1/content/renderer/media/andro... > File content/renderer/media/android/webmediaplayer_android.cc (right): > > https://codereview.chromium.org/448063003/diff/1/content/renderer/media/andro... > content/renderer/media/android/webmediaplayer_android.cc:1145: > stream_texture_proxy_->BindToCurrentThread(stream_id_); > i see, i missed the non-null check on client. > > On 2014/08/09 06:01:26, dshwang wrote: > > On 2014/08/08 22:02:58, qinmin wrote: > > > I don't think this is correct, the stream_texture_proxy is created on main > > > thread, but lives on the compositor thread > > > > As above comments, I bind the proxy to the compositor thread because only > > compositor thread calls this method with client argument. Thank you for review!
The CQ bit was checked by dongseong.hwang@intel.com
CQ is trying da patch. Follow status at https://chromium-status.appspot.com/cq/dongseong.hwang@intel.com/448063003/1
FYI, CQ is re-trying this CL (attempt #1). The failing builders are: linux_gpu on tryserver.chromium.gpu (http://build.chromium.org/p/tryserver.chromium.gpu/builders/linux_gpu/builds/...) mac_gpu on tryserver.chromium.gpu (http://build.chromium.org/p/tryserver.chromium.gpu/builders/mac_gpu/builds/39863) win_gpu on tryserver.chromium.gpu (http://build.chromium.org/p/tryserver.chromium.gpu/builders/win_gpu/builds/45108) android_chromium_gn_compile_rel on tryserver.chromium.linux (http://build.chromium.org/p/tryserver.chromium.linux/builders/android_chromiu...) chromium_presubmit on tryserver.chromium.linux (http://build.chromium.org/p/tryserver.chromium.linux/builders/chromium_presub...) linux_chromium_chromeos_rel_swarming on tryserver.chromium.linux (http://build.chromium.org/p/tryserver.chromium.linux/builders/linux_chromium_...) linux_chromium_gn_rel on tryserver.chromium.linux (http://build.chromium.org/p/tryserver.chromium.linux/builders/linux_chromium_...) linux_chromium_rel_swarming on tryserver.chromium.linux (http://build.chromium.org/p/tryserver.chromium.linux/builders/linux_chromium_...) ios_dbg_simulator on tryserver.chromium.mac (http://build.chromium.org/p/tryserver.chromium.mac/builders/ios_dbg_simulator...) ios_rel_device on tryserver.chromium.mac (http://build.chromium.org/p/tryserver.chromium.mac/builders/ios_rel_device/bu...) ios_rel_device_ninja on tryserver.chromium.mac (http://build.chromium.org/p/tryserver.chromium.mac/builders/ios_rel_device_ni...) mac_chromium_compile_dbg on tryserver.chromium.mac (http://build.chromium.org/p/tryserver.chromium.mac/builders/mac_chromium_comp...) mac_chromium_rel_swarming on tryserver.chromium.mac (http://build.chromium.org/p/tryserver.chromium.mac/builders/mac_chromium_rel_...) win8_chromium_rel on tryserver.chromium.win (http://build.chromium.org/p/tryserver.chromium.win/builders/win8_chromium_rel...) win_chromium_compile_dbg on tryserver.chromium.win (http://build.chromium.org/p/tryserver.chromium.win/builders/win_chromium_comp...) win_chromium_rel on tryserver.chromium.win (http://build.chromium.org/p/tryserver.chromium.win/builders/win_chromium_rel/...) win_chromium_x64_rel on tryserver.chromium.win (http://build.chromium.org/p/tryserver.chromium.win/builders/win_chromium_x64_...)
The CQ bit was unchecked by commit-bot@chromium.org
Try jobs failed on following builders: mac_gpu on tryserver.chromium.gpu (http://build.chromium.org/p/tryserver.chromium.gpu/builders/mac_gpu/builds/39868) ios_dbg_simulator on tryserver.chromium.mac (http://build.chromium.org/p/tryserver.chromium.mac/builders/ios_dbg_simulator...) ios_rel_device on tryserver.chromium.mac (http://build.chromium.org/p/tryserver.chromium.mac/builders/ios_rel_device/bu...) ios_rel_device_ninja on tryserver.chromium.mac (http://build.chromium.org/p/tryserver.chromium.mac/builders/ios_rel_device_ni...) mac_chromium_compile_dbg on tryserver.chromium.mac (http://build.chromium.org/p/tryserver.chromium.mac/builders/mac_chromium_comp...) mac_chromium_rel_swarming on tryserver.chromium.mac (http://build.chromium.org/p/tryserver.chromium.mac/builders/mac_chromium_rel_...)
https://codereview.chromium.org/448063003/diff/20001/content/renderer/media/a... File content/renderer/media/android/webmediaplayer_android.cc (right): https://codereview.chromium.org/448063003/diff/20001/content/renderer/media/a... content/renderer/media/android/webmediaplayer_android.cc:813: if (!is_remote_ && cached_stream_texture_size_ != natural_size_) { qinmin@, could you review this part again? Previous patch has issue; if video size is change in remote mode, WebMediaPlayerAndroid never report the size to stream texture although the mode is changed to not-remote mode. So I change to set the size in EstablishSurfaceTexturePeer() if needed. WDYT?
The CQ bit was checked by dongseong.hwang@intel.com
CQ is trying da patch. Follow status at https://chromium-status.appspot.com/cq/dongseong.hwang@intel.com/448063003/60001
FYI, CQ is re-trying this CL (attempt #1). The failing builders are: linux_chromium_gn_rel on tryserver.chromium.linux (http://build.chromium.org/p/tryserver.chromium.linux/builders/linux_chromium_...) win_chromium_compile_dbg on tryserver.chromium.win (http://build.chromium.org/p/tryserver.chromium.win/builders/win_chromium_comp...)
The CQ bit was unchecked by commit-bot@chromium.org
Try jobs failed on following builders: linux_chromium_gn_rel on tryserver.chromium.linux (http://build.chromium.org/p/tryserver.chromium.linux/builders/linux_chromium_...)
The CQ bit was checked by dongseong.hwang@intel.com
CQ is trying da patch. Follow status at https://chromium-status.appspot.com/cq/dongseong.hwang@intel.com/448063003/60001
Message was sent while issue was closed.
Committed patchset #3 (60001) as 289315 |