diff options
Diffstat (limited to 'src/core/signals.h')
-rw-r--r-- | src/core/signals.h | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/core/signals.h b/src/core/signals.h new file mode 100644 index 00000000..613aa245 --- /dev/null +++ b/src/core/signals.h @@ -0,0 +1,30 @@ +#ifndef __SIGNAL_H +#define __SIGNAL_H + +typedef void (*SIGNAL_FUNC) (gconstpointer, gconstpointer, gconstpointer, gconstpointer, gconstpointer, gconstpointer, gconstpointer); + +void signals_init(void); +void signals_deinit(void); + +/* bind a signal */ +void signal_add_to(const char *module, int pos, const char *signal, SIGNAL_FUNC func); +#define signal_add(a, b) signal_add_to(MODULE_NAME, 1, a, b) +#define signal_add_first(a, b) signal_add_to(MODULE_NAME, 0, a, b) +#define signal_add_last(a, b) signal_add_to(MODULE_NAME, 2, a, b) + +/* unbind signal */ +void signal_remove(const char *signal, SIGNAL_FUNC func); + +/* emit signal */ +int signal_emit(const char *signal, int params, ...); +int signal_emit_id(int signal_id, int params, ...); + +/* stop the current ongoing signal emission */ +void signal_stop(void); +/* stop ongoing signal emission by signal name */ +void signal_stop_by_name(const char *signal); + +/* remove all signals that belong to `module' */ +void signals_remove_module(const char *module); + +#endif |