OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/render_thread_impl.h" | 5 #include "content/renderer/render_thread_impl.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <limits> | 8 #include <limits> |
9 #include <map> | 9 #include <map> |
10 #include <utility> | 10 #include <utility> |
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
158 #include "third_party/WebKit/public/web/WebView.h" | 158 #include "third_party/WebKit/public/web/WebView.h" |
159 #include "third_party/icu/source/i18n/unicode/timezone.h" | 159 #include "third_party/icu/source/i18n/unicode/timezone.h" |
160 #include "third_party/skia/include/core/SkGraphics.h" | 160 #include "third_party/skia/include/core/SkGraphics.h" |
161 #include "ui/base/layout.h" | 161 #include "ui/base/layout.h" |
162 #include "ui/base/ui_base_switches.h" | 162 #include "ui/base/ui_base_switches.h" |
163 #include "v8/include/v8.h" | 163 #include "v8/include/v8.h" |
164 | 164 |
165 #if defined(OS_ANDROID) | 165 #if defined(OS_ANDROID) |
166 #include <cpu-features.h> | 166 #include <cpu-features.h> |
167 #include "content/renderer/android/synchronous_compositor_external_begin_frame_s
ource.h" | 167 #include "content/renderer/android/synchronous_compositor_external_begin_frame_s
ource.h" |
168 #include "content/renderer/android/synchronous_compositor_factory.h" | |
169 #include "content/renderer/android/synchronous_compositor_filter.h" | 168 #include "content/renderer/android/synchronous_compositor_filter.h" |
170 #include "content/renderer/media/android/renderer_demuxer_android.h" | 169 #include "content/renderer/media/android/renderer_demuxer_android.h" |
171 #include "content/renderer/media/android/stream_texture_factory_impl.h" | 170 #include "content/renderer/media/android/stream_texture_factory_impl.h" |
172 #include "media/base/android/media_codec_util.h" | 171 #include "media/base/android/media_codec_util.h" |
173 #endif | 172 #endif |
174 | 173 |
175 #if defined(OS_MACOSX) | 174 #if defined(OS_MACOSX) |
176 #include "base/mac/mac_util.h" | 175 #include "base/mac/mac_util.h" |
177 #include "content/renderer/theme_helper_mac.h" | 176 #include "content/renderer/theme_helper_mac.h" |
178 #include "content/renderer/webscrollbarbehavior_impl_mac.h" | 177 #include "content/renderer/webscrollbarbehavior_impl_mac.h" |
(...skipping 963 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1142 void RenderThreadImpl::RemoveObserver(RenderThreadObserver* observer) { | 1141 void RenderThreadImpl::RemoveObserver(RenderThreadObserver* observer) { |
1143 observers_.RemoveObserver(observer); | 1142 observers_.RemoveObserver(observer); |
1144 } | 1143 } |
1145 | 1144 |
1146 void RenderThreadImpl::SetResourceDispatcherDelegate( | 1145 void RenderThreadImpl::SetResourceDispatcherDelegate( |
1147 ResourceDispatcherDelegate* delegate) { | 1146 ResourceDispatcherDelegate* delegate) { |
1148 resource_dispatcher()->set_delegate(delegate); | 1147 resource_dispatcher()->set_delegate(delegate); |
1149 } | 1148 } |
1150 | 1149 |
1151 void RenderThreadImpl::InitializeCompositorThread() { | 1150 void RenderThreadImpl::InitializeCompositorThread() { |
| 1151 base::Thread::Options options; |
1152 #if defined(OS_ANDROID) | 1152 #if defined(OS_ANDROID) |
1153 SynchronousCompositorFactory* sync_compositor_factory = | 1153 options.priority = base::ThreadPriority::DISPLAY; |
1154 SynchronousCompositorFactory::GetInstance(); | |
1155 const base::CommandLine* cmd_line = base::CommandLine::ForCurrentProcess(); | |
1156 bool using_ipc_sync_compositing = | |
1157 cmd_line->HasSwitch(switches::kIPCSyncCompositing); | |
1158 bool sync_input_for_sync_compositing = | |
1159 cmd_line->HasSwitch(switches::kSyncInputForSyncCompositor); | |
1160 DCHECK(!sync_compositor_factory || !using_ipc_sync_compositing); | |
1161 DCHECK(!sync_input_for_sync_compositing || using_ipc_sync_compositing); | |
1162 | |
1163 if (sync_compositor_factory) { | |
1164 compositor_task_runner_ = | |
1165 sync_compositor_factory->GetCompositorTaskRunner(); | |
1166 } | |
1167 #endif | 1154 #endif |
1168 if (!compositor_task_runner_.get()) { | 1155 compositor_thread_.reset(new WebThreadForCompositor(options)); |
1169 base::Thread::Options options; | 1156 blink_platform_impl_->SetCompositorThread(compositor_thread_.get()); |
1170 #if defined(OS_ANDROID) | 1157 compositor_task_runner_ = compositor_thread_->GetTaskRunner(); |
1171 options.priority = base::ThreadPriority::DISPLAY; | 1158 compositor_task_runner_->PostTask( |
1172 #endif | 1159 FROM_HERE, |
1173 compositor_thread_.reset(new WebThreadForCompositor(options)); | 1160 base::Bind(base::IgnoreResult(&ThreadRestrictions::SetIOAllowed), false)); |
1174 blink_platform_impl_->SetCompositorThread(compositor_thread_.get()); | |
1175 compositor_task_runner_ = compositor_thread_->GetTaskRunner(); | |
1176 compositor_task_runner_->PostTask( | |
1177 FROM_HERE, | |
1178 base::Bind(base::IgnoreResult(&ThreadRestrictions::SetIOAllowed), | |
1179 false)); | |
1180 } | |
1181 | 1161 |
1182 InputHandlerManagerClient* input_handler_manager_client = nullptr; | 1162 InputHandlerManagerClient* input_handler_manager_client = nullptr; |
1183 SynchronousInputHandlerProxyClient* synchronous_input_handler_proxy_client = | 1163 SynchronousInputHandlerProxyClient* synchronous_input_handler_proxy_client = |
1184 nullptr; | 1164 nullptr; |
1185 #if defined(OS_ANDROID) | 1165 #if defined(OS_ANDROID) |
1186 if (using_ipc_sync_compositing) { | 1166 if (GetContentClient()->UsingSynchronousCompositing()) { |
1187 sync_compositor_message_filter_ = | 1167 sync_compositor_message_filter_ = |
1188 new SynchronousCompositorFilter(compositor_task_runner_); | 1168 new SynchronousCompositorFilter(compositor_task_runner_); |
1189 AddFilter(sync_compositor_message_filter_.get()); | 1169 AddFilter(sync_compositor_message_filter_.get()); |
1190 if (sync_input_for_sync_compositing) | 1170 if (base::CommandLine::ForCurrentProcess()->HasSwitch( |
| 1171 switches::kSyncInputForSyncCompositor)) { |
1191 input_handler_manager_client = sync_compositor_message_filter_.get(); | 1172 input_handler_manager_client = sync_compositor_message_filter_.get(); |
| 1173 } |
1192 synchronous_input_handler_proxy_client = | 1174 synchronous_input_handler_proxy_client = |
1193 sync_compositor_message_filter_.get(); | 1175 sync_compositor_message_filter_.get(); |
1194 } else if (sync_compositor_factory) { | |
1195 input_handler_manager_client = | |
1196 sync_compositor_factory->GetInputHandlerManagerClient(); | |
1197 synchronous_input_handler_proxy_client = | |
1198 sync_compositor_factory->GetSynchronousInputHandlerProxyClient(); | |
1199 } | 1176 } |
1200 #endif | 1177 #endif |
1201 if (!input_handler_manager_client) { | 1178 if (!input_handler_manager_client) { |
1202 scoped_refptr<InputEventFilter> compositor_input_event_filter( | 1179 scoped_refptr<InputEventFilter> compositor_input_event_filter( |
1203 new InputEventFilter(main_input_callback_.callback(), | 1180 new InputEventFilter(main_input_callback_.callback(), |
1204 main_thread_compositor_task_runner_, | 1181 main_thread_compositor_task_runner_, |
1205 compositor_task_runner_)); | 1182 compositor_task_runner_)); |
1206 input_handler_manager_client = compositor_input_event_filter.get(); | 1183 input_handler_manager_client = compositor_input_event_filter.get(); |
1207 input_event_filter_ = compositor_input_event_filter; | 1184 input_event_filter_ = compositor_input_event_filter; |
1208 } | 1185 } |
(...skipping 455 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1664 return renderer_scheduler_.get(); | 1641 return renderer_scheduler_.get(); |
1665 } | 1642 } |
1666 | 1643 |
1667 cc::ContextProvider* RenderThreadImpl::GetSharedMainThreadContextProvider() { | 1644 cc::ContextProvider* RenderThreadImpl::GetSharedMainThreadContextProvider() { |
1668 return SharedMainThreadContextProvider().get(); | 1645 return SharedMainThreadContextProvider().get(); |
1669 } | 1646 } |
1670 | 1647 |
1671 std::unique_ptr<cc::BeginFrameSource> | 1648 std::unique_ptr<cc::BeginFrameSource> |
1672 RenderThreadImpl::CreateExternalBeginFrameSource(int routing_id) { | 1649 RenderThreadImpl::CreateExternalBeginFrameSource(int routing_id) { |
1673 #if defined(OS_ANDROID) | 1650 #if defined(OS_ANDROID) |
1674 if (SynchronousCompositorFactory* factory = | 1651 if (sync_compositor_message_filter_) { |
1675 SynchronousCompositorFactory::GetInstance()) { | |
1676 DCHECK(!sync_compositor_message_filter_); | |
1677 return factory->CreateExternalBeginFrameSource(routing_id); | |
1678 } else if (sync_compositor_message_filter_) { | |
1679 return base::WrapUnique(new SynchronousCompositorExternalBeginFrameSource( | 1652 return base::WrapUnique(new SynchronousCompositorExternalBeginFrameSource( |
1680 routing_id, sync_compositor_message_filter_.get())); | 1653 routing_id, sync_compositor_message_filter_.get())); |
1681 } | 1654 } |
1682 #endif | 1655 #endif |
1683 return base::WrapUnique(new CompositorExternalBeginFrameSource( | 1656 return base::WrapUnique(new CompositorExternalBeginFrameSource( |
1684 compositor_message_filter_.get(), sync_message_filter(), routing_id)); | 1657 compositor_message_filter_.get(), sync_message_filter(), routing_id)); |
1685 } | 1658 } |
1686 | 1659 |
1687 cc::ImageSerializationProcessor* | 1660 cc::ImageSerializationProcessor* |
1688 RenderThreadImpl::GetImageSerializationProcessor() { | 1661 RenderThreadImpl::GetImageSerializationProcessor() { |
(...skipping 453 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2142 } | 2115 } |
2143 | 2116 |
2144 void RenderThreadImpl::PendingRenderFrameConnect::OnConnectionError() { | 2117 void RenderThreadImpl::PendingRenderFrameConnect::OnConnectionError() { |
2145 size_t erased = | 2118 size_t erased = |
2146 RenderThreadImpl::current()->pending_render_frame_connects_.erase( | 2119 RenderThreadImpl::current()->pending_render_frame_connects_.erase( |
2147 routing_id_); | 2120 routing_id_); |
2148 DCHECK_EQ(1u, erased); | 2121 DCHECK_EQ(1u, erased); |
2149 } | 2122 } |
2150 | 2123 |
2151 } // namespace content | 2124 } // namespace content |
OLD | NEW |