diff options
Diffstat (limited to 'recordmydesktop/src/register_callbacks.c')
-rw-r--r-- | recordmydesktop/src/register_callbacks.c | 41 |
1 files changed, 2 insertions, 39 deletions
diff --git a/recordmydesktop/src/register_callbacks.c b/recordmydesktop/src/register_callbacks.c index 8db5d5d..cd6efe4 100644 --- a/recordmydesktop/src/register_callbacks.c +++ b/recordmydesktop/src/register_callbacks.c @@ -26,25 +26,6 @@ #include <recordmydesktop.h> -void SetExpired(int signum){ - if(!Paused){ - frames_total++; - if(capture_busy){ - frames_lost++; - } -/*FIXME */ -//This is not safe. -//cond_var signaling must move away from signal handlers -//alltogether (JackCapture, SetExpired, SetPaused). -//Better would be a set of pipes for each of these. -//The callback should write on the pipe and the main thread -//should perform a select over the fd's, signaling afterwards the -//appropriate cond_var. - pthread_mutex_lock(&time_mutex); - pthread_cond_broadcast(time_cond); - pthread_mutex_unlock(&time_mutex); - } -} void SetPaused(int signum){ if(!Paused){ @@ -75,34 +56,16 @@ void SetRunning(int signum){ Aborted=1; } -void CancelTimer(void){ - struct itimerval value; - value.it_interval.tv_sec= - value.it_value.tv_sec= - value.it_interval.tv_usec= - value.it_value.tv_usec=0; - - setitimer(ITIMER_REAL,&value,NULL); -} void RegisterCallbacks(ProgArgs *args){ - struct itimerval value; - struct sigaction time_act,pause_act,end_act; - + struct sigaction pause_act,end_act; - value.it_interval.tv_sec=value.it_value.tv_sec=1/args->fps; - value.it_interval.tv_usec=value.it_value.tv_usec=(1000000)/args->fps-value.it_value.tv_sec*1000000; - - setitimer(ITIMER_REAL,&value,NULL); - time_act.sa_handler=SetExpired; pause_act.sa_handler=SetPaused; end_act.sa_handler=SetRunning; - sigfillset(&(time_act.sa_mask)); sigfillset(&(pause_act.sa_mask)); sigfillset(&(end_act.sa_mask)); - time_act.sa_flags=pause_act.sa_flags=end_act.sa_flags=0; - sigaction(SIGALRM,&time_act,NULL); + pause_act.sa_flags=end_act.sa_flags=0; sigaction(SIGUSR1,&pause_act,NULL); sigaction(SIGINT,&end_act,NULL); sigaction(SIGTERM,&end_act,NULL); |