diff options
Diffstat (limited to 'chromium/content/renderer/media/batching_media_log.cc')
-rw-r--r-- | chromium/content/renderer/media/batching_media_log.cc | 29 |
1 files changed, 14 insertions, 15 deletions
diff --git a/chromium/content/renderer/media/batching_media_log.cc b/chromium/content/renderer/media/batching_media_log.cc index 76ebdf6f7a1..d345a23ccd3 100644 --- a/chromium/content/renderer/media/batching_media_log.cc +++ b/chromium/content/renderer/media/batching_media_log.cc @@ -56,9 +56,9 @@ BatchingMediaLog::BatchingMediaLog( std::vector<std::unique_ptr<EventHandler>> event_handlers) : security_origin_(security_origin), task_runner_(std::move(task_runner)), - event_handlers_(std::move(event_handlers)), tick_clock_(base::DefaultTickClock::GetInstance()), last_ipc_send_time_(tick_clock_->NowTicks()), + event_handlers_(std::move(event_handlers)), ipc_send_pending_(false) { DCHECK(RenderThread::Get()) << "BatchingMediaLog must be constructed on the render thread"; @@ -81,6 +81,7 @@ BatchingMediaLog::~BatchingMediaLog() { } void BatchingMediaLog::OnWebMediaPlayerDestroyedLocked() { + base::AutoLock lock(lock_); for (const auto& handler : event_handlers_) handler->OnWebMediaPlayerDestroyed(); } @@ -200,27 +201,25 @@ std::string BatchingMediaLog::MediaEventToMessageString( void BatchingMediaLog::SendQueuedMediaEvents() { DCHECK(task_runner_->BelongsToCurrentThread()); + base::AutoLock auto_lock(lock_); - std::vector<media::MediaLogRecord> events_to_send; - { - base::AutoLock auto_lock(lock_); - DCHECK(ipc_send_pending_); - ipc_send_pending_ = false; - - if (last_duration_changed_event_) { - queued_media_events_.push_back(*last_duration_changed_event_); - last_duration_changed_event_.reset(); - } + DCHECK(ipc_send_pending_); + ipc_send_pending_ = false; - queued_media_events_.swap(events_to_send); - last_ipc_send_time_ = tick_clock_->NowTicks(); + if (last_duration_changed_event_) { + queued_media_events_.push_back(*last_duration_changed_event_); + last_duration_changed_event_.reset(); } - if (events_to_send.empty()) + last_ipc_send_time_ = tick_clock_->NowTicks(); + + if (queued_media_events_.empty()) return; for (const auto& handler : event_handlers_) - handler->SendQueuedMediaEvents(events_to_send); + handler->SendQueuedMediaEvents(queued_media_events_); + + queued_media_events_.clear(); } void BatchingMediaLog::SetTickClockForTesting( |