Index: media/capture/content/thread_safe_capture_oracle.cc |
diff --git a/media/capture/content/thread_safe_capture_oracle.cc b/media/capture/content/thread_safe_capture_oracle.cc |
index 7e368f597451e0e190f53ec139a79d4a41ba58f7..909b5b11bd4365a5e277f423a04b67ac6a9d8130 100644 |
--- a/media/capture/content/thread_safe_capture_oracle.cc |
+++ b/media/capture/content/thread_safe_capture_oracle.cc |
@@ -45,7 +45,8 @@ ThreadSafeCaptureOracle::ThreadSafeCaptureOracle( |
params.requested_format.frame_size, |
params.resolution_change_policy, |
enable_auto_throttling), |
- params_(params) {} |
+ params_(params), |
+ capture_(false) {} |
ThreadSafeCaptureOracle::~ThreadSafeCaptureOracle() { |
} |
@@ -187,6 +188,7 @@ void ThreadSafeCaptureOracle::UpdateCaptureSize(const gfx::Size& source_size) { |
void ThreadSafeCaptureOracle::Stop() { |
base::AutoLock guard(lock_); |
+ capture_ = false; |
client_.reset(); |
} |
@@ -198,6 +200,13 @@ void ThreadSafeCaptureOracle::ReportError( |
client_->OnError(from_here, reason); |
} |
+void ThreadSafeCaptureOracle::ReportStarted() { |
+ base::AutoLock guard(lock_); |
+ if (client_) |
+ client_->OnStarted(); |
+ capture_ = true; |
+} |
+ |
void ThreadSafeCaptureOracle::DidCaptureFrame( |
int frame_number, |
VideoCaptureDevice::Client::Buffer buffer, |
@@ -218,7 +227,7 @@ void ThreadSafeCaptureOracle::DidCaptureFrame( |
TRACE_EVENT_INSTANT0("gpu.capture", "CaptureSucceeded", |
TRACE_EVENT_SCOPE_THREAD); |
- if (!client_) |
+ if (!client_ || !capture_) |
miu
2017/02/18 01:18:45
Dropping frames at this stage could break things (
braveyao
2017/02/22 18:06:44
Acknowledged.
|
return; // Capture is stopped. |
frame->metadata()->SetDouble(VideoFrameMetadata::FRAME_RATE, |