mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-16 07:00:00 -05:00
spa: add result type
We need this to know the type of result, especially when serializing.
This commit is contained in:
parent
c767ce62c9
commit
857b2a0cfb
33 changed files with 110 additions and 73 deletions
|
|
@ -280,7 +280,7 @@ static int impl_port_enum_params(void *object, int seq,
|
|||
if (spa_pod_filter(&b, &result.param, param, filter) < 0)
|
||||
goto next;
|
||||
|
||||
spa_node_emit_result(&d->hooks, seq, 0, &result);
|
||||
spa_node_emit_result(&d->hooks, seq, 0, SPA_RESULT_TYPE_NODE_PARAMS, &result);
|
||||
|
||||
if (++count != num)
|
||||
goto next;
|
||||
|
|
|
|||
|
|
@ -252,7 +252,7 @@ static int impl_port_enum_params(void *object, int seq,
|
|||
if (spa_pod_filter(&b, &result.param, param, filter) < 0)
|
||||
goto next;
|
||||
|
||||
spa_node_emit_result(&d->hooks, seq, 0, &result);
|
||||
spa_node_emit_result(&d->hooks, seq, 0, SPA_RESULT_TYPE_NODE_PARAMS, &result);
|
||||
|
||||
if (++count != num)
|
||||
goto next;
|
||||
|
|
|
|||
|
|
@ -192,7 +192,7 @@ static int impl_port_enum_params(void *object, int seq,
|
|||
if (spa_pod_filter(&b, &result.param, param, filter) < 0)
|
||||
goto next;
|
||||
|
||||
spa_node_emit_result(&d->hooks, seq, 0, &result);
|
||||
spa_node_emit_result(&d->hooks, seq, 0, SPA_RESULT_TYPE_NODE_PARAMS, &result);
|
||||
|
||||
if (++count != num)
|
||||
goto next;
|
||||
|
|
|
|||
|
|
@ -416,7 +416,7 @@ impl_node_port_enum_params(void *object, int seq,
|
|||
if (spa_pod_filter(&b, &result.param, param, filter) < 0)
|
||||
goto next;
|
||||
|
||||
spa_node_emit_result(&this->hooks, seq, 0, &result);
|
||||
spa_node_emit_result(&this->hooks, seq, 0, SPA_RESULT_TYPE_NODE_PARAMS, &result);
|
||||
|
||||
if (++count != num)
|
||||
goto next;
|
||||
|
|
|
|||
|
|
@ -416,7 +416,7 @@ static int impl_node_enum_params(void *object, int seq,
|
|||
continue;
|
||||
|
||||
pw_log_debug("client-node %p: %d param %u", this, seq, result.index);
|
||||
spa_node_emit_result(&this->hooks, seq, 0, &result);
|
||||
spa_node_emit_result(&this->hooks, seq, 0, SPA_RESULT_TYPE_NODE_PARAMS, &result);
|
||||
|
||||
if (++count == num)
|
||||
break;
|
||||
|
|
@ -706,7 +706,7 @@ impl_node_port_enum_params(void *object, int seq,
|
|||
continue;
|
||||
|
||||
pw_log_debug("client-node %p: %d param %u", this, seq, result.index);
|
||||
spa_node_emit_result(&this->hooks, seq, 0, &result);
|
||||
spa_node_emit_result(&this->hooks, seq, 0, SPA_RESULT_TYPE_NODE_PARAMS, &result);
|
||||
|
||||
if (++count == num)
|
||||
break;
|
||||
|
|
@ -1245,7 +1245,7 @@ static void client_node_resource_error(void *data, int seq, int res, const char
|
|||
|
||||
pw_log_error("client-node %p: error seq:%d %d (%s)", this, seq, res, message);
|
||||
result.message = message;
|
||||
spa_node_emit_result(&this->hooks, seq, res, &result);
|
||||
spa_node_emit_result(&this->hooks, seq, res, SPA_RESULT_TYPE_NODE_ERROR, &result);
|
||||
}
|
||||
|
||||
static void client_node_resource_pong(void *data, int seq)
|
||||
|
|
@ -1254,7 +1254,7 @@ static void client_node_resource_pong(void *data, int seq)
|
|||
struct node *this = &impl->node;
|
||||
|
||||
pw_log_debug("client-node %p: got pong, emit result %d", this, seq);
|
||||
spa_node_emit_result(&this->hooks, seq, 0, NULL);
|
||||
spa_node_emit_result(&this->hooks, seq, 0, 0, NULL);
|
||||
}
|
||||
|
||||
void pw_client_node_registered(struct pw_client_node *this, struct pw_global *global)
|
||||
|
|
|
|||
|
|
@ -167,7 +167,7 @@ static int impl_node_enum_params(void *object, int seq,
|
|||
if (spa_pod_filter(&b, &result.param, param, filter) < 0)
|
||||
goto next;
|
||||
|
||||
spa_node_emit_result(&this->hooks, seq, 0, &result);
|
||||
spa_node_emit_result(&this->hooks, seq, 0, SPA_RESULT_TYPE_NODE_PARAMS, &result);
|
||||
|
||||
if (++count != num)
|
||||
goto next;
|
||||
|
|
@ -325,12 +325,12 @@ static void adapter_port_info(void *data,
|
|||
}
|
||||
}
|
||||
|
||||
static void adapter_result(void *data, int seq, int res, const void *result)
|
||||
static void adapter_result(void *data, int seq, int res, uint32_t type, const void *result)
|
||||
{
|
||||
struct impl *impl = data;
|
||||
struct node *this = &impl->node;
|
||||
pw_log_debug("%p: result %d %d", this, seq, res);
|
||||
spa_node_emit_result(&this->hooks, seq, res, result);
|
||||
spa_node_emit_result(&this->hooks, seq, res, type, result);
|
||||
}
|
||||
|
||||
static const struct spa_node_events adapter_node_events = {
|
||||
|
|
@ -1144,12 +1144,12 @@ static void client_node_free(void *data)
|
|||
cleanup(impl);
|
||||
}
|
||||
|
||||
static void client_node_result(void *data, int seq, int res, const void *result)
|
||||
static void client_node_result(void *data, int seq, int res, uint32_t type, const void *result)
|
||||
{
|
||||
struct impl *impl = data;
|
||||
struct node *node = &impl->node;
|
||||
pw_log_debug("client-stream %p: result %d %d", &impl->this, seq, res);
|
||||
spa_node_emit_result(&node->hooks, seq, res, result);
|
||||
spa_node_emit_result(&node->hooks, seq, res, type, result);
|
||||
}
|
||||
|
||||
static void client_node_active_changed(void *data, bool active)
|
||||
|
|
|
|||
|
|
@ -97,7 +97,7 @@ static void complete_init(struct impl *impl)
|
|||
pw_node_initialized(this);
|
||||
}
|
||||
|
||||
static void spa_node_result(void *data, int seq, int res, const void *result)
|
||||
static void spa_node_result(void *data, int seq, int res, uint32_t type, const void *result)
|
||||
{
|
||||
struct impl *impl = data;
|
||||
struct pw_node *node = impl->this;
|
||||
|
|
|
|||
|
|
@ -140,12 +140,19 @@ struct result_device_params_data {
|
|||
struct spa_pod *param);
|
||||
};
|
||||
|
||||
static void result_device_params(void *data, int seq, int res, const void *result)
|
||||
static void result_device_params(void *data, int seq, int res, uint32_t type, const void *result)
|
||||
{
|
||||
struct result_device_params_data *d = data;
|
||||
const struct spa_result_device_params *r =
|
||||
(const struct spa_result_device_params *)result;
|
||||
d->callback(d->data, seq, r->id, r->index, r->next, r->param);
|
||||
switch (type) {
|
||||
case SPA_RESULT_TYPE_DEVICE_PARAMS:
|
||||
{
|
||||
const struct spa_result_device_params *r = result;
|
||||
d->callback(d->data, seq, r->id, r->index, r->next, r->param);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
SPA_EXPORT
|
||||
|
|
|
|||
|
|
@ -1081,7 +1081,7 @@ static const struct pw_port_events output_port_events = {
|
|||
.destroy = output_port_destroy,
|
||||
};
|
||||
|
||||
static void input_node_result(void *data, int seq, int res, const void *result)
|
||||
static void input_node_result(void *data, int seq, int res, uint32_t type, const void *result)
|
||||
{
|
||||
struct impl *impl = data;
|
||||
struct pw_node *node = impl->this.input->node;
|
||||
|
|
@ -1091,7 +1091,7 @@ static void input_node_result(void *data, int seq, int res, const void *result)
|
|||
}
|
||||
}
|
||||
|
||||
static void output_node_result(void *data, int seq, int res, const void *result)
|
||||
static void output_node_result(void *data, int seq, int res, uint32_t type, const void *result)
|
||||
{
|
||||
struct impl *impl = data;
|
||||
struct pw_node *node = impl->this.output->node;
|
||||
|
|
|
|||
|
|
@ -983,7 +983,7 @@ static void node_port_info(void *data, enum spa_direction direction, uint32_t po
|
|||
}
|
||||
}
|
||||
|
||||
static void node_result(void *data, int seq, int res, const void *result)
|
||||
static void node_result(void *data, int seq, int res, uint32_t type, const void *result)
|
||||
{
|
||||
struct pw_node *node = data;
|
||||
struct impl *impl = SPA_CONTAINER_OF(node, struct impl, this);
|
||||
|
|
@ -994,7 +994,7 @@ static void node_result(void *data, int seq, int res, const void *result)
|
|||
if (SPA_RESULT_IS_ASYNC(seq))
|
||||
pw_work_queue_complete(impl->work, &impl->this, SPA_RESULT_ASYNC_SEQ(seq), res);
|
||||
|
||||
pw_node_emit_result(node, seq, res, result);
|
||||
pw_node_emit_result(node, seq, res, type, result);
|
||||
}
|
||||
|
||||
static void node_event(void *data, const struct spa_event *event)
|
||||
|
|
@ -1222,12 +1222,20 @@ struct result_node_params_data {
|
|||
int seq;
|
||||
};
|
||||
|
||||
static void result_node_params(void *data, int seq, int res, const void *result)
|
||||
static void result_node_params(void *data, int seq, int res, uint32_t type, const void *result)
|
||||
{
|
||||
struct result_node_params_data *d = data;
|
||||
const struct spa_result_node_params *r = result;
|
||||
if (d->seq == seq)
|
||||
d->callback(d->data, seq, r->id, r->index, r->next, r->param);
|
||||
switch (type) {
|
||||
case SPA_RESULT_TYPE_NODE_PARAMS:
|
||||
{
|
||||
const struct spa_result_node_params *r = result;
|
||||
if (d->seq == seq)
|
||||
d->callback(d->data, seq, r->id, r->index, r->next, r->param);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
SPA_EXPORT
|
||||
|
|
|
|||
|
|
@ -85,7 +85,7 @@ struct pw_node_events {
|
|||
enum pw_node_state state, const char *error);
|
||||
|
||||
/** a result was received */
|
||||
void (*result) (void *data, int seq, int res, const void *result);
|
||||
void (*result) (void *data, int seq, int res, uint32_t type, const void *result);
|
||||
|
||||
/** an event is emited */
|
||||
void (*event) (void *data, const struct spa_event *event);
|
||||
|
|
|
|||
|
|
@ -836,12 +836,20 @@ struct result_port_params_data {
|
|||
int seq;
|
||||
};
|
||||
|
||||
static void result_port_params(void *data, int seq, int res, const void *result)
|
||||
static void result_port_params(void *data, int seq, int res, uint32_t type, const void *result)
|
||||
{
|
||||
struct result_port_params_data *d = data;
|
||||
const struct spa_result_node_params *r = result;
|
||||
if (d->seq == seq)
|
||||
d->callback(d->data, seq, r->id, r->index, r->next, r->param);
|
||||
switch (type) {
|
||||
case SPA_RESULT_TYPE_NODE_PARAMS:
|
||||
{
|
||||
const struct spa_result_node_params *r = result;
|
||||
if (d->seq == seq)
|
||||
d->callback(d->data, seq, r->id, r->index, r->next, r->param);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
int pw_port_for_each_param(struct pw_port *port,
|
||||
|
|
|
|||
|
|
@ -385,7 +385,7 @@ struct pw_node_activation {
|
|||
#define pw_node_emit_state_request(n,s) pw_node_emit(n, state_request, 0, s)
|
||||
#define pw_node_emit_state_changed(n,o,s,e) pw_node_emit(n, state_changed, 0, o, s, e)
|
||||
#define pw_node_emit_async_complete(n,s,r) pw_node_emit(n, async_complete, 0, s, r)
|
||||
#define pw_node_emit_result(n,s,r,result) pw_node_emit(n, result, 0, s, r, result)
|
||||
#define pw_node_emit_result(n,s,r,t,result) pw_node_emit(n, result, 0, s, r, t, result)
|
||||
#define pw_node_emit_event(n,e) pw_node_emit(n, event, 0, e)
|
||||
#define pw_node_emit_driver_changed(n,o,d) pw_node_emit(n, driver_changed, 0, o, d)
|
||||
#define pw_node_emit_peer_added(n,p) pw_node_emit(n, peer_added, 0, p)
|
||||
|
|
|
|||
|
|
@ -466,7 +466,7 @@ static int impl_port_enum_params(void *object, int seq,
|
|||
if (spa_pod_filter(&b, &result.param, param, filter) != 0)
|
||||
continue;
|
||||
|
||||
spa_node_emit_result(&d->hooks, seq, 0, &result);
|
||||
spa_node_emit_result(&d->hooks, seq, 0, SPA_RESULT_TYPE_NODE_PARAMS, &result);
|
||||
|
||||
if (++count == num)
|
||||
break;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue