]> code.delx.au - pulseaudio/blobdiff - polyp/module-oss.c
add support for automatic termination of the daemon after the last client quit
[pulseaudio] / polyp / module-oss.c
index 403716fd8aa5429cc84cc4fd38bae03f959b3045..4fd796245d659e446c5c86a88d10d255dc2b947c 100644 (file)
@@ -177,7 +177,7 @@ int pa_module_init(struct pa_core *c, struct pa_module*m) {
     int fd = -1;
     int nfrags, frag_size, in_frag_size, out_frag_size;
     int mode;
-    uint32_t record = 1, playback = 1;
+    int record = 1, playback = 1;
     struct pa_sample_spec ss;
     struct pa_modargs *ma = NULL;
     assert(c && m);
@@ -187,20 +187,21 @@ int pa_module_init(struct pa_core *c, struct pa_module*m) {
         goto fail;
     }
     
-    if (pa_modargs_get_value_u32(ma, "record", &record) < 0 || pa_modargs_get_value_u32(ma, "playback", &playback) < 0) {
+    if (pa_modargs_get_value_boolean(ma, "record", &record) < 0 || pa_modargs_get_value_boolean(ma, "playback", &playback) < 0) {
         fprintf(stderr, __FILE__": record= and playback= expect numeric argument.\n");
         goto fail;
     }
 
-    mode = (playback&&record) ? O_RDWR : (playback ? O_WRONLY : (record ? O_RDONLY : 0));
-    if (mode == 0) {
+    if (!playback && !record) {
         fprintf(stderr, __FILE__": neither playback nor record enabled for device.\n");
         goto fail;
     }
 
+    mode = (playback&&record) ? O_RDWR : (playback ? O_WRONLY : (record ? O_RDONLY : 0));
+    
     nfrags = 12;
     frag_size = 1024;
-    if (pa_modargs_get_value_u32(ma, "fragments", &nfrags) < 0 || nfrags < 2 || pa_modargs_get_value_u32(ma, "fragment_size", &frag_size) < 0 || frag_size < 1) {
+    if (pa_modargs_get_value_s32(ma, "fragments", &nfrags) < 0 || nfrags < 2 || pa_modargs_get_value_s32(ma, "fragment_size", &frag_size) < 0 || frag_size < 1) {
         fprintf(stderr, __FILE__": failed to parse fragments arguments\n");
         goto fail;
     }