Index: content/renderer/gpu/frame_swap_message_queue.cc |
diff --git a/content/renderer/gpu/frame_swap_message_queue.cc b/content/renderer/gpu/frame_swap_message_queue.cc |
deleted file mode 100644 |
index 5a313829cb14bdff612db09b06ed67116c6d0fec..0000000000000000000000000000000000000000 |
--- a/content/renderer/gpu/frame_swap_message_queue.cc |
+++ /dev/null |
@@ -1,205 +0,0 @@ |
-// Copyright 2014 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 "content/renderer/gpu/frame_swap_message_queue.h" |
- |
-#include <limits> |
- |
-#include "base/containers/hash_tables.h" |
-#include "base/logging.h" |
-#include "base/stl_util.h" |
-#include "ipc/ipc_message.h" |
- |
-using std::vector; |
- |
-namespace content { |
- |
-class FrameSwapMessageSubQueue { |
- public: |
- FrameSwapMessageSubQueue() {} |
- virtual ~FrameSwapMessageSubQueue() {} |
- virtual bool Empty() const = 0; |
- virtual void QueueMessage(int source_frame_number, |
- scoped_ptr<IPC::Message> msg, |
- bool* is_first) = 0; |
- virtual void DrainMessages(int source_frame_number, |
- ScopedVector<IPC::Message>* messages) = 0; |
- |
- private: |
- DISALLOW_COPY_AND_ASSIGN(FrameSwapMessageSubQueue); |
-}; |
- |
-namespace { |
- |
-// Queue specific to MESSAGE_DELIVERY_POLICY_WITH_VISUAL_STATE. |
-class SendMessageScopeImpl : public FrameSwapMessageQueue::SendMessageScope { |
- public: |
- SendMessageScopeImpl(base::Lock* lock) : auto_lock_(*lock) {} |
- ~SendMessageScopeImpl() override {} |
- |
- private: |
- base::AutoLock auto_lock_; |
-}; |
- |
-class VisualStateQueue : public FrameSwapMessageSubQueue { |
- public: |
- VisualStateQueue() {} |
- |
- ~VisualStateQueue() override { |
- for (VisualStateQueueMap::iterator i = queue_.begin(); i != queue_.end(); |
- i++) { |
- STLDeleteElements(&i->second); |
- } |
- } |
- |
- bool Empty() const override { return queue_.empty(); } |
- |
- void QueueMessage(int source_frame_number, |
- scoped_ptr<IPC::Message> msg, |
- bool* is_first) override { |
- if (is_first) |
- *is_first = (queue_.count(source_frame_number) == 0); |
- |
- queue_[source_frame_number].push_back(msg.release()); |
- } |
- |
- void DrainMessages(int source_frame_number, |
- ScopedVector<IPC::Message>* messages) override { |
- VisualStateQueueMap::iterator end = queue_.upper_bound(source_frame_number); |
- for (VisualStateQueueMap::iterator i = queue_.begin(); i != end; i++) { |
- DCHECK(i->first <= source_frame_number); |
- messages->insert(messages->end(), i->second.begin(), i->second.end()); |
- i->second.clear(); |
- } |
- queue_.erase(queue_.begin(), end); |
- } |
- |
- private: |
- typedef std::map<int, std::vector<IPC::Message*> > VisualStateQueueMap; |
- VisualStateQueueMap queue_; |
- |
- DISALLOW_COPY_AND_ASSIGN(VisualStateQueue); |
-}; |
- |
-// Queue specific to MESSAGE_DELIVERY_POLICY_WITH_NEXT_SWAP. |
-class SwapQueue : public FrameSwapMessageSubQueue { |
- public: |
- SwapQueue() {} |
- bool Empty() const override { return queue_.empty(); } |
- |
- void QueueMessage(int source_frame_number, |
- scoped_ptr<IPC::Message> msg, |
- bool* is_first) override { |
- if (is_first) |
- *is_first = Empty(); |
- queue_.push_back(msg.release()); |
- } |
- |
- void DrainMessages(int source_frame_number, |
- ScopedVector<IPC::Message>* messages) override { |
- messages->insert(messages->end(), queue_.begin(), queue_.end()); |
- queue_.weak_clear(); |
- } |
- |
- private: |
- ScopedVector<IPC::Message> queue_; |
- |
- DISALLOW_COPY_AND_ASSIGN(SwapQueue); |
-}; |
- |
-} // namespace |
- |
-FrameSwapMessageQueue::FrameSwapMessageQueue() |
- : visual_state_queue_(new VisualStateQueue()), |
- swap_queue_(new SwapQueue()) { |
-} |
- |
-FrameSwapMessageQueue::~FrameSwapMessageQueue() { |
-} |
- |
-bool FrameSwapMessageQueue::Empty() const { |
- base::AutoLock lock(lock_); |
- return next_drain_messages_.empty() && visual_state_queue_->Empty() && |
- swap_queue_->Empty(); |
-} |
- |
-FrameSwapMessageSubQueue* FrameSwapMessageQueue::GetSubQueue( |
- MessageDeliveryPolicy policy) { |
- switch (policy) { |
- case MESSAGE_DELIVERY_POLICY_WITH_NEXT_SWAP: |
- return swap_queue_.get(); |
- break; |
- case MESSAGE_DELIVERY_POLICY_WITH_VISUAL_STATE: |
- return visual_state_queue_.get(); |
- break; |
- } |
- NOTREACHED(); |
- return NULL; |
-} |
- |
-void FrameSwapMessageQueue::QueueMessageForFrame(MessageDeliveryPolicy policy, |
- int source_frame_number, |
- scoped_ptr<IPC::Message> msg, |
- bool* is_first) { |
- base::AutoLock lock(lock_); |
- GetSubQueue(policy)->QueueMessage(source_frame_number, msg.Pass(), is_first); |
-} |
- |
-void FrameSwapMessageQueue::DidSwap(int source_frame_number) { |
- base::AutoLock lock(lock_); |
- |
- visual_state_queue_->DrainMessages(source_frame_number, |
- &next_drain_messages_); |
-} |
- |
-void FrameSwapMessageQueue::DidNotSwap(int source_frame_number, |
- cc::SwapPromise::DidNotSwapReason reason, |
- ScopedVector<IPC::Message>* messages) { |
- base::AutoLock lock(lock_); |
- switch (reason) { |
- case cc::SwapPromise::SWAP_FAILS: |
- case cc::SwapPromise::COMMIT_NO_UPDATE: |
- swap_queue_->DrainMessages(source_frame_number, messages); |
- visual_state_queue_->DrainMessages(source_frame_number, messages); |
- break; |
- case cc::SwapPromise::COMMIT_FAILS: |
- // Do not queue any responses here. |
- // If COMMIT_FAILS the renderer is shutting down, which will |
- // result in the RenderFrameHostImpl destructor firing the |
- // remaining response callbacks itself. |
- break; |
- default: |
- NOTREACHED(); |
- } |
-} |
- |
-void FrameSwapMessageQueue::DrainMessages( |
- ScopedVector<IPC::Message>* messages) { |
- lock_.AssertAcquired(); |
- |
- swap_queue_->DrainMessages(0, messages); |
- messages->insert(messages->end(), |
- next_drain_messages_.begin(), |
- next_drain_messages_.end()); |
- next_drain_messages_.weak_clear(); |
-} |
- |
-scoped_ptr<FrameSwapMessageQueue::SendMessageScope> |
-FrameSwapMessageQueue::AcquireSendMessageScope() { |
- return make_scoped_ptr(new SendMessageScopeImpl(&lock_)); |
-} |
- |
-// static |
-void FrameSwapMessageQueue::TransferMessages(ScopedVector<IPC::Message>& source, |
- vector<IPC::Message>* dest) { |
- for (vector<IPC::Message*>::iterator i = source.begin(); i != source.end(); |
- ++i) { |
- IPC::Message* m(*i); |
- dest->push_back(*m); |
- delete m; |
- } |
- source.weak_clear(); |
-} |
- |
-} // namespace content |