Revision 44a095a7

b/audio/ossaudio.c
370 370
        if (oss->pcm_buf == MAP_FAILED) {
371 371
            dolog ("Failed to mmap OSS device\nReason: %s\n",
372 372
                   errstr ());
373
        } else for (;;) {
373
        } else {
374 374
            int err;
375 375
            int trig = 0;
376 376
            if (ioctl (oss->fd, SNDCTL_DSP_SETTRIGGER, &trig) < 0) {
377 377
                dolog ("SNDCTL_DSP_SETTRIGGER 0 failed\nReason: %s\n",
378 378
                       errstr ());
379
                goto fail;
380 379
            }
381

  
382
            trig = PCM_ENABLE_OUTPUT;
383
            if (ioctl (oss->fd, SNDCTL_DSP_SETTRIGGER, &trig) < 0) {
384
                dolog ("SNDCTL_DSP_SETTRIGGER PCM_ENABLE_OUTPUT failed\n"
385
                       "Reason: %s\n", errstr ());
386
                goto fail;
380
            else {
381
                trig = PCM_ENABLE_OUTPUT;
382
                if (ioctl (oss->fd, SNDCTL_DSP_SETTRIGGER, &trig) < 0) {
383
                    dolog ("SNDCTL_DSP_SETTRIGGER PCM_ENABLE_OUTPUT failed\n"
384
                           "Reason: %s\n", errstr ());
385
                }
386
                else {
387
                    oss->mmapped = 1;
388
                }
387 389
            }
388
            oss->mmapped = 1;
389
            break;
390 390

  
391
        fail:
392
            err = munmap (oss->pcm_buf, hw->bufsize);
393
            if (err) {
394
                dolog ("Failed to unmap OSS device\nReason: %s\n",
395
                       errstr ());
391
            if (!oss->mmapped) {
392
                err = munmap (oss->pcm_buf, hw->bufsize);
393
                if (err) {
394
                    dolog ("Failed to unmap OSS device\nReason: %s\n",
395
                           errstr ());
396
                }
396 397
            }
397 398
        }
398 399
    }

Also available in: Unified diff