mirror of
				https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
				synced 2025-11-03 09:01:50 -05:00 
			
		
		
		
	if no timer was armed, we don't need to disarm it
git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/glitch-free@2296 fefdeb5f-60dc-0310-8127-8f9354f1896f
This commit is contained in:
		
							parent
							
								
									4a1971a535
								
							
						
					
					
						commit
						cdb077b6c0
					
				
					 1 changed files with 13 additions and 7 deletions
				
			
		| 
						 | 
					@ -71,6 +71,7 @@ struct pa_rtpoll {
 | 
				
			||||||
    int rtsig;
 | 
					    int rtsig;
 | 
				
			||||||
    sigset_t sigset_unblocked;
 | 
					    sigset_t sigset_unblocked;
 | 
				
			||||||
    timer_t timer;
 | 
					    timer_t timer;
 | 
				
			||||||
 | 
					    pa_bool_t timer_armed;
 | 
				
			||||||
#ifdef __linux__
 | 
					#ifdef __linux__
 | 
				
			||||||
    pa_bool_t dont_use_ppoll;
 | 
					    pa_bool_t dont_use_ppoll;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
| 
						 | 
					@ -130,6 +131,7 @@ pa_rtpoll *pa_rtpoll_new(void) {
 | 
				
			||||||
    p->rtsig = -1;
 | 
					    p->rtsig = -1;
 | 
				
			||||||
    sigemptyset(&p->sigset_unblocked);
 | 
					    sigemptyset(&p->sigset_unblocked);
 | 
				
			||||||
    p->timer = (timer_t) -1;
 | 
					    p->timer = (timer_t) -1;
 | 
				
			||||||
 | 
					    p->timer_armed = FALSE;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -465,6 +467,7 @@ static void update_timer(pa_rtpoll *p) {
 | 
				
			||||||
            struct timespec ts = { .tv_sec = 0, .tv_nsec = 0 };
 | 
					            struct timespec ts = { .tv_sec = 0, .tv_nsec = 0 };
 | 
				
			||||||
            sigset_t ss;
 | 
					            sigset_t ss;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (p->timer_armed) {
 | 
				
			||||||
                /* First disarm timer */
 | 
					                /* First disarm timer */
 | 
				
			||||||
                memset(&its, 0, sizeof(its));
 | 
					                memset(&its, 0, sizeof(its));
 | 
				
			||||||
                pa_assert_se(timer_settime(p->timer, TIMER_ABSTIME, &its, NULL) == 0);
 | 
					                pa_assert_se(timer_settime(p->timer, TIMER_ABSTIME, &its, NULL) == 0);
 | 
				
			||||||
| 
						 | 
					@ -473,6 +476,7 @@ static void update_timer(pa_rtpoll *p) {
 | 
				
			||||||
                pa_assert_se(sigemptyset(&ss) == 0);
 | 
					                pa_assert_se(sigemptyset(&ss) == 0);
 | 
				
			||||||
                pa_assert_se(sigaddset(&ss, p->rtsig) == 0);
 | 
					                pa_assert_se(sigaddset(&ss, p->rtsig) == 0);
 | 
				
			||||||
                sigtimedwait(&ss, NULL, &ts);
 | 
					                sigtimedwait(&ss, NULL, &ts);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            /* And install the new timer */
 | 
					            /* And install the new timer */
 | 
				
			||||||
            if (p->timer_enabled) {
 | 
					            if (p->timer_enabled) {
 | 
				
			||||||
| 
						 | 
					@ -487,6 +491,8 @@ static void update_timer(pa_rtpoll *p) {
 | 
				
			||||||
                    its.it_value.tv_nsec = 1;
 | 
					                    its.it_value.tv_nsec = 1;
 | 
				
			||||||
                pa_assert_se(timer_settime(p->timer, TIMER_ABSTIME, &its, NULL) == 0);
 | 
					                pa_assert_se(timer_settime(p->timer, TIMER_ABSTIME, &its, NULL) == 0);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            p->timer_armed = p->timer_enabled;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef __linux__
 | 
					#ifdef __linux__
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue