本文整理汇总了C++中pa_operation_get_state函数的典型用法代码示例。如果您正苦于以下问题:C++ pa_operation_get_state函数的具体用法?C++ pa_operation_get_state怎么用?C++ pa_operation_get_state使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了pa_operation_get_state函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: lock
void QPulseAudioEngine::updateDevices()
{
lock();
// Get default input and output devices
pa_operation *operation = pa_context_get_server_info(m_context, serverInfoCallback, this);
while (pa_operation_get_state(operation) == PA_OPERATION_RUNNING)
pa_threaded_mainloop_wait(m_mainLoop);
pa_operation_unref(operation);
// Get output devices
operation = pa_context_get_sink_info_list(m_context, sinkInfoCallback, this);
while (pa_operation_get_state(operation) == PA_OPERATION_RUNNING)
pa_threaded_mainloop_wait(m_mainLoop);
pa_operation_unref(operation);
// Get input devices
operation = pa_context_get_source_info_list(m_context, sourceInfoCallback, this);
while (pa_operation_get_state(operation) == PA_OPERATION_RUNNING)
pa_threaded_mainloop_wait(m_mainLoop);
pa_operation_unref(operation);
unlock();
// Swap the default output to index 0
m_sinks.removeOne(m_defaultSink);
m_sinks.prepend(m_defaultSink);
// Swap the default input to index 0
m_sources.removeOne(m_defaultSource);
m_sources.prepend(m_defaultSource);
}
开发者ID:venkatarajasekhar,项目名称:Qt,代码行数:32,代码来源:qpulseaudioengine.cpp
示例2: PulseAudio_set_volume
static PyObject* PulseAudio_set_volume(output_PulseAudio *self, PyObject *args)
{
pa_cvolume cvolume;
pa_operation *op;
struct get_volume_cb_data cb_data = {self->mainloop, &cvolume};
double new_volume_d;
pa_volume_t new_volume;
if (!PyArg_ParseTuple(args, "d", &new_volume_d))
return NULL;
/*ensure output stream is still running*/
/*FIXME*/
/*convert volume to integer pa_volume_t value between
PA_VOLUME_MUTED and PA_VOLUME_NORM*/
new_volume = round(new_volume_d * PA_VOLUME_NORM);
pa_threaded_mainloop_lock(self->mainloop);
/*query stream info for current sink*/
op = pa_context_get_sink_info_by_index(
self->context,
pa_stream_get_device_index(self->stream),
(pa_sink_info_cb_t)get_volume_callback,
&cb_data);
/*wait for callback to complete*/
while (pa_operation_get_state(op) == PA_OPERATION_RUNNING) {
pa_threaded_mainloop_wait(self->mainloop);
}
pa_operation_unref(op);
/*scale values using the new volume setting*/
pa_cvolume_scale(&cvolume, new_volume);
/*set sink's volume values*/
op = pa_context_set_sink_volume_by_index(
self->context,
pa_stream_get_device_index(self->stream),
&cvolume,
(pa_context_success_cb_t)set_volume_callback,
self->mainloop);
/*wait for callback to complete*/
while (pa_operation_get_state(op) == PA_OPERATION_RUNNING) {
pa_threaded_mainloop_wait(self->mainloop);
}
pa_operation_unref(op);
pa_threaded_mainloop_unlock(self->mainloop);
Py_INCREF(Py_None);
return Py_None;
}
开发者ID:KristoforMaynard,项目名称:python-audio-tools,代码行数:57,代码来源:pulseaudio.c
示例3: waitop
/**
* \brief waits for a pulseaudio operation to finish, frees it and
* unlocks the mainloop
* \param op operation to wait for
* \return 1 if operation has finished normally (DONE state), 0 otherwise
*/
static int waitop(struct priv *priv, pa_operation *op)
{
if (!op) {
pa_threaded_mainloop_unlock(priv->mainloop);
return 0;
}
pa_operation_state_t state = pa_operation_get_state(op);
while (state == PA_OPERATION_RUNNING) {
pa_threaded_mainloop_wait(priv->mainloop);
state = pa_operation_get_state(op);
}
pa_operation_unref(op);
pa_threaded_mainloop_unlock(priv->mainloop);
return state == PA_OPERATION_DONE;
}
开发者ID:Newbleeto,项目名称:mplayer2,代码行数:21,代码来源:ao_pulse.c
示例4: play_timeout
static gboolean
play_timeout (MokoNotify *notify)
{
MokoNotifyPrivate *priv;
g_return_val_if_fail (MOKO_IS_NOTIFY (notify), FALSE);
priv = notify->priv;
if (!priv->pac)
return FALSE;
if (!priv->operation)
{
g_debug ("No operation");
return FALSE;
}
if (!priv->started)
{
pa_operation_cancel (priv->operation);
g_debug ("Cancelling early");
return FALSE;
}
if (pa_operation_get_state (priv->operation) == PA_OPERATION_DONE)
{
g_timeout_add (1500, (GSourceFunc)play, (gpointer)notify);
g_debug ("Playing done");
return FALSE;
}
g_debug ("Not finshed yet");
return TRUE;
}
开发者ID:shr-project,项目名称:shr,代码行数:31,代码来源:notify.c
示例5: pa_simple_cork
int pa_simple_cork(pa_simple *p, int cork, int *rerror) {
pa_operation *o = NULL;
pa_assert(p);
pa_threaded_mainloop_lock(p->mainloop);
CHECK_DEAD_GOTO(p, rerror, unlock_and_fail);
o = pa_stream_cork(p->stream, cork, success_context_cb, p);
CHECK_SUCCESS_GOTO(p, rerror, o, unlock_and_fail);
p->operation_success = 0;
while (pa_operation_get_state(o) == PA_OPERATION_RUNNING) {
pa_threaded_mainloop_wait(p->mainloop);
CHECK_DEAD_GOTO(p, rerror, unlock_and_fail);
}
CHECK_SUCCESS_GOTO(p, rerror, p->operation_success, unlock_and_fail);
pa_operation_unref(o);
pa_threaded_mainloop_unlock(p->mainloop);
return 0;
unlock_and_fail:
if (o) {
pa_operation_cancel(o);
pa_operation_unref(o);
}
pa_threaded_mainloop_unlock(p->mainloop);
return -1;
}
开发者ID:tizenorg,项目名称:framework.multimedia.pulseaudio,代码行数:33,代码来源:simple.c
示例6: pa_simple_flush
int pa_simple_flush(pa_simple *p, int *rerror) {
pa_operation *o = NULL;
pa_assert(p);
CHECK_VALIDITY_RETURN_ANY(rerror, p->direction == PA_STREAM_PLAYBACK, PA_ERR_BADSTATE, -1);
pa_threaded_mainloop_lock(p->mainloop);
CHECK_DEAD_GOTO(p, rerror, unlock_and_fail);
o = pa_stream_flush(p->stream, success_cb, p);
CHECK_SUCCESS_GOTO(p, rerror, o, unlock_and_fail);
p->operation_success = 0;
while (pa_operation_get_state(o) == PA_OPERATION_RUNNING) {
pa_threaded_mainloop_wait(p->mainloop);
CHECK_DEAD_GOTO(p, rerror, unlock_and_fail);
}
CHECK_SUCCESS_GOTO(p, rerror, p->operation_success, unlock_and_fail);
pa_operation_unref(o);
pa_threaded_mainloop_unlock(p->mainloop);
return 0;
unlock_and_fail:
if (o) {
pa_operation_cancel(o);
pa_operation_unref(o);
}
pa_threaded_mainloop_unlock(p->mainloop);
return -1;
}
开发者ID:KOLIA112,项目名称:pulseaudio,代码行数:35,代码来源:simple.c
示例7: PulseAudio_resume
static PyObject* PulseAudio_resume(output_PulseAudio *self, PyObject *args)
{
/*ensure output stream is still running*/
/*FIXME*/
/*uncork output stream, if corked*/
pa_threaded_mainloop_lock(self->mainloop);
if (pa_stream_is_corked(self->stream)) {
pa_operation *op = pa_stream_cork(
self->stream,
0,
(pa_stream_success_cb_t)success_callback,
self->mainloop);
while (pa_operation_get_state(op) == PA_OPERATION_RUNNING) {
pa_threaded_mainloop_wait(self->mainloop);
}
pa_operation_unref(op);
}
pa_threaded_mainloop_unlock(self->mainloop);
Py_INCREF(Py_None);
return Py_None;
}
开发者ID:KristoforMaynard,项目名称:python-audio-tools,代码行数:27,代码来源:pulseaudio.c
示例8: pulse_enumerate_devices
/*
* enumerate input/output devices
*/
static void pulse_enumerate_devices(obs_properties_t props, bool input)
{
pa_context *c;
pa_operation *op;
pa_threaded_mainloop *m = pa_threaded_mainloop_new();
struct pulse_enumerate e;
e.mainloop = m;
e.devices = obs_properties_add_list(props, "device_id", "Device",
OBS_COMBO_TYPE_LIST, OBS_COMBO_FORMAT_STRING);
e.input = input;
pa_threaded_mainloop_start(m);
c = pulse_context_create(m);
if (pulse_context_connect(m, c) < 0)
goto fail;
pa_threaded_mainloop_lock(m);
op = pa_context_get_source_info_list(c, pulse_source_info, (void *) &e);
while (pa_operation_get_state(op) == PA_OPERATION_RUNNING)
pa_threaded_mainloop_wait(m);
pa_operation_unref(op);
pa_threaded_mainloop_unlock(m);
pa_context_disconnect(c);
fail:
pa_context_unref(c);
pa_threaded_mainloop_stop(m);
pa_threaded_mainloop_free(m);
}
开发者ID:Jhonthe7th,项目名称:obs-studio,代码行数:36,代码来源:pulse-input.c
示例9: getContext
bool PulseSubscription::run()
{
pa_context *context = getContext();
pa_operation *operation;
mainLoopLock();
// Must assume only one subscription will be alive. Can fix this if needed one day.
pa_context_set_subscribe_callback(context, _subscribe_callback, this);
m_triggered = 0;
operation = pa_context_subscribe(context,
(pa_subscription_mask_t)( PA_SUBSCRIPTION_MASK_SOURCE |
PA_SUBSCRIPTION_MASK_SINK |
PA_SUBSCRIPTION_MASK_MODULE),
NULL,
NULL);
while(pa_operation_get_state(operation) != PA_OPERATION_CANCELLED){
mainLoopWait();
if(m_triggered){
fireEvent();
m_triggered = 0;
}
}
pa_operation_unref(operation);
mainLoopUnlock();
return true;
}
开发者ID:jinuahn,项目名称:raspberry-pi-bluetooth,代码行数:29,代码来源:PulseSubscription.cpp
示例10: Close
/*****************************************************************************
* Close: close the audio device
*****************************************************************************/
static void Close ( vlc_object_t *p_this )
{
aout_instance_t *p_aout = (aout_instance_t *)p_this;
struct aout_sys_t * p_sys = p_aout->output.p_sys;
msg_Dbg(p_aout, "Pulse Close");
if(p_sys->stream){
pa_operation *o;
pa_threaded_mainloop_lock(p_sys->mainloop);
pa_stream_set_write_callback(p_sys->stream, NULL, NULL);
if((o = pa_stream_drain(p_sys->stream, success_cb, p_aout))){
while (pa_operation_get_state(o) != PA_OPERATION_DONE) {
CHECK_DEAD_GOTO(fail);
pa_threaded_mainloop_wait(p_sys->mainloop);
}
fail:
pa_operation_unref(o);
}
pa_threaded_mainloop_unlock(p_sys->mainloop);
}
uninit(p_aout);
}
开发者ID:Kafay,项目名称:vlc,代码行数:30,代码来源:pulse.c
示例11: drvHostPulseAudioWaitFor
/**
* Synchronously wait until an operation completed.
*/
static int drvHostPulseAudioWaitFor(pa_operation *pOP, RTMSINTERVAL cMsTimeout)
{
AssertPtrReturn(pOP, VERR_INVALID_POINTER);
int rc = VINF_SUCCESS;
if (pOP)
{
uint64_t u64StartMs = RTTimeMilliTS();
while (pa_operation_get_state(pOP) == PA_OPERATION_RUNNING)
{
if (!g_fAbortMainLoop)
pa_threaded_mainloop_wait(g_pMainLoop);
g_fAbortMainLoop = false;
uint64_t u64ElapsedMs = RTTimeMilliTS() - u64StartMs;
if (u64ElapsedMs >= cMsTimeout)
{
rc = VERR_TIMEOUT;
break;
}
}
pa_operation_unref(pOP);
}
return rc;
}
开发者ID:bhanug,项目名称:virtualbox,代码行数:30,代码来源:DrvHostPulseAudio.cpp
示例12: xmms_pulse_backend_volume_get
int xmms_pulse_backend_volume_get (xmms_pulse *p, unsigned int *vol)
{
pa_operation *o;
int idx;
if (p == NULL) {
return FALSE;
}
pa_threaded_mainloop_lock (p->mainloop);
*vol = -1;
if (p->stream != NULL) {
idx = pa_stream_get_index (p->stream);
o = pa_context_get_sink_input_info (p->context, idx,
volume_get_cb, vol);
if (o) {
while (pa_operation_get_state (o) != PA_OPERATION_DONE) {
pa_threaded_mainloop_wait (p->mainloop);
}
pa_operation_unref (o);
}
}
pa_threaded_mainloop_unlock (p->mainloop);
return *vol != -1;
}
开发者ID:chrippa,项目名称:xmms2,代码行数:32,代码来源:backend.c
示例13: pulse_flush
static void pulse_flush(int time) {
pa_operation *o = NULL;
int success = 0;
CHECK_CONNECTED();
pa_threaded_mainloop_lock(mainloop);
CHECK_DEAD_GOTO(fail, 1);
written = time * (int64_t) bytes_per_second / 1000;
flush_time = time;
if (!(o = pa_stream_flush(stream, stream_success_cb, &success))) {
AUDDBG("pa_stream_flush() failed: %s", pa_strerror(pa_context_errno(context)));
goto fail;
}
while (pa_operation_get_state(o) != PA_OPERATION_DONE) {
CHECK_DEAD_GOTO(fail, 1);
pa_threaded_mainloop_wait(mainloop);
}
if (!success)
AUDDBG("pa_stream_flush() failed: %s", pa_strerror(pa_context_errno(context)));
fail:
if (o)
pa_operation_unref(o);
pa_threaded_mainloop_unlock(mainloop);
}
开发者ID:Pitxyoki,项目名称:audacious-plugins,代码行数:31,代码来源:pulse_audio.c
示例14: pulse_drain
static void pulse_drain(void) {
pa_operation *o = NULL;
int success = 0;
CHECK_CONNECTED();
pa_threaded_mainloop_lock(mainloop);
CHECK_DEAD_GOTO(fail, 0);
if (!(o = pa_stream_drain(stream, stream_success_cb, &success))) {
AUDDBG("pa_stream_drain() failed: %s", pa_strerror(pa_context_errno(context)));
goto fail;
}
while (pa_operation_get_state(o) != PA_OPERATION_DONE) {
CHECK_DEAD_GOTO(fail, 1);
pa_threaded_mainloop_wait(mainloop);
}
if (!success)
AUDDBG("pa_stream_drain() failed: %s", pa_strerror(pa_context_errno(context)));
fail:
if (o)
pa_operation_unref(o);
pa_threaded_mainloop_unlock(mainloop);
}
开发者ID:Pitxyoki,项目名称:audacious-plugins,代码行数:28,代码来源:pulse_audio.c
示例15: wait_for_operation
/** Wait until the specified operation completes */
static void wait_for_operation(struct pa_operation *o) {
assert(o && context && mainloop);
while (pa_operation_get_state(o) == PA_OPERATION_RUNNING)
pa_mainloop_iterate(mainloop, 1, NULL);
pa_operation_unref(o);
}
开发者ID:OpenSageTV,项目名称:mplayer-sage9orig,代码行数:9,代码来源:ao_polyp.c
示例16: pa_stream_drain
void PulseOutput::drain() {
if (stream) {
pa_operation * operation = pa_stream_drain(stream,nullptr,nullptr);
while (pa_operation_get_state(operation) == PA_OPERATION_RUNNING)
context->wait_plugin_events();
pa_operation_unref(operation);
}
}
开发者ID:gogglesmm,项目名称:gogglesmm,代码行数:8,代码来源:ap_pulse.cpp
示例17: tsmf_pulse_wait_for_operation
static void
tsmf_pulse_wait_for_operation(TSMFPulseAudioDevice * pulse, pa_operation * operation)
{
while (pa_operation_get_state(operation) == PA_OPERATION_RUNNING)
{
pa_threaded_mainloop_wait(pulse->mainloop);
}
pa_operation_unref(operation);
}
开发者ID:FreeRDP,项目名称:FreeRDP-old,代码行数:9,代码来源:tsmf_pulse.c
示例18: operation_wait
static void
operation_wait(cubeb * ctx, pa_operation * o)
{
for (;;) {
if (pa_operation_get_state(o) != PA_OPERATION_RUNNING)
break;
pa_threaded_mainloop_wait(ctx->mainloop);
}
}
开发者ID:rillian,项目名称:cubeb,代码行数:9,代码来源:cubeb_pulse.c
示例19: gst_pulsesrc_get_stream_mute
static gboolean
gst_pulsesrc_get_stream_mute (GstPulseSrc * pulsesrc)
{
pa_operation *o = NULL;
gboolean mute;
if (!pulsesrc->mainloop)
goto no_mainloop;
if (pulsesrc->source_output_idx == PA_INVALID_INDEX)
goto no_index;
pa_threaded_mainloop_lock (pulsesrc->mainloop);
if (!(o = pa_context_get_source_output_info (pulsesrc->context,
pulsesrc->source_output_idx, gst_pulsesrc_source_output_info_cb,
pulsesrc)))
goto info_failed;
while (pa_operation_get_state (o) == PA_OPERATION_RUNNING) {
pa_threaded_mainloop_wait (pulsesrc->mainloop);
if (gst_pulsesrc_is_dead (pulsesrc, TRUE))
goto unlock;
}
unlock:
mute = pulsesrc->mute;
if (o)
pa_operation_unref (o);
pa_threaded_mainloop_unlock (pulsesrc->mainloop);
return mute;
/* ERRORS */
no_mainloop:
{
mute = pulsesrc->mute;
GST_DEBUG_OBJECT (pulsesrc, "we have no mainloop");
return mute;
}
no_index:
{
mute = pulsesrc->mute;
GST_DEBUG_OBJECT (pulsesrc, "we don't have a stream index");
return mute;
}
info_failed:
{
GST_ELEMENT_ERROR (pulsesrc, RESOURCE, FAILED,
("pa_context_get_source_output_info() failed: %s",
pa_strerror (pa_context_errno (pulsesrc->context))), (NULL));
goto unlock;
}
}
开发者ID:PeterXu,项目名称:gst-mobile,代码行数:56,代码来源:pulsesrc.c
示例20: WaitForOperation
static bool WaitForOperation(pa_operation *op, pa_threaded_mainloop *mainloop, const char *LogEntry = "")
{
if (op == NULL)
return false;
bool sucess = true;
while (pa_operation_get_state(op) == PA_OPERATION_RUNNING)
pa_threaded_mainloop_wait(mainloop);
if (pa_operation_get_state(op) != PA_OPERATION_DONE)
{
CLog::Log(LOGERROR, "PulseAudio: %s Operation failed", LogEntry);
sucess = false;
}
pa_operation_unref(op);
return sucess;
}
开发者ID:2BReality,项目名称:xbmc,代码行数:19,代码来源:PulseAE.cpp
注:本文中的pa_operation_get_state函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论