X-Git-Url: https://git.distorted.org.uk/~mdw/disorder/blobdiff_plain/b28bddbb2d2b2f07364153df3b980605d9caa9d9..e18c4734744e56b738ca2918dffe071f95f4c14b:/clients/playrtp.c diff --git a/clients/playrtp.c b/clients/playrtp.c index 54107da..31416ec 100644 --- a/clients/playrtp.c +++ b/clients/playrtp.c @@ -1,6 +1,6 @@ /* * This file is part of DisOrder. - * Copyright (C) 2007 Richard Kettlewell + * Copyright (C) 2007, 2008 Richard Kettlewell * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -85,6 +85,7 @@ #include "client.h" #include "playrtp.h" #include "inputline.h" +#include "version.h" #define readahead linux_headers_are_borked @@ -329,8 +330,9 @@ static void *queue_thread(void attribute((unused)) *arg) { for(;;) { /* Get the next packet */ pthread_mutex_lock(&receive_lock); - while(!received_packets) + while(!received_packets) { pthread_cond_wait(&receive_cond, &receive_lock); + } p = received_packets; received_packets = p->next; if(!received_packets) @@ -428,8 +430,9 @@ static void *listen_thread(void attribute((unused)) *arg) { * out of order then we guarantee dropouts. But for now... */ if(nsamples >= maxbuffer) { pthread_mutex_lock(&lock); - while(nsamples >= maxbuffer) + while(nsamples >= maxbuffer) { pthread_cond_wait(&cond, &lock); + } pthread_mutex_unlock(&lock); } /* Add the packet to the receive queue */ @@ -452,8 +455,9 @@ void playrtp_fill_buffer(void) { while(nsamples) drop_first_packet(); info("Buffering..."); - while(nsamples < readahead) + while(nsamples < readahead) { pthread_cond_wait(&cond, &lock); + } next_timestamp = pheap_first(&packets)->timestamp; active = 1; } @@ -531,13 +535,6 @@ static void help(void) { exit(0); } -/* display version number and terminate */ -static void version(void) { - xprintf("disorder-playrtp version %s\n", disorder_version_string); - xfclose(stdout); - exit(0); -} - int main(int argc, char **argv) { int n, err; struct addrinfo *res; @@ -574,7 +571,7 @@ int main(int argc, char **argv) { while((n = getopt_long(argc, argv, "hVdD:m:b:x:L:R:M:aocC:r", options, 0)) >= 0) { switch(n) { case 'h': help(); - case 'V': version(); + case 'V': version("disorder-playrtp"); case 'd': debugging = 1; break; case 'D': device = optarg; break; case 'm': minbuffer = 2 * atol(optarg); break;