static void drvHostPulseAudioCbSuccess(pa_stream *pStream, int fSuccess, void *pvContext) { AssertPtrReturnVoid(pStream); PPULSEAUDIOSTREAM pStrm = (PPULSEAUDIOSTREAM)pvContext; AssertPtrReturnVoid(pStrm); pStrm->fOpSuccess = fSuccess; if (fSuccess) drvHostPulseAudioAbortMainLoop(); else drvHostPulseAudioError(pStrm->pDrv, "Failed to finish stream operation"); }
static void drvHostPulseAudioCbSuccess(pa_stream *pStream, int fSuccess, void *pvContext) { AssertPtrReturnVoid(pStream); PPULSEAUDIOSTREAM pStrm = (PPULSEAUDIOSTREAM)pvContext; AssertPtrReturnVoid(pStrm); pStrm->fOpSuccess = fSuccess; if (fSuccess) { pa_threaded_mainloop_signal(g_pMainLoop, 0 /* fWait */); } else drvHostPulseAudioError(pStrm->pDrv, "Failed to finish stream operation"); }
/** * Callback called when our pa_stream_drain operation was completed. */ static void drvHostPulseAudioCbStreamDrain(pa_stream *pStream, int fSuccess, void *pvContext) { AssertPtrReturnVoid(pStream); PPULSEAUDIOSTREAM pStrm = (PPULSEAUDIOSTREAM)pvContext; AssertPtrReturnVoid(pStrm); pStrm->fOpSuccess = fSuccess; if (fSuccess) { pa_operation_unref(pa_stream_cork(pStream, 1, drvHostPulseAudioCbSuccess, pvContext)); } else drvHostPulseAudioError(pStrm->pDrv, "Failed to drain stream"); pa_operation_unref(pStrm->pDrainOp); pStrm->pDrainOp = NULL; }