diff options
Diffstat (limited to 'base/message_loop.h')
-rw-r--r-- | base/message_loop.h | 15 |
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. |