Author: titmuss
Date: Tue Jul  1 06:30:43 2008
New Revision: 2643

URL: http://svn.slimdevices.com?rev=2643&root=Jive&view=rev
Log:
Bug: 8561
Description:
Fix crasher when no audio device is detected.


Modified:
    7.2/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode.c
    7.2/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_portaudio.c
    7.2/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_priv.h

Modified: 7.2/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode.c
URL: 
http://svn.slimdevices.com/7.2/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode.c?rev=2643&root=Jive&r1=2642&r2=2643&view=diff
==============================================================================
--- 7.2/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode.c (original)
+++ 7.2/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode.c Tue Jul  1 
06:30:43 2008
@@ -550,7 +550,10 @@
 int luaopen_decode(lua_State *L) {
        /* initialise audio output */
        decode_audio = &decode_portaudio;
-       decode_audio->init();
+       if (!decode_audio->init()) {
+               DEBUG_ERROR("Failed to init audio");
+               return 0;
+       }
 
        fifo_init(&decode_fifo, DECODE_FIFO_SIZE);
 

Modified: 
7.2/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_portaudio.c
URL: 
http://svn.slimdevices.com/7.2/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_portaudio.c?rev=2643&root=Jive&r1=2642&r2=2643&view=diff
==============================================================================
--- 7.2/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_portaudio.c 
(original)
+++ 7.2/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_portaudio.c 
Tue Jul  1 06:30:43 2008
@@ -218,7 +218,7 @@
 }
 
 
-static void decode_portaudio_init(void) {
+static int decode_portaudio_init(void) {
        PaError err;
        int num_devices, i;
        const PaDeviceInfo *device_info;
@@ -253,13 +253,18 @@
                }
        }
 
+       if (i >= num_devices) {
+               /* no suitable audio device found */
+               return 0;
+       }
+
        /* high latency for robust playback */
        outputParam.suggestedLatency = 
Pa_GetDeviceInfo(outputParam.device)->defaultHighOutputLatency;
-       return;
+       return 1;
 
  err:
        DEBUG_ERROR("PA error %s", Pa_GetErrorText(err));
-       return;
+       return 0;
 }
 
 

Modified: 7.2/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_priv.h
URL: 
http://svn.slimdevices.com/7.2/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_priv.h?rev=2643&root=Jive&r1=2642&r2=2643&view=diff
==============================================================================
--- 7.2/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_priv.h 
(original)
+++ 7.2/trunk/squeezeplay/src/squeezeplay/src/audio/decode/decode_priv.h Tue 
Jul  1 06:30:43 2008
@@ -85,7 +85,7 @@
 
 /* Audio output api */
 struct decode_audio {
-       void (*init)(void);
+       int (*init)(void);
        void (*start)(void);
        void (*stop)(void);
 };

_______________________________________________
Jive-checkins mailing list
[email protected]
http://lists.slimdevices.com/cgi-bin/mailman/listinfo/jive-checkins

Reply via email to