Chromium Code Reviews| Index: webrtc/media/engine/fakewebrtcvideoengine.h |
| diff --git a/webrtc/media/engine/fakewebrtcvideoengine.h b/webrtc/media/engine/fakewebrtcvideoengine.h |
| index 497d70133ad20881081063be7ab5f6f192d18197..2dce2c503fcf67e284ef0d3d84027a6dc7ffd74a 100644 |
| --- a/webrtc/media/engine/fakewebrtcvideoengine.h |
| +++ b/webrtc/media/engine/fakewebrtcvideoengine.h |
| @@ -196,10 +196,13 @@ class FakeWebRtcVideoEncoderFactory : public WebRtcVideoEncoderFactory { |
| } |
| bool WaitForCreatedVideoEncoders(int num_encoders) { |
| - while (created_video_encoder_event_.Wait(kEventTimeoutMs)) { |
| + int64_t start_offset_ms = rtc::TimeMillis(); |
| + int64_t wait_time = kEventTimeoutMs; |
| + do { |
| if (GetNumCreatedEncoders() >= num_encoders) |
| return true; |
| - } |
| + wait_time = kEventTimeoutMs - (rtc::TimeMillis() - start_offset_ms); |
| + } while (wait_time > 0 && created_video_encoder_event_.Wait(wait_time)); |
|
Taylor Brandstetter
2017/02/23 00:46:49
Why are start_offset_ms/wait_time needed?
sprang_webrtc
2017/02/23 15:10:14
It was racy, so if |num_encoders| reached X before
Taylor Brandstetter
2017/02/24 00:13:55
Ah, I see. I think just changing it to a "do while
|
| return false; |
| } |