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

Side by Side Diff: cc/trees/proxy.cc

Issue 17114008: cc: Remove cc::Thread and cc::ThreadImpl. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rm-thread: NULLrefptrs Created 7 years, 6 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 | Annotate | Revision Log
« no previous file with comments | « cc/trees/proxy.h ('k') | cc/trees/single_thread_proxy.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 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 "cc/trees/proxy.h" 5 #include "cc/trees/proxy.h"
6 6
7 #include "cc/base/thread.h" 7 #include "base/message_loop_proxy.h"
8 #include "cc/base/thread_impl.h" 8 #include "base/single_thread_task_runner.h"
9 9
10 namespace cc { 10 namespace cc {
11 11
12 Thread* Proxy::MainThread() const { return main_thread_.get(); } 12 base::SingleThreadTaskRunner* Proxy::MainThreadTaskRunner() const {
13 return main_task_runner_.get();
14 }
13 15
14 bool Proxy::HasImplThread() const { return impl_thread_; } 16 bool Proxy::HasImplThread() const { return !!impl_task_runner_.get(); }
15 17
16 Thread* Proxy::ImplThread() const { return impl_thread_.get(); } 18 base::SingleThreadTaskRunner* Proxy::ImplThreadTaskRunner() const {
17 19 return impl_task_runner_.get();
18 Thread* Proxy::CurrentThread() const {
19 if (MainThread() && MainThread()->BelongsToCurrentThread())
20 return MainThread();
21 if (ImplThread() && ImplThread()->BelongsToCurrentThread())
22 return ImplThread();
23 return NULL;
24 } 20 }
25 21
26 bool Proxy::IsMainThread() const { 22 bool Proxy::IsMainThread() const {
27 #ifndef NDEBUG 23 #ifndef NDEBUG
28 DCHECK(MainThread()); 24 DCHECK(main_task_runner_.get());
29 if (impl_thread_is_overridden_) 25 if (impl_thread_is_overridden_)
30 return false; 26 return false;
31 return MainThread()->BelongsToCurrentThread(); 27 return main_task_runner_->BelongsToCurrentThread();
32 #else 28 #else
33 return true; 29 return true;
34 #endif 30 #endif
35 } 31 }
36 32
37 bool Proxy::IsImplThread() const { 33 bool Proxy::IsImplThread() const {
38 #ifndef NDEBUG 34 #ifndef NDEBUG
39 if (impl_thread_is_overridden_) 35 if (impl_thread_is_overridden_)
40 return true; 36 return true;
41 return ImplThread() && ImplThread()->BelongsToCurrentThread(); 37 if (!impl_task_runner_.get())
38 return false;
39 return impl_task_runner_->BelongsToCurrentThread();
42 #else 40 #else
43 return true; 41 return true;
44 #endif 42 #endif
45 } 43 }
46 44
47 #ifndef NDEBUG 45 #ifndef NDEBUG
48 void Proxy::SetCurrentThreadIsImplThread(bool is_impl_thread) { 46 void Proxy::SetCurrentThreadIsImplThread(bool is_impl_thread) {
49 impl_thread_is_overridden_ = is_impl_thread; 47 impl_thread_is_overridden_ = is_impl_thread;
50 } 48 }
51 #endif 49 #endif
52 50
53 bool Proxy::IsMainThreadBlocked() const { 51 bool Proxy::IsMainThreadBlocked() const {
54 #ifndef NDEBUG 52 #ifndef NDEBUG
55 return is_main_thread_blocked_; 53 return is_main_thread_blocked_;
56 #else 54 #else
57 return true; 55 return true;
58 #endif 56 #endif
59 } 57 }
60 58
61 #ifndef NDEBUG 59 #ifndef NDEBUG
62 void Proxy::SetMainThreadBlocked(bool is_main_thread_blocked) { 60 void Proxy::SetMainThreadBlocked(bool is_main_thread_blocked) {
63 is_main_thread_blocked_ = is_main_thread_blocked; 61 is_main_thread_blocked_ = is_main_thread_blocked;
64 } 62 }
65 #endif 63 #endif
66 64
67 Proxy::Proxy(scoped_ptr<Thread> impl_thread) 65 Proxy::Proxy(
68 : main_thread_(ThreadImpl::CreateForCurrentThread()), 66 scoped_refptr<base::SingleThreadTaskRunner> impl_task_runner)
67 : main_task_runner_(base::MessageLoopProxy::current()),
69 #ifdef NDEBUG 68 #ifdef NDEBUG
70 impl_thread_(impl_thread.Pass()) {} 69 impl_task_runner_(impl_task_runner) {}
71 #else 70 #else
72 impl_thread_(impl_thread.Pass()), 71 impl_task_runner_(impl_task_runner),
73 impl_thread_is_overridden_(false), 72 impl_thread_is_overridden_(false),
74 is_main_thread_blocked_(false) {} 73 is_main_thread_blocked_(false) {}
75 #endif 74 #endif
76 75
77 Proxy::~Proxy() { 76 Proxy::~Proxy() {
78 DCHECK(IsMainThread()); 77 DCHECK(IsMainThread());
79 } 78 }
80 79
81 std::string Proxy::SchedulerStateAsStringForTesting() { 80 std::string Proxy::SchedulerStateAsStringForTesting() {
82 return ""; 81 return "";
83 } 82 }
84 83
85 } // namespace cc 84 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/proxy.h ('k') | cc/trees/single_thread_proxy.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698