static void rdpsnd_pulse_free(rdpsndDevicePlugin* device) { rdpsndPulsePlugin* pulse = (rdpsndPulsePlugin*)device; if (!pulse) return; rdpsnd_pulse_close(device); if (pulse->mainloop) { pa_threaded_mainloop_stop(pulse->mainloop); } if (pulse->context) { pa_context_disconnect(pulse->context); pa_context_unref(pulse->context); pulse->context = NULL; } if (pulse->mainloop) { pa_threaded_mainloop_free(pulse->mainloop); pulse->mainloop = NULL; } xfree(pulse->device_name); freerdp_dsp_context_free(pulse->dsp_context); xfree(pulse); }
void rdpsnd_server_context_free(RdpsndServerContext* context) { if (!context->priv->StopEvent) { SetEvent(context->priv->StopEvent); WaitForSingleObject(context->priv->Thread, INFINITE); } if (context->priv->ChannelHandle) WTSVirtualChannelClose(context->priv->ChannelHandle); if (context->priv->rdpsnd_pdu) Stream_Free(context->priv->rdpsnd_pdu, TRUE); if (context->priv->out_buffer) free(context->priv->out_buffer); if (context->priv->dsp_context) freerdp_dsp_context_free(context->priv->dsp_context); if (context->client_formats) free(context->client_formats); free(context); }
void rdpsnd_server_context_free(rdpsnd_server_context* context) { rdpsnd_server* rdpsnd = (rdpsnd_server*) context; if (rdpsnd->rdpsnd_channel_thread) { freerdp_thread_stop(rdpsnd->rdpsnd_channel_thread); freerdp_thread_free(rdpsnd->rdpsnd_channel_thread); } if (rdpsnd->rdpsnd_channel) WTSVirtualChannelClose(rdpsnd->rdpsnd_channel); if (rdpsnd->rdpsnd_pdu) stream_free(rdpsnd->rdpsnd_pdu); if (rdpsnd->out_buffer) free(rdpsnd->out_buffer); if (rdpsnd->dsp_context) freerdp_dsp_context_free(rdpsnd->dsp_context); if (rdpsnd->context.client_formats) free(rdpsnd->context.client_formats); free(rdpsnd); }
static void audin_alsa_free(IAudinDevice* device) { AudinALSADevice* alsa = (AudinALSADevice*) device; freerdp_thread_free(alsa->thread); freerdp_dsp_context_free(alsa->dsp_context); xfree(alsa); }
RdpsndServerContext* rdpsnd_server_context_new(HANDLE vcm) { RdpsndServerContext* context; RdpsndServerPrivate *priv; context = (RdpsndServerContext *)calloc(1, sizeof(RdpsndServerContext)); if (!context) { WLog_ERR(TAG, "calloc failed!"); return NULL; } context->vcm = vcm; context->Start = rdpsnd_server_start; context->Stop = rdpsnd_server_stop; context->selected_client_format = -1; context->Initialize = rdpsnd_server_initialize; context->SelectFormat = rdpsnd_server_select_format; context->SendSamples = rdpsnd_server_send_samples; context->SetVolume = rdpsnd_server_set_volume; context->Close = rdpsnd_server_close; context->priv = priv = (RdpsndServerPrivate *)calloc(1, sizeof(RdpsndServerPrivate)); if (!priv) { WLog_ERR(TAG, "calloc failed!"); goto out_free; } priv->dsp_context = freerdp_dsp_context_new(); if (!priv->dsp_context) { WLog_ERR(TAG, "freerdp_dsp_context_new failed!"); goto out_free_priv; } priv->input_stream = Stream_New(NULL, 4); if (!priv->input_stream) { WLog_ERR(TAG, "Stream_New failed!"); goto out_free_dsp; } priv->expectedBytes = 4; priv->waitingHeader = TRUE; priv->ownThread = TRUE; return context; out_free_dsp: freerdp_dsp_context_free(priv->dsp_context); out_free_priv: free(context->priv); out_free: free(context); return NULL; }
void audin_server_context_free(audin_server_context* context) { audin_server* audin = (audin_server*) context; audin_server_close(context); if (audin->dsp_context) freerdp_dsp_context_free(audin->dsp_context); free(audin->context.client_formats); free(audin); }
static void tsmf_alsa_free(ITSMFAudioDevice *audio) { TSMFAlsaAudioDevice *alsa = (TSMFAlsaAudioDevice *) audio; DEBUG_TSMF(""); if(alsa->out_handle) { snd_pcm_drain(alsa->out_handle); snd_pcm_close(alsa->out_handle); } freerdp_dsp_context_free(alsa->dsp_context); free(alsa); }
static void rdpsnd_winmm_free(rdpsndDevicePlugin* device) { rdpsndWinmmPlugin* winmm = (rdpsndWinmmPlugin*) device; if (winmm) { rdpsnd_winmm_close(device); freerdp_dsp_context_free(winmm->dsp_context); free(winmm); } }
void rdpsnd_server_context_free(RdpsndServerContext* context) { if (context->priv->ChannelHandle) WTSVirtualChannelClose(context->priv->ChannelHandle); free(context->priv->out_buffer); if (context->priv->dsp_context) freerdp_dsp_context_free(context->priv->dsp_context); if (context->priv->input_stream) Stream_Free(context->priv->input_stream, TRUE); free(context->client_formats); free(context); }