pulse: implement some more extensions

Most just return nothing or say that the extension is not supported.
Remove some warnings, they should show up in the log from setting
the error in the context.
This commit is contained in:
Wim Taymans 2020-08-17 17:40:34 +02:00
parent 62cea9c6d5
commit 451fee2208
4 changed files with 153 additions and 32 deletions

View file

@ -25,6 +25,22 @@
#include "internal.h"
struct ext_data {
pa_context *context;
pa_ext_device_manager_test_cb_t test_cb;
pa_ext_device_manager_read_cb_t read_cb;
pa_context_success_cb_t success_cb;
int error;
void *userdata;
};
static void device_test(pa_operation *o, void *userdata)
{
struct ext_data *d = userdata;
if (d->test_cb)
d->test_cb(o->context, PA_INVALID_INDEX, d->userdata);
pa_operation_done(o);
}
SPA_EXPORT
pa_operation *pa_ext_device_manager_test(
@ -32,8 +48,31 @@ pa_operation *pa_ext_device_manager_test(
pa_ext_device_manager_test_cb_t cb,
void *userdata)
{
pw_log_warn("Not Implemented");
return NULL;
pa_operation *o;
struct ext_data *d;
pa_assert(c);
pa_assert(c->refcount >= 1);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE);
o = pa_operation_new(c, NULL, device_test, sizeof(struct ext_data));
d = o->userdata;
d->context = c;
d->test_cb = cb;
d->userdata = userdata;
d->error = PA_ERR_NOTIMPLEMENTED;
pa_operation_sync(o);
return o;
}
static void device_read(pa_operation *o, void *userdata)
{
struct ext_data *d = userdata;
if (d->read_cb)
d->read_cb(o->context, NULL, 1, d->userdata);
pa_operation_done(o);
}
SPA_EXPORT
@ -42,8 +81,31 @@ pa_operation *pa_ext_device_manager_read(
pa_ext_device_manager_read_cb_t cb,
void *userdata)
{
pw_log_warn("Not Implemented");
return NULL;
pa_operation *o;
struct ext_data *d;
pa_assert(c);
pa_assert(c->refcount >= 1);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE);
o = pa_operation_new(c, NULL, device_read, sizeof(struct ext_data));
d = o->userdata;
d->context = c;
d->read_cb = cb;
d->userdata = userdata;
d->error = PA_ERR_NOTIMPLEMENTED;
pa_operation_sync(o);
return o;
}
static void on_success(pa_operation *o, void *userdata)
{
struct ext_data *d = userdata;
if (d->success_cb)
d->success_cb(o->context, d->error, d->userdata);
pa_operation_done(o);
}
SPA_EXPORT
@ -54,8 +116,23 @@ pa_operation *pa_ext_device_manager_set_device_description(
pa_context_success_cb_t cb,
void *userdata)
{
pw_log_warn("Not Implemented");
return NULL;
pa_operation *o;
struct ext_data *d;
pa_assert(c);
pa_assert(c->refcount >= 1);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE);
o = pa_operation_new(c, NULL, on_success, sizeof(struct ext_data));
d = o->userdata;
d->context = c;
d->success_cb = cb;
d->userdata = userdata;
d->error = PA_ERR_NOTIMPLEMENTED;
pa_operation_sync(o);
return o;
}
SPA_EXPORT
@ -65,8 +142,23 @@ pa_operation *pa_ext_device_manager_delete(
pa_context_success_cb_t cb,
void *userdata)
{
pw_log_warn("Not Implemented");
return NULL;
pa_operation *o;
struct ext_data *d;
pa_assert(c);
pa_assert(c->refcount >= 1);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE);
o = pa_operation_new(c, NULL, on_success, sizeof(struct ext_data));
d = o->userdata;
d->context = c;
d->success_cb = cb;
d->userdata = userdata;
d->error = PA_ERR_NOTIMPLEMENTED;
pa_operation_sync(o);
return o;
}
SPA_EXPORT
@ -76,8 +168,23 @@ pa_operation *pa_ext_device_manager_enable_role_device_priority_routing(
pa_context_success_cb_t cb,
void *userdata)
{
pw_log_warn("Not Implemented");
return NULL;
pa_operation *o;
struct ext_data *d;
pa_assert(c);
pa_assert(c->refcount >= 1);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE);
o = pa_operation_new(c, NULL, on_success, sizeof(struct ext_data));
d = o->userdata;
d->context = c;
d->success_cb = cb;
d->userdata = userdata;
d->error = PA_ERR_NOTIMPLEMENTED;
pa_operation_sync(o);
return o;
}
SPA_EXPORT
@ -88,8 +195,23 @@ pa_operation *pa_ext_device_manager_reorder_devices_for_role(
pa_context_success_cb_t cb,
void *userdata)
{
pw_log_warn("Not Implemented");
return NULL;
pa_operation *o;
struct ext_data *d;
pa_assert(c);
pa_assert(c->refcount >= 1);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE);
o = pa_operation_new(c, NULL, on_success, sizeof(struct ext_data));
d = o->userdata;
d->context = c;
d->success_cb = cb;
d->userdata = userdata;
d->error = PA_ERR_NOTIMPLEMENTED;
pa_operation_sync(o);
return o;
}
SPA_EXPORT
@ -99,8 +221,23 @@ pa_operation *pa_ext_device_manager_subscribe(
pa_context_success_cb_t cb,
void *userdata)
{
pw_log_warn("Not Implemented");
return NULL;
pa_operation *o;
struct ext_data *d;
pa_assert(c);
pa_assert(c->refcount >= 1);
PA_CHECK_VALIDITY_RETURN_NULL(c, c->state == PA_CONTEXT_READY, PA_ERR_BADSTATE);
o = pa_operation_new(c, NULL, on_success, sizeof(struct ext_data));
d = o->userdata;
d->context = c;
d->success_cb = cb;
d->userdata = userdata;
d->error = PA_ERR_NOTIMPLEMENTED;
pa_operation_sync(o);
return o;
}
SPA_EXPORT
@ -109,5 +246,4 @@ void pa_ext_device_manager_set_subscribe_cb(
pa_ext_device_manager_subscribe_cb_t cb,
void *userdata)
{
pw_log_warn("Not Implemented");
}