Ticket #26: pulseaudio-0.9.5-suspend.patch

File pulseaudio-0.9.5-suspend.patch, 1.3 kB (added by ranma, 3 years ago)

Simple patch for suspend issue in alsa-sink

  • src/modules/module-alsa-sink.c

    diff -Naru pulseaudio-0.9.5-orig/src/modules/module-alsa-sink.c pulseaudio-0.9.5/src/modules/module-alsa-sink.c
    old new  
    138138    return ret; 
    139139} 
    140140 
     141static int suspend_recovery(struct userdata *u) { 
     142    int ret; 
     143    assert(u); 
     144 
     145    pa_log_info("*** ALSA-SUSPEND (playback) ***"); 
     146     
     147    if ((ret = snd_pcm_prepare(u->pcm_handle)) < 0) { 
     148        pa_log("snd_pcm_prepare() failed: %s", snd_strerror(-ret)); 
     149 
     150        clear_up(u); 
     151        pa_module_unload_request(u->module); 
     152        return -1; 
     153    } 
     154 
     155    return ret; 
     156} 
     157 
    141158static void do_write(struct userdata *u) { 
    142159    assert(u); 
    143160 
     
    169186                continue; 
    170187            } 
    171188 
     189            if (frames == -ESTRPIPE) { 
     190                if (suspend_recovery(u) < 0) 
     191                    return; 
     192                 
     193                continue; 
     194            } 
     195 
    172196            pa_log("snd_pcm_writei() failed: %s", snd_strerror(-frames)); 
    173197 
    174198            clear_up(u); 
     
    200224        if (xrun_recovery(u) < 0) 
    201225            return; 
    202226 
     227    if (snd_pcm_state(u->pcm_handle) == SND_PCM_STATE_SUSPENDED) 
     228        if (suspend_recovery(u) < 0) 
     229            return; 
     230 
    203231    do_write(u); 
    204232} 
    205233