reference-libobs-callback.rst 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288
  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.
  15. :param data: Calldata structure
  16. ---------------------
  17. .. function:: void calldata_set_int(calldata_t *data, const char *name, long long val)
  18. Sets an integer parameter.
  19. :param data: Calldata structure
  20. :param name: Parameter name
  21. :param val: Integer value
  22. ---------------------
  23. .. function:: void calldata_set_float(calldata_t *data, const char *name, double val)
  24. Sets a floating point parameter.
  25. :param data: Calldata structure
  26. :param name: Parameter name
  27. :param val: Floating point value
  28. ---------------------
  29. .. function:: void calldata_set_bool(calldata_t *data, const char *name, bool val)
  30. Sets a boolean parameter.
  31. :param data: Calldata structure
  32. :param name: Parameter name
  33. :param val: Boolean value
  34. ---------------------
  35. .. function:: void calldata_set_ptr(calldata_t *data, const char *name, void *ptr)
  36. Sets a pointer parameter.
  37. :param data: Calldata structure
  38. :param name: Parameter name
  39. :param val: Pointer value
  40. ---------------------
  41. .. function:: void calldata_set_string(calldata_t *data, const char *name, const char *str)
  42. Sets a string parameter.
  43. :param data: Calldata structure
  44. :param name: Parameter name
  45. :param val: String
  46. ---------------------
  47. .. function:: long long calldata_int(const calldata_t *data, const char *name)
  48. Gets an integer parameter.
  49. :param data: Calldata structure
  50. :param name: Parameter name
  51. :return: Integer value
  52. ---------------------
  53. .. function:: double calldata_float(const calldata_t *data, const char *name)
  54. Gets a floating point parameter.
  55. :param data: Calldata structure
  56. :param name: Parameter name
  57. :return: Floating point value
  58. ---------------------
  59. .. function:: bool calldata_bool(const calldata_t *data, const char *name)
  60. Gets a boolean parameter.
  61. :param data: Calldata structure
  62. :param name: Parameter name
  63. :return: Boolean value
  64. ---------------------
  65. .. function:: void *calldata_ptr(const calldata_t *data, const char *name)
  66. Gets a pointer parameter.
  67. :param data: Calldata structure
  68. :param name: Parameter name
  69. :return: Pointer value
  70. ---------------------
  71. .. function:: const char *calldata_string(const calldata_t *data, const char *name)
  72. Gets a string parameter.
  73. :param data: Calldata structure
  74. :param name: Parameter name
  75. :return: String value
  76. ---------------------
  77. Signals
  78. -------
  79. Signals are used for all event-based callbacks.
  80. .. code:: cpp
  81. #include <callback/signal.h>
  82. .. type:: signal_handler_t
  83. ---------------------
  84. .. type:: typedef void (*signal_callback_t)(void *data, calldata_t *cd)
  85. Signal callback.
  86. :param data: Private data passed to this callback
  87. :param cd: Calldata object
  88. ---------------------
  89. .. function:: signal_handler_t *signal_handler_create(void)
  90. Creates a new signal handler object.
  91. :return: A new signal handler object
  92. ---------------------
  93. .. function:: void signal_handler_destroy(signal_handler_t *handler)
  94. Destroys a signal handler.
  95. :param handler: Signal handler object
  96. ---------------------
  97. .. function:: bool signal_handler_add(signal_handler_t *handler, const char *signal_decl)
  98. Adds a signal to a signal handler.
  99. :param handler: Signal handler object
  100. :param signal_decl: Signal declaration string
  101. ---------------------
  102. .. function:: bool signal_handler_add_array(signal_handler_t *handler, const char **signal_decls)
  103. Adds multiple signals to a signal handler.
  104. :param handler: Signal handler object
  105. :param signal_decls: An array of signal declaration strings,
  106. terminated by *NULL*
  107. ---------------------
  108. .. function:: void signal_handler_connect(signal_handler_t *handler, const char *signal, signal_callback_t callback, void *data)
  109. Connect a callback to a signal on a signal handler.
  110. :param handler: Signal handler object
  111. :param callback: Signal callback
  112. :param data: Private data passed the callback
  113. ---------------------
  114. .. function:: void signal_handler_connect_ref(signal_handler_t *handler, const char *signal, signal_callback_t callback, void *data)
  115. Connect a callback to a signal on a signal handler, and increments
  116. the handler's internal reference counter, preventing it from being
  117. destroyed until the signal has been disconnected.
  118. :param handler: Signal handler object
  119. :param callback: Signal callback
  120. :param data: Private data passed the callback
  121. ---------------------
  122. .. function:: void signal_handler_disconnect(signal_handler_t *handler, const char *signal, signal_callback_t callback, void *data)
  123. Disconnects a callback from a signal on a signal handler.
  124. :param handler: Signal handler object
  125. :param callback: Signal callback
  126. :param data: Private data passed the callback
  127. ---------------------
  128. .. function:: void signal_handler_signal(signal_handler_t *handler, const char *signal, calldata_t *params)
  129. Triggers a signal, calling all connected callbacks.
  130. :param handler: Signal handler object
  131. :param signal: Name of signal to trigger
  132. :param params: Parameters to pass to the signal
  133. ---------------------
  134. Procedure Handlers
  135. ------------------
  136. Procedure handlers are used to call functions without having to have
  137. direct access to declarations or callback pointers.
  138. .. code:: cpp
  139. #include <callback/proc.h>
  140. .. type:: proc_handler_t
  141. ---------------------
  142. .. type:: typedef void (*proc_handler_proc_t)(void *data, calldata_t *cd)
  143. Procedure handler callback.
  144. :param data: Private data passed to this callback
  145. :param cd: Calldata object
  146. ---------------------
  147. .. function:: proc_handler_t *proc_handler_create(void)
  148. Creates a new procedure handler.
  149. :return: A new procedure handler object
  150. ---------------------
  151. .. function:: void proc_handler_destroy(proc_handler_t *handler)
  152. Destroys a procedure handler object.
  153. :param handler: Procedure handler object
  154. ---------------------
  155. .. function:: void proc_handler_add(proc_handler_t *handler, const char *decl_string, proc_handler_proc_t proc, void *data)
  156. Adds a procedure to a procedure handler.
  157. :param handler: Procedure handler object
  158. :param decl_string: Procedure declaration string
  159. :param proc: Procedure callback
  160. :param data: Private data to pass to the callback
  161. ---------------------
  162. .. function:: bool proc_handler_call(proc_handler_t *handler, const char *name, calldata_t *params)
  163. Calls a procedure within the procedure handler.
  164. :param handler: Procedure handler object
  165. :param name: Name of procedure to call
  166. :param params: Calldata structure to pass to the procedure