summaryrefslogtreecommitdiffstats
path: root/content
diff options
context:
space:
mode:
authorapatrick@chromium.org <apatrick@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-11-03 18:02:45 +0000
committerapatrick@chromium.org <apatrick@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-11-03 18:02:45 +0000
commit0f921df186f2aa93a8a13b14987df8dc29dbae99 (patch)
tree8265d9e89ac5997878c89c7775c442c8f6ad5c3b /content
parente9fe37d1ee6c253087a5b4b01bb9335b4c252349 (diff)
downloadchromium_src-0f921df186f2aa93a8a13b14987df8dc29dbae99.zip
chromium_src-0f921df186f2aa93a8a13b14987df8dc29dbae99.tar.gz
chromium_src-0f921df186f2aa93a8a13b14987df8dc29dbae99.tar.bz2
GpuMessageFilter is destoryed on IO thread instead of UI thread.
I think this is right. Once the GpuMessageFilter has been created on the UI thread, it is only used on the IO thread. Destroying it on the UI thread makes WeakPtrs to it created on the IO thread assert. BUG=95780 Review URL: http://codereview.chromium.org/8386051 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@108499 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content')
-rw-r--r--content/browser/renderer_host/gpu_message_filter.cc16
-rw-r--r--content/browser/renderer_host/gpu_message_filter.h1
2 files changed, 9 insertions, 8 deletions
diff --git a/content/browser/renderer_host/gpu_message_filter.cc b/content/browser/renderer_host/gpu_message_filter.cc
index 2811495..40e8803 100644
--- a/content/browser/renderer_host/gpu_message_filter.cc
+++ b/content/browser/renderer_host/gpu_message_filter.cc
@@ -20,12 +20,11 @@ GpuMessageFilter::GpuMessageFilter(int render_process_id,
: gpu_host_id_(0),
render_process_id_(render_process_id),
render_widget_helper_(render_widget_helper) {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
}
-// WeakPtrs to a GpuMessageFilter need to be Invalidated from
-// the same thread from which they were created.
GpuMessageFilter::~GpuMessageFilter() {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
}
bool GpuMessageFilter::OnMessageReceived(
@@ -42,10 +41,6 @@ bool GpuMessageFilter::OnMessageReceived(
return handled;
}
-void GpuMessageFilter::OnDestruct() const {
- BrowserThread::DeleteOnUIThread::Destruct(this);
-}
-
// Callbacks used in this file.
namespace {
@@ -57,6 +52,7 @@ class EstablishChannelCallback
EstablishChannelCallback(GpuMessageFilter* filter, IPC::Message* reply)
: filter_(filter->AsWeakPtr()),
reply_(reply) {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
}
virtual void RunWithParams(const TupleType& params) {
@@ -66,6 +62,8 @@ class EstablishChannelCallback
void Send(const IPC::ChannelHandle& channel,
base::ProcessHandle gpu_process_for_browser,
const content::GPUInfo& gpu_info) {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
+
if (!filter_)
return;
@@ -130,6 +128,8 @@ class CreateCommandBufferCallback : public CallbackRunner<Tuple1<int32> > {
void GpuMessageFilter::OnEstablishGpuChannel(
content::CauseForGpuLaunch cause_for_gpu_launch,
IPC::Message* reply) {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
+
scoped_ptr<EstablishChannelCallback> callback(
new EstablishChannelCallback(this, reply));
@@ -160,6 +160,8 @@ void GpuMessageFilter::OnCreateViewCommandBuffer(
int32 render_view_id,
const GPUCreateCommandBufferConfig& init_params,
IPC::Message* reply) {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
+
GpuProcessHost* host = GpuProcessHost::FromID(gpu_host_id_);
gfx::PluginWindowHandle compositing_surface =
diff --git a/content/browser/renderer_host/gpu_message_filter.h b/content/browser/renderer_host/gpu_message_filter.h
index 3730304..5a30571 100644
--- a/content/browser/renderer_host/gpu_message_filter.h
+++ b/content/browser/renderer_host/gpu_message_filter.h
@@ -33,7 +33,6 @@ class GpuMessageFilter : public BrowserMessageFilter,
// BrowserMessageFilter methods:
virtual bool OnMessageReceived(const IPC::Message& message,
bool* message_was_ok);
- virtual void OnDestruct() const;
private:
friend class content::BrowserThread;