diff options
| -rw-r--r-- | audio/pcm_bluetooth.c | 8 | 
1 files changed, 7 insertions, 1 deletions
| diff --git a/audio/pcm_bluetooth.c b/audio/pcm_bluetooth.c index 893a234c..cb440166 100644 --- a/audio/pcm_bluetooth.c +++ b/audio/pcm_bluetooth.c @@ -167,12 +167,17 @@ static void *playback_hw_thread(void *param)  	double period_time;  	struct timeval start;  	struct pollfd fds[2]; +	int poll_timeout;  	fds[0] = data->server;  	fds[1] = data->stream;  	prev_periods = 0;  	period_time = 1000000.0 * data->io.period_size / data->io.rate; +	if (period_time > (int) (MIN_PERIOD_TIME * 1000)) +		poll_timeout = (int) (period_time / 1000.0f); +	else +		poll_timeout = MIN_PERIOD_TIME;  	gettimeofday(&start, 0); @@ -213,7 +218,8 @@ static void *playback_hw_thread(void *param)  		}  iter_sleep: -		ret = poll(fds, 2, MIN_PERIOD_TIME); +		/* sleep up to one period interval */ +		ret = poll(fds, 2, poll_timeout);  		if (ret < 0) {  			SNDERR("poll error: %s (%d)", strerror(errno), errno);  			if (errno != EINTR) | 
