Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(143)

Side by Side Diff: content/renderer/gpu/frame_swap_message_queue.cc

Issue 2435863004: Remove stl_util's deletion function use from content/. (Closed)
Patch Set: minus service worker Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/renderer/gpu/frame_swap_message_queue.h" 5 #include "content/renderer/gpu/frame_swap_message_queue.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <limits> 8 #include <limits>
9 #include <memory>
9 #include <utility> 10 #include <utility>
10 11
11 #include "base/containers/hash_tables.h" 12 #include "base/containers/hash_tables.h"
12 #include "base/logging.h" 13 #include "base/logging.h"
13 #include "base/macros.h" 14 #include "base/macros.h"
14 #include "base/memory/ptr_util.h" 15 #include "base/memory/ptr_util.h"
15 #include "base/stl_util.h" 16 #include "base/stl_util.h"
16 #include "ipc/ipc_message.h" 17 #include "ipc/ipc_message.h"
17 18
18 using std::vector; 19 using std::vector;
(...skipping 23 matching lines...) Expand all
42 public: 43 public:
43 SendMessageScopeImpl(base::Lock* lock) : auto_lock_(*lock) {} 44 SendMessageScopeImpl(base::Lock* lock) : auto_lock_(*lock) {}
44 ~SendMessageScopeImpl() override {} 45 ~SendMessageScopeImpl() override {}
45 46
46 private: 47 private:
47 base::AutoLock auto_lock_; 48 base::AutoLock auto_lock_;
48 }; 49 };
49 50
50 class VisualStateQueue : public FrameSwapMessageSubQueue { 51 class VisualStateQueue : public FrameSwapMessageSubQueue {
51 public: 52 public:
52 VisualStateQueue() {} 53 VisualStateQueue() = default;
53 54
54 ~VisualStateQueue() override { 55 ~VisualStateQueue() override = default;
55 for (VisualStateQueueMap::iterator i = queue_.begin(); i != queue_.end();
56 i++) {
57 base::STLDeleteElements(&i->second);
58 }
59 }
60 56
61 bool Empty() const override { return queue_.empty(); } 57 bool Empty() const override { return queue_.empty(); }
62 58
63 void QueueMessage(int source_frame_number, 59 void QueueMessage(int source_frame_number,
64 std::unique_ptr<IPC::Message> msg, 60 std::unique_ptr<IPC::Message> msg,
65 bool* is_first) override { 61 bool* is_first) override {
66 if (is_first) 62 if (is_first)
67 *is_first = (queue_.count(source_frame_number) == 0); 63 *is_first = (queue_.count(source_frame_number) == 0);
68 64
69 queue_[source_frame_number].push_back(msg.release()); 65 queue_[source_frame_number].push_back(std::move(msg));
70 } 66 }
71 67
72 void DrainMessages( 68 void DrainMessages(
73 int source_frame_number, 69 int source_frame_number,
74 std::vector<std::unique_ptr<IPC::Message>>* messages) override { 70 std::vector<std::unique_ptr<IPC::Message>>* messages) override {
75 auto end = queue_.upper_bound(source_frame_number); 71 auto end = queue_.upper_bound(source_frame_number);
76 for (auto i = queue_.begin(); i != end; i++) { 72 for (auto i = queue_.begin(); i != end; i++) {
77 DCHECK(i->first <= source_frame_number); 73 DCHECK(i->first <= source_frame_number);
78 for (IPC::Message* msg : i->second) { 74 std::move(i->second.begin(), i->second.end(),
79 messages->push_back(base::WrapUnique(msg)); 75 std::back_inserter(*messages));
80 }
81 i->second.clear();
82 } 76 }
83 queue_.erase(queue_.begin(), end); 77 queue_.erase(queue_.begin(), end);
84 } 78 }
85 79
86 private: 80 private:
87 typedef std::map<int, std::vector<IPC::Message*> > VisualStateQueueMap; 81 std::map<int, std::vector<std::unique_ptr<IPC::Message>>> queue_;
88 VisualStateQueueMap queue_;
89 82
90 DISALLOW_COPY_AND_ASSIGN(VisualStateQueue); 83 DISALLOW_COPY_AND_ASSIGN(VisualStateQueue);
91 }; 84 };
92 85
93 // Queue specific to MESSAGE_DELIVERY_POLICY_WITH_NEXT_SWAP. 86 // Queue specific to MESSAGE_DELIVERY_POLICY_WITH_NEXT_SWAP.
94 class SwapQueue : public FrameSwapMessageSubQueue { 87 class SwapQueue : public FrameSwapMessageSubQueue {
95 public: 88 public:
96 SwapQueue() {} 89 SwapQueue() {}
97 bool Empty() const override { return queue_.empty(); } 90 bool Empty() const override { return queue_.empty(); }
98 91
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
207 void FrameSwapMessageQueue::TransferMessages( 200 void FrameSwapMessageQueue::TransferMessages(
208 std::vector<std::unique_ptr<IPC::Message>>* source, 201 std::vector<std::unique_ptr<IPC::Message>>* source,
209 vector<IPC::Message>* dest) { 202 vector<IPC::Message>* dest) {
210 for (const auto& msg : *source) { 203 for (const auto& msg : *source) {
211 dest->push_back(*msg.get()); 204 dest->push_back(*msg.get());
212 } 205 }
213 source->clear(); 206 source->clear();
214 } 207 }
215 208
216 } // namespace content 209 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/renderer_host/input/touch_event_queue.cc ('k') | content/renderer/media/rtc_peer_connection_handler.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698