153a5a1b3Sopenharmony_ci#ifndef foomainloopsignalhfoo 253a5a1b3Sopenharmony_ci#define foomainloopsignalhfoo 353a5a1b3Sopenharmony_ci 453a5a1b3Sopenharmony_ci/*** 553a5a1b3Sopenharmony_ci This file is part of PulseAudio. 653a5a1b3Sopenharmony_ci 753a5a1b3Sopenharmony_ci Copyright 2004-2008 Lennart Poettering 853a5a1b3Sopenharmony_ci Copyright 2006 Pierre Ossman <ossman@cendio.se> for Cendio AB 953a5a1b3Sopenharmony_ci 1053a5a1b3Sopenharmony_ci PulseAudio is free software; you can redistribute it and/or modify 1153a5a1b3Sopenharmony_ci it under the terms of the GNU Lesser General Public License as published 1253a5a1b3Sopenharmony_ci by the Free Software Foundation; either version 2.1 of the License, 1353a5a1b3Sopenharmony_ci or (at your option) any later version. 1453a5a1b3Sopenharmony_ci 1553a5a1b3Sopenharmony_ci PulseAudio is distributed in the hope that it will be useful, but 1653a5a1b3Sopenharmony_ci WITHOUT ANY WARRANTY; without even the implied warranty of 1753a5a1b3Sopenharmony_ci MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1853a5a1b3Sopenharmony_ci General Public License for more details. 1953a5a1b3Sopenharmony_ci 2053a5a1b3Sopenharmony_ci You should have received a copy of the GNU Lesser General Public License 2153a5a1b3Sopenharmony_ci along with PulseAudio; if not, see <http://www.gnu.org/licenses/>. 2253a5a1b3Sopenharmony_ci***/ 2353a5a1b3Sopenharmony_ci 2453a5a1b3Sopenharmony_ci#include <pulse/mainloop-api.h> 2553a5a1b3Sopenharmony_ci#include <pulse/cdecl.h> 2653a5a1b3Sopenharmony_ci 2753a5a1b3Sopenharmony_ciPA_C_DECL_BEGIN 2853a5a1b3Sopenharmony_ci 2953a5a1b3Sopenharmony_ci/** \file 3053a5a1b3Sopenharmony_ci * UNIX signal support for main loops. In contrast to other 3153a5a1b3Sopenharmony_ci * main loop event sources such as timer and IO events, UNIX signal 3253a5a1b3Sopenharmony_ci * support requires modification of the global process 3353a5a1b3Sopenharmony_ci * environment. Due to this the generic main loop abstraction layer as 3453a5a1b3Sopenharmony_ci * defined in \ref mainloop-api.h doesn't have direct support for UNIX 3553a5a1b3Sopenharmony_ci * signals. However, you may hook signal support into an abstract main loop via the routines defined herein. 3653a5a1b3Sopenharmony_ci */ 3753a5a1b3Sopenharmony_ci 3853a5a1b3Sopenharmony_ci/** An opaque UNIX signal event source object */ 3953a5a1b3Sopenharmony_citypedef struct pa_signal_event pa_signal_event; 4053a5a1b3Sopenharmony_ci 4153a5a1b3Sopenharmony_ci/** Callback prototype for signal events */ 4253a5a1b3Sopenharmony_citypedef void (*pa_signal_cb_t) (pa_mainloop_api *api, pa_signal_event*e, int sig, void *userdata); 4353a5a1b3Sopenharmony_ci 4453a5a1b3Sopenharmony_ci/** Destroy callback prototype for signal events */ 4553a5a1b3Sopenharmony_citypedef void (*pa_signal_destroy_cb_t) (pa_mainloop_api *api, pa_signal_event*e, void *userdata); 4653a5a1b3Sopenharmony_ci 4753a5a1b3Sopenharmony_ci/** Initialize the UNIX signal subsystem and bind it to the specified main loop */ 4853a5a1b3Sopenharmony_ciint pa_signal_init(pa_mainloop_api *api); 4953a5a1b3Sopenharmony_ci 5053a5a1b3Sopenharmony_ci/** Cleanup the signal subsystem */ 5153a5a1b3Sopenharmony_civoid pa_signal_done(void); 5253a5a1b3Sopenharmony_ci 5353a5a1b3Sopenharmony_ci/** Create a new UNIX signal event source object */ 5453a5a1b3Sopenharmony_cipa_signal_event* pa_signal_new(int sig, pa_signal_cb_t callback, void *userdata); 5553a5a1b3Sopenharmony_ci 5653a5a1b3Sopenharmony_ci/** Free a UNIX signal event source object */ 5753a5a1b3Sopenharmony_civoid pa_signal_free(pa_signal_event *e); 5853a5a1b3Sopenharmony_ci 5953a5a1b3Sopenharmony_ci/** Set a function that is called when the signal event source is destroyed. Use this to free the userdata argument if required */ 6053a5a1b3Sopenharmony_civoid pa_signal_set_destroy(pa_signal_event *e, pa_signal_destroy_cb_t callback); 6153a5a1b3Sopenharmony_ci 6253a5a1b3Sopenharmony_ciPA_C_DECL_END 6353a5a1b3Sopenharmony_ci 6453a5a1b3Sopenharmony_ci#endif 65