summaryrefslogtreecommitdiffstats
path: root/base/message_loop.h
diff options
context:
space:
mode:
Diffstat (limited to 'base/message_loop.h')
-rw-r--r--base/message_loop.h15
1 files changed, 10 insertions, 5 deletions
diff --git a/base/message_loop.h b/base/message_loop.h
index e14baa7..f940502 100644
--- a/base/message_loop.h
+++ b/base/message_loop.h
@@ -67,11 +67,12 @@ class Histogram;
// (DoDragDrop), printer functions (StartDoc) and *many* others.
//
// Sample workaround when inner task processing is needed:
-// bool old_state = MessageLoop::current()->NestableTasksAllowed();
-// MessageLoop::current()->SetNestableTasksAllowed(true);
-// HRESULT hr = DoDragDrop(...); // Implicitly runs a modal message loop here.
-// MessageLoop::current()->SetNestableTasksAllowed(old_state);
-// // Process hr (the result returned by DoDragDrop().
+// HRESULT hr;
+// {
+// MessageLoop::ScopedNestableTaskAllower allow(MessageLoop::current());
+// hr = DoDragDrop(...); // Implicitly runs a modal message loop.
+// }
+// // Process |hr| (the result returned by DoDragDrop()).
//
// Please be SURE your task is reentrant (nestable) and all global variables
// are stable and accessible before calling SetNestableTasksAllowed(true).
@@ -264,6 +265,10 @@ class BASE_EXPORT MessageLoop : public base::MessagePump::Delegate {
// using common controls or printer functions. By default, recursive task
// processing is disabled.
//
+ // Please utilize |ScopedNestableTaskAllower| instead of calling these methods
+ // directly. In general nestable message loops are to be avoided. They are
+ // dangerous and difficult to get right, so please use with extreme caution.
+ //
// The specific case where tasks get queued is:
// - The thread is running a message loop.
// - It receives a task #1 and execute it.