Callback API Reference (libobs/callback)

Calldata

The calldata_t object is used to pass parameters from signal handlers or to procedure handlers.

type calldata_t

void calldata_init(calldata_t *data)

Initializes a calldata structure (zeroes it).

Parameters
  • data – Calldata structure


void calldata_free(calldata_t *data)

Frees a calldata structure.

Parameters
  • data – Calldata structure


void calldata_set_int(calldata_t *data, const char *name, long long val)

Sets an integer parameter.

Parameters
  • data – Calldata structure

  • name – Parameter name

  • val – Integer value


void calldata_set_float(calldata_t *data, const char *name, double val)

Sets a floating point parameter.

Parameters
  • data – Calldata structure

  • name – Parameter name

  • val – Floating point value


void calldata_set_bool(calldata_t *data, const char *name, bool val)

Sets a boolean parameter.

Parameters
  • data – Calldata structure

  • name – Parameter name

  • val – Boolean value


void calldata_set_ptr(calldata_t *data, const char *name, void *ptr)

Sets a pointer parameter.

Parameters
  • data – Calldata structure

  • name – Parameter name

  • val – Pointer value


void calldata_set_string(calldata_t *data, const char *name, const char *str)

Sets a string parameter.

Parameters
  • data – Calldata structure

  • name – Parameter name

  • val – String


long long calldata_int(const calldata_t *data, const char *name)

Gets an integer parameter.

Parameters
  • data – Calldata structure

  • name – Parameter name

Returns

Integer value


double calldata_float(const calldata_t *data, const char *name)

Gets a floating point parameter.

Parameters
  • data – Calldata structure

  • name – Parameter name

Returns

Floating point value


bool calldata_bool(const calldata_t *data, const char *name)

Gets a boolean parameter.

Parameters
  • data – Calldata structure

  • name – Parameter name

Returns

Boolean value


void *calldata_ptr(const calldata_t *data, const char *name)

Gets a pointer parameter.

Parameters
  • data – Calldata structure

  • name – Parameter name

Returns

Pointer value


const char *calldata_string(const calldata_t *data, const char *name)

Gets a string parameter.

Parameters
  • data – Calldata structure

  • name – Parameter name

Returns

String value


Signals

Signals are used for all event-based callbacks.

#include <callback/signal.h>
type signal_handler_t

typedef void (*signal_callback_t)(void *data, calldata_t *cd)

Signal callback.

Param data

Private data passed to this callback

Param cd

Calldata object


signal_handler_t *signal_handler_create(void)

Creates a new signal handler object.

Returns

A new signal handler object


void signal_handler_destroy(signal_handler_t *handler)

Destroys a signal handler.

Parameters
  • handler – Signal handler object


bool signal_handler_add(signal_handler_t *handler, const char *signal_decl)

Adds a signal to a signal handler.

Parameters
  • handler – Signal handler object

  • signal_decl – Signal declaration string


bool signal_handler_add_array(signal_handler_t *handler, const char **signal_decls)

Adds multiple signals to a signal handler.

Parameters
  • handler – Signal handler object

  • signal_decls – An array of signal declaration strings, terminated by NULL


void signal_handler_connect(signal_handler_t *handler, const char *signal, signal_callback_t callback, void *data)

Connect a callback to a signal on a signal handler.

Parameters
  • handler – Signal handler object

  • callback – Signal callback

  • data – Private data passed the callback


void signal_handler_connect_ref(signal_handler_t *handler, const char *signal, signal_callback_t callback, void *data)

Connect a callback to a signal on a signal handler, and increments the handler’s internal reference counter, preventing it from being destroyed until the signal has been disconnected.

Parameters
  • handler – Signal handler object

  • callback – Signal callback

  • data – Private data passed the callback


void signal_handler_disconnect(signal_handler_t *handler, const char *signal, signal_callback_t callback, void *data)

Disconnects a callback from a signal on a signal handler.

Parameters
  • handler – Signal handler object

  • callback – Signal callback

  • data – Private data passed the callback


void signal_handler_signal(signal_handler_t *handler, const char *signal, calldata_t *params)

Triggers a signal, calling all connected callbacks.

Parameters
  • handler – Signal handler object

  • signal – Name of signal to trigger

  • params – Parameters to pass to the signal


Procedure Handlers

Procedure handlers are used to call functions without having to have direct access to declarations or callback pointers.

#include <callback/proc.h>
type proc_handler_t

typedef void (*proc_handler_proc_t)(void *data, calldata_t *cd)

Procedure handler callback.

Param data

Private data passed to this callback

Param cd

Calldata object


proc_handler_t *proc_handler_create(void)

Creates a new procedure handler.

Returns

A new procedure handler object


void proc_handler_destroy(proc_handler_t *handler)

Destroys a procedure handler object.

Parameters
  • handler – Procedure handler object


void proc_handler_add(proc_handler_t *handler, const char *decl_string, proc_handler_proc_t proc, void *data)

Adds a procedure to a procedure handler.

Parameters
  • handler – Procedure handler object

  • decl_string – Procedure declaration string

  • proc – Procedure callback

  • data – Private data to pass to the callback


bool proc_handler_call(proc_handler_t *handler, const char *name, calldata_t *params)

Calls a procedure within the procedure handler.

Parameters
  • handler – Procedure handler object

  • name – Name of procedure to call

  • params – Calldata structure to pass to the procedure