[polypaudio-commits] r550 - /trunk/src/utils/pacat.c

svnmailer-noreply at 0pointer.de svnmailer-noreply at 0pointer.de
Mon Feb 20 17:22:43 PST 2006


Author: lennart
Date: Tue Feb 21 02:22:42 2006
New Revision: 550

URL: http://0pointer.de/cgi-bin/viewcvs.cgi?rev=550&root=polypaudio&view=rev
Log:
fix pacat

Modified:
    trunk/src/utils/pacat.c

Modified: trunk/src/utils/pacat.c
URL: http://0pointer.de/cgi-bin/viewcvs.cgi/trunk/src/utils/pacat.c?rev=550&root=polypaudio&r1=549&r2=550&view=diff
==============================================================================
--- trunk/src/utils/pacat.c (original)
+++ trunk/src/utils/pacat.c Tue Feb 21 02:22:42 2006
@@ -80,7 +80,12 @@
     if (l > buffer_length)
         l = buffer_length;
     
-    pa_stream_write(stream, (uint8_t*) buffer + buffer_index, l, NULL, 0, PA_SEEK_RELATIVE);
+    if (pa_stream_write(stream, (uint8_t*) buffer + buffer_index, l, NULL, 0, PA_SEEK_RELATIVE) < 0) {
+        fprintf(stderr, "pa_stream_write() failed: %s\n", pa_strerror(pa_context_errno(context)));
+        quit(1);
+        return;
+    }
+    
     buffer_length -= l;
     buffer_index += l;
     
@@ -112,12 +117,20 @@
     if (stdio_event)
         mainloop_api->io_enable(stdio_event, PA_IO_EVENT_OUTPUT);
 
-    pa_stream_peek(s, &data, &length);
+    if (pa_stream_peek(s, &data, &length) < 0) {
+        fprintf(stderr, "pa_stream_peek() failed: %s\n", pa_strerror(pa_context_errno(context)));
+        quit(1);
+        return;
+    }
+    
     assert(data && length);
 
     if (buffer) {
         fprintf(stderr, "Buffer overrun, dropping incoming data\n");
-        pa_stream_drop(s);
+        if (pa_stream_drop(s) < 0) {
+            fprintf(stderr, "pa_stream_drop() failed: %s\n", pa_strerror(pa_context_errno(context)));
+            quit(1);
+        }
         return;
     }
 
@@ -159,15 +172,18 @@
         case PA_CONTEXT_SETTING_NAME:
             break;
         
-        case PA_CONTEXT_READY:
+        case PA_CONTEXT_READY: {
+            int r;
             
             assert(c && !stream);
 
             if (verbose)
                 fprintf(stderr, "Connection established.\n");
 
-            stream = pa_stream_new(c, stream_name, &sample_spec, NULL);
-            assert(stream);
+            if (!(stream = pa_stream_new(c, stream_name, &sample_spec, NULL))) {
+                fprintf(stderr, "pa_stream_new() failed: %s\n", pa_strerror(pa_context_errno(c)));
+                goto fail;
+            }
 
             pa_stream_set_state_callback(stream, stream_state_callback, NULL);
             pa_stream_set_write_callback(stream, stream_write_callback, NULL);
@@ -175,11 +191,20 @@
 
             if (mode == PLAYBACK) {
                 pa_cvolume cv;
-                pa_stream_connect_playback(stream, device, NULL, 0, pa_cvolume_set(&cv, PA_CHANNELS_MAX, volume), NULL);
-            } else
-                pa_stream_connect_record(stream, device, NULL, 0);
+                if ((r = pa_stream_connect_playback(stream, device, NULL, 0, pa_cvolume_set(&cv, sample_spec.channels, volume), NULL)) < 0) {
+                    fprintf(stderr, "pa_stream_connect_playback() failed: %s\n", pa_strerror(pa_context_errno(c)));
+                    goto fail;
+                }
+                    
+            } else {
+                if ((r = pa_stream_connect_record(stream, device, NULL, 0)) < 0) {
+                    fprintf(stderr, "pa_stream_connect_record() failed: %s\n", pa_strerror(pa_context_errno(c)));
+                    goto fail;
+                }
+            }
                 
             break;
+        }
             
         case PA_CONTEXT_TERMINATED:
             quit(0);
@@ -188,8 +213,14 @@
         case PA_CONTEXT_FAILED:
         default:
             fprintf(stderr, "Connection failure: %s\n", pa_strerror(pa_context_errno(c)));
-            quit(1);
-    }
+            goto fail;
+    }
+
+    return;
+    
+fail:
+    quit(1);
+    
 }
 
 /* Connection draining complete */
@@ -216,8 +247,6 @@
     if (!(o = pa_context_drain(context, context_drain_complete, NULL)))
         pa_context_disconnect(context);
     else {
-        pa_operation_unref(o);
-
         if (verbose)
             fprintf(stderr, "Draining connection to server.\n");
     }
@@ -241,9 +270,18 @@
     assert(buffer);
     if ((r = read(fd, buffer, l)) <= 0) {
         if (r == 0) {
+            pa_operation *o;
+            
             if (verbose)
                 fprintf(stderr, "Got EOF.\n");
-            pa_operation_unref(pa_stream_drain(stream, stream_drain_complete, NULL));
+            
+            if (!(o = pa_stream_drain(stream, stream_drain_complete, NULL))) {
+                fprintf(stderr, "pa_stream_drain(): %s\n", pa_strerror(pa_context_errno(context)));
+                quit(1);
+                return;
+            }
+
+            pa_operation_unref(o);
         } else {
             fprintf(stderr, "read() failed: %s\n", strerror(errno));
             quit(1);




More information about the pulseaudio-commits mailing list