OLD | NEW |
1 /* Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 /* Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 * Use of this source code is governed by a BSD-style license that can be | 2 * Use of this source code is governed by a BSD-style license that can be |
3 * found in the LICENSE file. | 3 * found in the LICENSE file. |
4 */ | 4 */ |
5 | 5 |
6 /** | 6 /** |
7 * Defines the PPB_MessageLoop interface. | 7 * Defines the PPB_MessageLoop interface. |
8 */ | 8 */ |
9 label Chrome { | 9 label Chrome { |
10 M25 = 1.0 | 10 M25 = 1.0 |
(...skipping 19 matching lines...) Expand all Loading... |
30 * - Create the thread yourself (using pthreads). | 30 * - Create the thread yourself (using pthreads). |
31 * - Create the message loop resource. | 31 * - Create the message loop resource. |
32 * - Pass the message loop resource to your thread's main function. | 32 * - Pass the message loop resource to your thread's main function. |
33 * - Call PostWork() on the message loop to run functions on the thread. | 33 * - Call PostWork() on the message loop to run functions on the thread. |
34 * | 34 * |
35 * From the background thread's main function: | 35 * From the background thread's main function: |
36 * - Call AttachToCurrentThread() with the message loop resource. | 36 * - Call AttachToCurrentThread() with the message loop resource. |
37 * - Call Run() with the message loop resource. | 37 * - Call Run() with the message loop resource. |
38 * | 38 * |
39 * Your callbacks should look like this: | 39 * Your callbacks should look like this: |
40 * @code | 40 * @code |
41 * void DoMyWork(void* user_data, int32_t status) { | 41 * void DoMyWork(void* user_data, int32_t status) { |
42 * if (status != PP_OK) { | 42 * if (status != PP_OK) { |
43 * Cleanup(); // e.g. free user_data. | 43 * Cleanup(); // e.g. free user_data. |
44 * return; | 44 * return; |
45 * } | 45 * } |
46 * ... do your work... | 46 * ... do your work... |
47 * } | 47 * } |
48 * @endcode | 48 * @endcode |
49 * For a C++ example, see ppapi/utility/threading/simple_thread.h | 49 * For a C++ example, see ppapi/utility/threading/simple_thread.h |
50 * | 50 * |
51 * (You can also create the message loop resource on the background thread, | 51 * (You can also create the message loop resource on the background thread, |
52 * but then the main thread will have no reference to it should you want to | 52 * but then the main thread will have no reference to it should you want to |
53 * call PostWork()). | 53 * call PostWork()). |
54 * | 54 * |
55 * | 55 * |
56 * THREAD HANDLING | 56 * THREAD HANDLING |
57 * | 57 * |
58 * The main thread has an implicitly created message loop. The main thread is | 58 * The main thread has an implicitly created message loop. The main thread is |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
109 * | 109 * |
110 * If you post a callback to a message loop that's been destroyed, or to an | 110 * If you post a callback to a message loop that's been destroyed, or to an |
111 * invalid message loop, PostWork will return an error and will not run the | 111 * invalid message loop, PostWork will return an error and will not run the |
112 * callback. This is true even for callbacks with the "required" flag set, | 112 * callback. This is true even for callbacks with the "required" flag set, |
113 * since the system may not even know what thread to issue the error callback | 113 * since the system may not even know what thread to issue the error callback |
114 * on. | 114 * on. |
115 * | 115 * |
116 * Therefore, you should check for errors from PostWork and destroy any | 116 * Therefore, you should check for errors from PostWork and destroy any |
117 * associated memory to avoid leaks. If you're using the C++ | 117 * associated memory to avoid leaks. If you're using the C++ |
118 * CompletionCallbackFactory, use the following pattern: | 118 * CompletionCallbackFactory, use the following pattern: |
119 * | 119 * @code |
120 * pp::CompletionCallback callback = factory_.NewOptionalCallback(...); | 120 * pp::CompletionCallback callback = factory_.NewOptionalCallback(...); |
121 * int32_t result = message_loop.PostWork(callback); | 121 * int32_t result = message_loop.PostWork(callback); |
122 * if (result != PP_OK) | 122 * if (result != PP_OK) |
123 * callback.Run(result); | 123 * callback.Run(result); |
124 * | 124 * @endcode |
125 * This will run the callback with an error value, and assumes that the | 125 * This will run the callback with an error value, and assumes that the |
126 * implementation of your callback checks the "result" argument and returns | 126 * implementation of your callback checks the "result" argument and returns |
127 * immediately on error. | 127 * immediately on error. |
128 */ | 128 */ |
129 interface PPB_MessageLoop { | 129 interface PPB_MessageLoop { |
130 /** | 130 /** |
131 * Creates a message loop resource. | 131 * Creates a message loop resource. |
132 * | 132 * |
133 * This may be called from any thread. After your thread starts but before | 133 * This may be called from any thread. After your thread starts but before |
134 * issuing any other PPAPI calls on it, you must associate it with a message | 134 * issuing any other PPAPI calls on it, you must associate it with a message |
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
262 * | 262 * |
263 * @return | 263 * @return |
264 * - PP_OK: The request to quit was successfully posted. | 264 * - PP_OK: The request to quit was successfully posted. |
265 * - PP_ERROR_BADRESOURCE: The message loop was invalid. | 265 * - PP_ERROR_BADRESOURCE: The message loop was invalid. |
266 * - PP_ERROR_WRONG_THREAD: You are attempting to quit the main thread. | 266 * - PP_ERROR_WRONG_THREAD: You are attempting to quit the main thread. |
267 * The main thread's message loop is managed by the system and can't be | 267 * The main thread's message loop is managed by the system and can't be |
268 * quit. | 268 * quit. |
269 */ | 269 */ |
270 int32_t PostQuit([in] PP_Resource message_loop, PP_Bool should_destroy); | 270 int32_t PostQuit([in] PP_Resource message_loop, PP_Bool should_destroy); |
271 }; | 271 }; |
OLD | NEW |