mirror of https://github.com/mpv-player/mpv
client API: be more explicit about what can be done in wakeup callbacks
Don't leave any room for interpretation.
This commit is contained in:
parent
11f5713e3b
commit
9e64b93822
|
@ -1588,11 +1588,19 @@ void mpv_wakeup(mpv_handle *ctx);
|
|||
*
|
||||
* Keep in mind that the callback will be called from foreign threads. You
|
||||
* must not make any assumptions of the environment, and you must return as
|
||||
* soon as possible. You are not allowed to call any client API functions
|
||||
* inside of the callback. In particular, you should not do any processing in
|
||||
* the callback, but wake up another thread that does all the work. It's also
|
||||
* possible that the callback is called from a thread while a mpv API function
|
||||
* is called (i.e. it can be reentrant).
|
||||
* soon as possible (i.e. no long blocking waits). Exiting the callback through
|
||||
* any other means than a normal return is forbidden (no throwing exceptions,
|
||||
* no longjmp() calls). You must not change any local thread state (such as
|
||||
* the C floating point environment).
|
||||
*
|
||||
* You are not allowed to call any client API functions inside of the callback.
|
||||
* In particular, you should not do any processing in the callback, but wake up
|
||||
* another thread that does all the work. The callback is meant strictly for
|
||||
* notification only, and is called from arbitrary core parts of the player,
|
||||
* that make no considerations for reentrant API use or allowing the callee to
|
||||
* spend a lot of time doing other things. Keep in mind that it's also possible
|
||||
* that the callback is called from a thread while a mpv API function is called
|
||||
* (i.e. it can be reentrant).
|
||||
*
|
||||
* In general, the client API expects you to call mpv_wait_event() to receive
|
||||
* notifications, and the wakeup callback is merely a helper utility to make
|
||||
|
|
|
@ -252,7 +252,8 @@ typedef void *(*mpv_opengl_cb_get_proc_address_fn)(void *fn_ctx, const char *nam
|
|||
* Set the callback that notifies you when a new video frame is available, or
|
||||
* if the video display configuration somehow changed and requires a redraw.
|
||||
* Similar to mpv_set_wakeup_callback(), you must not call any mpv API from
|
||||
* the callback.
|
||||
* the callback, and all the other listed restrictions apply (such as not
|
||||
* exiting the callback by throwing exceptions).
|
||||
*
|
||||
* @param callback callback(callback_ctx) is called if the frame should be
|
||||
* redrawn
|
||||
|
|
Loading…
Reference in New Issue