Index: base/message_loop/message_loop.h |
diff --git a/base/message_loop/message_loop.h b/base/message_loop/message_loop.h |
index 4bb7d550bccf53a53c062daea1436208bd6e6b38..25891c5dc7c7c4866a5b865b8b1cc13f9092daaa 100644 |
--- a/base/message_loop/message_loop.h |
+++ b/base/message_loop/message_loop.h |
@@ -207,6 +207,17 @@ class BASE_EXPORT MessageLoop : public MessagePump::Delegate { |
// live until the next run of the MessageLoop, or if the object needs to be |
// released on a particular thread. |
// |
+ // A common pattern is to manually increment the object's reference count |
+ // (AddRef), issue a ReleaseSoon, then clear the pointer. The reference count |
+ // is incremented manually to ensure clearing the pointer does not trigger a |
+ // delete and to account for the upcoming decrement (ReleaseSoon). For |
+ // example: |
+ // |
+ // scoped_refptr<Foo> foo = ... |
+ // foo.AddRef(); |
+ // message_loop->ReleaseSoon(foo.get()); |
+ // foo = NULL; |
+ // |
// NOTE: This method may be called on any thread. The object will be |
// released (and thus possibly deleted) on the thread that executes |
// MessageLoop::Run(). If this is not the same as the thread that calls |