diff --git a/docs/user/app/Looper.dox b/docs/user/app/Looper.dox
index f2fa24305f..7ef6428398 100644
--- a/docs/user/app/Looper.dox
+++ b/docs/user/app/Looper.dox
@@ -1,5 +1,5 @@
/*
- * Copyright 2007, Haiku, Inc. All Rights Reserved.
+ * Copyright 2008, Haiku, Inc. All Rights Reserved.
* Distributed under the terms of the MIT License.
*
* Authors:
@@ -32,18 +32,18 @@
messages. Messages are actually passed on to \link BHandler handlers \endlink
that are associated with this looper. By default there is always one
handler available: the looper itself. To 'quit' a looper, you should pass
- a \c B_QUIT_REQUESTED message using one of the message post functions. Do
- not call Quit() directly! When a looper receives such a request, it will
- \b delete itself. As such, looper should always be created on the
- heap (with \c new), and never on the stack.
+ a \c B_QUIT_REQUESTED message using one of the message post functions. When
+ a looper receives such a request, it will \b delete itself. As such, looper
+ should always be created on the heap (with \c new), and never on
+ the stack.
Posting messages can be done using the various PostMessage() methods.
Whenever a message is posted, it will be added through to the message
queue. It is possible to apply filters (see AddCommonFilter()) to filter
- out any messages that correspond with certain criteria. Whenever you post
- a message, you \e lose ownership. The looper will dispose of it when it is
- processed. The handler for the message is chosen using the following
- criteria:
+ out any messages that correspond with certain criteria. The method will
+ copy the contents of the message and this copy is processed, so make sure
+ you delete the original messages in case you create them on the heap.
+ The handler for the message is chosen using the following criteria:
-# If PostMessage() or the BMessenger is set to a specific handler, and
this handler is associated with this looper, than the message is
@@ -220,6 +220,17 @@
Posting a message puts it in the message queue. The message passes through
the default handler chain.
+ The \a message is copied, and as such, you should make sure you will not
+ leak it. The best way to send messages is like this:
+
+\code
+ BMessage message;
+ message.what = B_DO_SOMETHING;
+ message.AddString("some_data", "This is data")
+
+ aLooper->PostMessage(&message);
+\endcode
+
\param message The message you would like to pass to this method.
\retval B_OK The operation succeeded, and the message is sent to the port.
@@ -277,6 +288,17 @@
The target \a handler should be associated with this looper. This method
bypasses the default message queue.
+ The \a message is copied, and as such, you should make sure you will not
+ leak it. The best way to send messages is like this:
+
+\code
+ BMessage message;
+ message.what = B_DO_SOMETHING;
+ message.AddString("some_data", "This is data")
+
+ aLooper->PostMessage(&message, aHandler);
+\endcode
+
\param message The message you want to pass.
\param handler The handler you would like to pass this message to.
\param replyTo If you would like to request a reply, pass the handler to
@@ -520,8 +542,12 @@
\fn void BLooper::Quit()
\brief Hook method that is called after a \c B_QUIT_REQUESTED message.
- If you want to quit and delete the looper, do \b not call this method
- directly, rather, post a \c B_QUIT_REQUESTED message to the looper.
+ If you want to quit and delete the looper, you should post a
+ \c B_QUIT_REQUESTED message. This will first call the hook method
+ QuitRequested(), which can be overridden in child classes in case there
+ are conditions that would prevent the looper to be quit. If you really
+ know what you are doing, and you definitely want to quit this looper,
+ you may call this method, but only after performing a Lock() operation.
Override this method if your subclass needs to perform specific clean-up
tasks. Remember to call the base class implementation when you're done.