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

Side by Side Diff: content/renderer/render_thread_impl.cc

Issue 17741010: Make ChildThread::current() and ChildProcess::current() only work on the main thread of the child... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: sync and also fix gpu single process case Created 7 years, 5 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
OLDNEW
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 <vector> 10 #include <vector>
(...skipping 16 matching lines...) Expand all
27 #include "base/threading/thread_restrictions.h" 27 #include "base/threading/thread_restrictions.h"
28 #include "base/values.h" 28 #include "base/values.h"
29 #include "content/child/appcache_dispatcher.h" 29 #include "content/child/appcache_dispatcher.h"
30 #include "content/child/child_histogram_message_filter.h" 30 #include "content/child/child_histogram_message_filter.h"
31 #include "content/child/indexed_db/indexed_db_dispatcher.h" 31 #include "content/child/indexed_db/indexed_db_dispatcher.h"
32 #include "content/child/indexed_db/indexed_db_message_filter.h" 32 #include "content/child/indexed_db/indexed_db_message_filter.h"
33 #include "content/child/npobject_util.h" 33 #include "content/child/npobject_util.h"
34 #include "content/child/plugin_messages.h" 34 #include "content/child/plugin_messages.h"
35 #include "content/child/resource_dispatcher.h" 35 #include "content/child/resource_dispatcher.h"
36 #include "content/child/runtime_features.h" 36 #include "content/child/runtime_features.h"
37 #include "content/child/thread_safe_sender.h"
37 #include "content/child/web_database_observer_impl.h" 38 #include "content/child/web_database_observer_impl.h"
38 #include "content/common/child_process_messages.h" 39 #include "content/common/child_process_messages.h"
39 #include "content/common/database_messages.h" 40 #include "content/common/database_messages.h"
40 #include "content/common/db_message_filter.h" 41 #include "content/common/db_message_filter.h"
41 #include "content/common/dom_storage_messages.h" 42 #include "content/common/dom_storage_messages.h"
42 #include "content/common/gpu/client/context_provider_command_buffer.h" 43 #include "content/common/gpu/client/context_provider_command_buffer.h"
43 #include "content/common/gpu/client/gpu_channel_host.h" 44 #include "content/common/gpu/client/gpu_channel_host.h"
44 #include "content/common/gpu/gpu_messages.h" 45 #include "content/common/gpu/gpu_messages.h"
45 #include "content/common/resource_messages.h" 46 #include "content/common/resource_messages.h"
46 #include "content/common/view_messages.h" 47 #include "content/common/view_messages.h"
(...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after
337 ChildProcess::current()->set_main_thread(this); 338 ChildProcess::current()->set_main_thread(this);
338 339
339 // In single process the single process is all there is. 340 // In single process the single process is all there is.
340 suspend_webkit_shared_timer_ = true; 341 suspend_webkit_shared_timer_ = true;
341 notify_webkit_of_modal_loop_ = true; 342 notify_webkit_of_modal_loop_ = true;
342 widget_count_ = 0; 343 widget_count_ = 0;
343 hidden_widget_count_ = 0; 344 hidden_widget_count_ = 0;
344 idle_notification_delay_in_ms_ = kInitialIdleHandlerDelayMs; 345 idle_notification_delay_in_ms_ = kInitialIdleHandlerDelayMs;
345 idle_notifications_to_skip_ = 0; 346 idle_notifications_to_skip_ = 0;
346 layout_test_mode_ = false; 347 layout_test_mode_ = false;
348 shutdown_event_ = NULL;
347 349
348 appcache_dispatcher_.reset( 350 appcache_dispatcher_.reset(
349 new AppCacheDispatcher(Get(), new appcache::AppCacheFrontendImpl())); 351 new AppCacheDispatcher(Get(), new appcache::AppCacheFrontendImpl()));
350 dom_storage_dispatcher_.reset(new DomStorageDispatcher()); 352 dom_storage_dispatcher_.reset(new DomStorageDispatcher());
351 main_thread_indexed_db_dispatcher_.reset(new IndexedDBDispatcher()); 353 main_thread_indexed_db_dispatcher_.reset(new IndexedDBDispatcher());
352 354
353 media_stream_center_ = NULL; 355 media_stream_center_ = NULL;
354 356
355 db_message_filter_ = new DBMessageFilter(); 357 db_message_filter_ = new DBMessageFilter();
356 AddFilter(db_message_filter_.get()); 358 AddFilter(db_message_filter_.get());
(...skipping 640 matching lines...) Expand 10 before | Expand all | Expand 10 after
997 void RenderThreadImpl::PreCacheFont(const LOGFONT& log_font) { 999 void RenderThreadImpl::PreCacheFont(const LOGFONT& log_font) {
998 Send(new ChildProcessHostMsg_PreCacheFont(log_font)); 1000 Send(new ChildProcessHostMsg_PreCacheFont(log_font));
999 } 1001 }
1000 1002
1001 void RenderThreadImpl::ReleaseCachedFonts() { 1003 void RenderThreadImpl::ReleaseCachedFonts() {
1002 Send(new ChildProcessHostMsg_ReleaseCachedFonts()); 1004 Send(new ChildProcessHostMsg_ReleaseCachedFonts());
1003 } 1005 }
1004 1006
1005 #endif // OS_WIN 1007 #endif // OS_WIN
1006 1008
1007 bool RenderThreadImpl::IsWebFrameValid(WebKit::WebFrame* web_frame) {
1008 if (!web_frame)
1009 return false; // We must be shutting down.
1010
1011 RenderViewImpl* render_view = RenderViewImpl::FromWebView(web_frame->view());
1012 if (!render_view)
1013 return false; // We must be shutting down.
1014
1015 return true;
1016 }
1017
1018 bool RenderThreadImpl::IsMainThread() { 1009 bool RenderThreadImpl::IsMainThread() {
1019 return !!current(); 1010 return !!current();
1020 } 1011 }
1021 1012
1022 base::MessageLoop* RenderThreadImpl::GetMainLoop() { 1013 base::MessageLoop* RenderThreadImpl::GetMainLoop() {
1023 return message_loop(); 1014 return message_loop();
1024 } 1015 }
1025 1016
1026 scoped_refptr<base::MessageLoopProxy> RenderThreadImpl::GetIOLoopProxy() { 1017 scoped_refptr<base::MessageLoopProxy> RenderThreadImpl::GetIOLoopProxy() {
1027 return ChildProcess::current()->io_message_loop_proxy(); 1018 return io_message_loop_proxy_;
1028 } 1019 }
1029 1020
1030 base::WaitableEvent* RenderThreadImpl::GetShutDownEvent() { 1021 base::WaitableEvent* RenderThreadImpl::GetShutDownEvent() {
1031 return ChildProcess::current()->GetShutDownEvent(); 1022 return shutdown_event_;
1032 } 1023 }
1033 1024
1034 scoped_ptr<base::SharedMemory> RenderThreadImpl::AllocateSharedMemory( 1025 scoped_ptr<base::SharedMemory> RenderThreadImpl::AllocateSharedMemory(
1035 size_t size) { 1026 size_t size) {
1036 return scoped_ptr<base::SharedMemory>( 1027 return scoped_ptr<base::SharedMemory>(
1037 HostAllocateSharedMemoryBuffer(size)); 1028 HostAllocateSharedMemoryBuffer(size));
1038 } 1029 }
1039 1030
1040 int32 RenderThreadImpl::CreateViewCommandBuffer( 1031 int32 RenderThreadImpl::CreateViewCommandBuffer(
1041 int32 surface_id, const GPUCreateCommandBufferConfig& init_params) { 1032 int32 surface_id, const GPUCreateCommandBufferConfig& init_params) {
1042 TRACE_EVENT1("gpu", 1033 TRACE_EVENT1("gpu",
1043 "RenderThreadImpl::CreateViewCommandBuffer", 1034 "RenderThreadImpl::CreateViewCommandBuffer",
1044 "surface_id", 1035 "surface_id",
1045 surface_id); 1036 surface_id);
1046 1037
1047 int32 route_id = MSG_ROUTING_NONE; 1038 int32 route_id = MSG_ROUTING_NONE;
1048 IPC::Message* message = new GpuHostMsg_CreateViewCommandBuffer( 1039 IPC::Message* message = new GpuHostMsg_CreateViewCommandBuffer(
1049 surface_id, 1040 surface_id,
1050 init_params, 1041 init_params,
1051 &route_id); 1042 &route_id);
1052 1043
1053 // Allow calling this from the compositor thread. 1044 // Allow calling this from the compositor thread.
1054 if (base::MessageLoop::current() == message_loop()) 1045 thread_safe_sender()->Send(message);
1055 ChildThread::Send(message);
1056 else
1057 sync_message_filter()->Send(message);
1058 1046
1059 return route_id; 1047 return route_id;
1060 } 1048 }
1061 1049
1062 void RenderThreadImpl::CreateImage( 1050 void RenderThreadImpl::CreateImage(
1063 gfx::PluginWindowHandle window, 1051 gfx::PluginWindowHandle window,
1064 int32 image_id, 1052 int32 image_id,
1065 const CreateImageCallback& callback) { 1053 const CreateImageCallback& callback) {
1066 NOTREACHED(); 1054 NOTREACHED();
1067 } 1055 }
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
1161 &gpu_info)) || 1149 &gpu_info)) ||
1162 #if defined(OS_POSIX) 1150 #if defined(OS_POSIX)
1163 channel_handle.socket.fd == -1 || 1151 channel_handle.socket.fd == -1 ||
1164 #endif 1152 #endif
1165 channel_handle.name.empty()) { 1153 channel_handle.name.empty()) {
1166 // Otherwise cancel the connection. 1154 // Otherwise cancel the connection.
1167 return NULL; 1155 return NULL;
1168 } 1156 }
1169 1157
1170 GetContentClient()->SetGpuInfo(gpu_info); 1158 GetContentClient()->SetGpuInfo(gpu_info);
1159
1160 // Cache some variables that are needed on the compositor thread for our
1161 // implementation of GpuChannelHostFactory.
1162 io_message_loop_proxy_ = ChildProcess::current()->io_message_loop_proxy();
1163 shutdown_event_ = ChildProcess::current()->GetShutDownEvent();
1164
1171 gpu_channel_ = GpuChannelHost::Create( 1165 gpu_channel_ = GpuChannelHost::Create(
1172 this, 0, client_id, gpu_info, channel_handle); 1166 this, 0, client_id, gpu_info, channel_handle);
1173 return gpu_channel_.get(); 1167 return gpu_channel_.get();
1174 } 1168 }
1175 1169
1176 WebKit::WebMediaStreamCenter* RenderThreadImpl::CreateMediaStreamCenter( 1170 WebKit::WebMediaStreamCenter* RenderThreadImpl::CreateMediaStreamCenter(
1177 WebKit::WebMediaStreamCenterClient* client) { 1171 WebKit::WebMediaStreamCenterClient* client) {
1178 #if defined(OS_ANDROID) 1172 #if defined(OS_ANDROID)
1179 if (CommandLine::ForCurrentProcess()->HasSwitch( 1173 if (CommandLine::ForCurrentProcess()->HasSwitch(
1180 switches::kDisableWebRTC)) 1174 switches::kDisableWebRTC))
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
1264 1258
1265 void RenderThreadImpl::SetFlingCurveParameters( 1259 void RenderThreadImpl::SetFlingCurveParameters(
1266 const std::vector<float>& new_touchpad, 1260 const std::vector<float>& new_touchpad,
1267 const std::vector<float>& new_touchscreen) { 1261 const std::vector<float>& new_touchscreen) {
1268 webkit_platform_support_->SetFlingCurveParameters(new_touchpad, 1262 webkit_platform_support_->SetFlingCurveParameters(new_touchpad,
1269 new_touchscreen); 1263 new_touchscreen);
1270 1264
1271 } 1265 }
1272 1266
1273 } // namespace content 1267 } // namespace content
OLDNEW
« content/child/child_thread.cc ('K') | « content/renderer/render_thread_impl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698