diff options
Diffstat (limited to 'recordmydesktop/src/register_callbacks.c')
-rw-r--r-- | recordmydesktop/src/register_callbacks.c | 28 |
1 files changed, 16 insertions, 12 deletions
diff --git a/recordmydesktop/src/register_callbacks.c b/recordmydesktop/src/register_callbacks.c index c16f7b1..3371673 100644 --- a/recordmydesktop/src/register_callbacks.c +++ b/recordmydesktop/src/register_callbacks.c @@ -32,36 +32,40 @@ // There seem to be no way of passing user data to the signal handler, // so hack around not being able to pass ProgData to them -static int *pdata_running = NULL; +static int *pdata_running = NULL; +static int *pdata_paused = NULL; +static int *pdata_aborted = NULL; +static int *pdata_pause_state_changed = NULL; static void SetPaused(int signum) { - PauseStateChanged = 1; + *pdata_pause_state_changed = 1; } static void SetRunning(int signum) { - - if (!Paused){ - if (pdata_running != NULL) { - *pdata_running = 0; - } + if (!*pdata_paused) { + + *pdata_running = 0; if (signum == SIGABRT) { - Aborted = 1; + *pdata_aborted = 1; } } } -void RegisterCallbacks(ProgData *pata) { +void RegisterCallbacks(ProgData *pdata) { struct sigaction pause_act; struct sigaction end_act; - // Is there some way to pass pata to the signal handlers? - pdata_running = &pata->running; - + // Is there some way to pass pdata to the signal handlers? + pdata_running = &pdata->running; + pdata_paused = &pdata->paused; + pdata_aborted = &pdata->aborted; + pdata_pause_state_changed = &pdata->pause_state_changed; + // Setup pause_act sigfillset(&pause_act.sa_mask); pause_act.sa_flags = SA_RESTART; |