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; |
} |