1
0

reference-libobs-callback.rst 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305
  1. Callback API Reference (libobs/callback)
  2. ========================================
  3. Calldata
  4. --------
  5. The :c:type:`calldata_t` object is used to pass parameters from signal
  6. handlers or to procedure handlers.
  7. .. type:: calldata_t
  8. ---------------------
  9. .. function:: void calldata_init(calldata_t *data)
  10. Initializes a calldata structure (zeroes it).
  11. :param data: Calldata structure
  12. ---------------------
  13. .. function:: void calldata_free(calldata_t *data)
  14. Frees a calldata structure. Should only be used if :c:func:`calldata_init()`
  15. was used. If the object is received as a callback parameter, this function
  16. should not be used.
  17. :param data: Calldata structure
  18. ---------------------
  19. .. function:: void calldata_set_int(calldata_t *data, const char *name, long long val)
  20. Sets an integer parameter.
  21. :param data: Calldata structure
  22. :param name: Parameter name
  23. :param val: Integer value
  24. ---------------------
  25. .. function:: void calldata_set_float(calldata_t *data, const char *name, double val)
  26. Sets a floating point parameter.
  27. :param data: Calldata structure
  28. :param name: Parameter name
  29. :param val: Floating point value
  30. ---------------------
  31. .. function:: void calldata_set_bool(calldata_t *data, const char *name, bool val)
  32. Sets a boolean parameter.
  33. :param data: Calldata structure
  34. :param name: Parameter name
  35. :param val: Boolean value
  36. ---------------------
  37. .. function:: void calldata_set_ptr(calldata_t *data, const char *name, void *ptr)
  38. Sets a pointer parameter.
  39. :param data: Calldata structure
  40. :param name: Parameter name
  41. :param val: Pointer value
  42. ---------------------
  43. .. function:: void calldata_set_string(calldata_t *data, const char *name, const char *str)
  44. Sets a string parameter.
  45. :param data: Calldata structure
  46. :param name: Parameter name
  47. :param val: String
  48. ---------------------
  49. .. function:: long long calldata_int(const calldata_t *data, const char *name)
  50. Gets an integer parameter.
  51. :param data: Calldata structure
  52. :param name: Parameter name
  53. :return: Integer value
  54. ---------------------
  55. .. function:: double calldata_float(const calldata_t *data, const char *name)
  56. Gets a floating point parameter.
  57. :param data: Calldata structure
  58. :param name: Parameter name
  59. :return: Floating point value
  60. ---------------------
  61. .. function:: bool calldata_bool(const calldata_t *data, const char *name)
  62. Gets a boolean parameter.
  63. :param data: Calldata structure
  64. :param name: Parameter name
  65. :return: Boolean value
  66. ---------------------
  67. .. function:: void *calldata_ptr(const calldata_t *data, const char *name)
  68. Gets a pointer parameter. For example, :ref:`core_signal_handler_reference`
  69. that have ``ptr source`` as a parameter requires this function to get the
  70. pointer, which can be casted to :c:type:`obs_source_t`. Does not have to be freed.
  71. :param data: Calldata structure
  72. :param name: Parameter name
  73. :return: Pointer value
  74. ---------------------
  75. .. function:: const char *calldata_string(const calldata_t *data, const char *name)
  76. Gets a string parameter.
  77. :param data: Calldata structure
  78. :param name: Parameter name
  79. :return: String value
  80. ---------------------
  81. Signals
  82. -------
  83. Signals are used for all event-based callbacks.
  84. .. code:: cpp
  85. #include <callback/signal.h>
  86. .. type:: signal_handler_t
  87. ---------------------
  88. .. type:: void (*signal_callback_t)(void *data, calldata_t *cd)
  89. Signal callback.
  90. :param data: Private data passed to this callback
  91. :param cd: Calldata object
  92. ---------------------
  93. .. function:: signal_handler_t *signal_handler_create(void)
  94. Creates a new signal handler object.
  95. :return: A new signal handler object
  96. ---------------------
  97. .. function:: void signal_handler_destroy(signal_handler_t *handler)
  98. Destroys a signal handler.
  99. :param handler: Signal handler object
  100. ---------------------
  101. .. function:: bool signal_handler_add(signal_handler_t *handler, const char *signal_decl)
  102. Adds a signal to a signal handler.
  103. :param handler: Signal handler object
  104. :param signal_decl: Signal declaration string
  105. ---------------------
  106. .. function:: bool signal_handler_add_array(signal_handler_t *handler, const char **signal_decls)
  107. Adds multiple signals to a signal handler.
  108. :param handler: Signal handler object
  109. :param signal_decls: An array of signal declaration strings,
  110. terminated by *NULL*
  111. ---------------------
  112. .. function:: void signal_handler_connect(signal_handler_t *handler, const char *signal, signal_callback_t callback, void *data)
  113. Connects a callback to a signal on a signal handler. Does nothing
  114. if the combination of ``signal``, ``callback``, and ``data``
  115. is already connected to the handler.
  116. :param handler: Signal handler object
  117. :param signal: Name of signal to handle
  118. :param callback: Signal callback
  119. :param data: Private data passed to the callback
  120. For scripting, use :py:func:`signal_handler_connect`.
  121. ---------------------
  122. .. function:: void signal_handler_connect_ref(signal_handler_t *handler, const char *signal, signal_callback_t callback, void *data)
  123. Connects a callback to a signal on a signal handler, and increments
  124. the handler's internal reference counter, preventing it from being
  125. destroyed until the signal has been disconnected. Even if the combination of
  126. ``signal``, ``callback``, and ``data`` is already connected to the handler,
  127. the reference counter is still incremented.
  128. :param handler: Signal handler object
  129. :param signal: Name of signal to handle
  130. :param callback: Signal callback
  131. :param data: Private data passed to the callback
  132. ---------------------
  133. .. function:: void signal_handler_disconnect(signal_handler_t *handler, const char *signal, signal_callback_t callback, void *data)
  134. Disconnects a callback from a signal on a signal handler. Does nothing
  135. if the combination of ``signal``, ``callback``, and ``data``
  136. is not yet connected to the handler.
  137. :param handler: Signal handler object
  138. :param signal: Name of signal that was handled
  139. :param callback: Signal callback
  140. :param data: Private data passed to the callback
  141. For scripting, use :py:func:`signal_handler_disconnect`.
  142. ---------------------
  143. .. function:: void signal_handler_signal(signal_handler_t *handler, const char *signal, calldata_t *params)
  144. Triggers a signal, calling all connected callbacks.
  145. :param handler: Signal handler object
  146. :param signal: Name of signal to trigger
  147. :param params: Parameters to pass to the signal
  148. ---------------------
  149. Procedure Handlers
  150. ------------------
  151. Procedure handlers are used to call functions without having to have
  152. direct access to declarations or callback pointers.
  153. .. code:: cpp
  154. #include <callback/proc.h>
  155. .. type:: proc_handler_t
  156. ---------------------
  157. .. type:: void (*proc_handler_proc_t)(void *data, calldata_t *cd)
  158. Procedure handler callback.
  159. :param data: Private data passed to this callback
  160. :param cd: Calldata object
  161. ---------------------
  162. .. function:: proc_handler_t *proc_handler_create(void)
  163. Creates a new procedure handler.
  164. :return: A new procedure handler object
  165. ---------------------
  166. .. function:: void proc_handler_destroy(proc_handler_t *handler)
  167. Destroys a procedure handler object.
  168. :param handler: Procedure handler object
  169. ---------------------
  170. .. function:: void proc_handler_add(proc_handler_t *handler, const char *decl_string, proc_handler_proc_t proc, void *data)
  171. Adds a procedure to a procedure handler.
  172. :param handler: Procedure handler object
  173. :param decl_string: Procedure declaration string
  174. :param proc: Procedure callback
  175. :param data: Private data to pass to the callback
  176. ---------------------
  177. .. function:: bool proc_handler_call(proc_handler_t *handler, const char *name, calldata_t *params)
  178. Calls a procedure within the procedure handler.
  179. :param handler: Procedure handler object
  180. :param name: Name of procedure to call
  181. :param params: Calldata structure to pass to the procedure