Index: content/common/gpu/gpu_channel.h |
diff --git a/content/common/gpu/gpu_channel.h b/content/common/gpu/gpu_channel.h |
index 49b1078e6e1d050f054f025deff39bf32bd0c838..6b6dffb2199b26c3d0161799add9054b1ac1805b 100644 |
--- a/content/common/gpu/gpu_channel.h |
+++ b/content/common/gpu/gpu_channel.h |
@@ -217,8 +217,6 @@ class GpuChannel : public IPC::Listener, public IPC::Sender { |
bool handle_messages_scheduled_; |
IPC::Message* currently_processing_message_; |
- base::WeakPtrFactory<GpuChannel> weak_factory_; |
- |
scoped_refptr<GpuChannelMessageFilter> filter_; |
scoped_refptr<base::MessageLoopProxy> io_message_loop_; |
scoped_ptr<DevToolsGpuAgent> devtools_gpu_agent_; |
@@ -227,6 +225,11 @@ class GpuChannel : public IPC::Listener, public IPC::Sender { |
bool allow_future_sync_points_; |
+ // Member variables should appear before the WeakPtrFactory, to ensure |
+ // that any WeakPtrs to Controller are invalidated before its members |
+ // variable's destructors are executed, rendering them invalid. |
+ base::WeakPtrFactory<GpuChannel> weak_factory_; |
+ |
DISALLOW_COPY_AND_ASSIGN(GpuChannel); |
}; |