libobs/callback: Add signal reference counting
Adds a simple signal reference counting function (signal_handler_connect_ref) that makes it so that signals keep the handler around until the all the signal itself is disconnected. This prevents potential crashes where a signal might try to disconnect after a handler has already been destroyed (typically in C++ with OBSSignalHandler helper objects, where destruction isn't guaranteed to be predictable). This also modifies OBSSignalHandler to use the reference-counting connections.
This commit is contained in:
@@ -196,6 +196,18 @@ Signals are used for all event-based callbacks.
|
||||
|
||||
---------------------
|
||||
|
||||
.. function:: 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.
|
||||
|
||||
:param handler: Signal handler object
|
||||
:param callback: Signal callback
|
||||
:param data: Private data passed the callback
|
||||
|
||||
---------------------
|
||||
|
||||
.. function:: 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.
|
||||
|
Reference in New Issue
Block a user