diff options
author | apatrick@chromium.org <apatrick@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-11-03 18:02:45 +0000 |
---|---|---|
committer | apatrick@chromium.org <apatrick@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-11-03 18:02:45 +0000 |
commit | 0f921df186f2aa93a8a13b14987df8dc29dbae99 (patch) | |
tree | 8265d9e89ac5997878c89c7775c442c8f6ad5c3b /content | |
parent | e9fe37d1ee6c253087a5b4b01bb9335b4c252349 (diff) | |
download | chromium_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.cc | 16 | ||||
-rw-r--r-- | content/browser/renderer_host/gpu_message_filter.h | 1 |
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; |