| // Copyright 2016 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "ui/events/blink/compositor_thread_event_queue.h" |
| |
| namespace ui { |
| |
| CompositorThreadEventQueue::CompositorThreadEventQueue() {} |
| |
| CompositorThreadEventQueue::~CompositorThreadEventQueue() {} |
| |
| // TODO(chongz): Support coalescing events across interleaved boundaries. |
| // https://crbug.com/661601 |
| void CompositorThreadEventQueue::Queue(std::unique_ptr<EventWithCallback> event, |
| base::TimeTicks timestamp_now) { |
| if (!queue_.empty() && queue_.back()->CanCoalesceWith(*event)) { |
| queue_.back()->CoalesceWith(event.get(), timestamp_now); |
| return; |
| } |
| |
| queue_.emplace_back(std::move(event)); |
| } |
| |
| std::unique_ptr<EventWithCallback> CompositorThreadEventQueue::Pop() { |
| std::unique_ptr<EventWithCallback> result; |
| if (!queue_.empty()) { |
| result = std::move(queue_.front()); |
| queue_.pop_front(); |
| } |
| return result; |
| } |
| |
| } // namespace ui |