mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-02 09:01:50 -05:00
node: pass struct to info callback to make it more extensible
This commit is contained in:
parent
bb2b15a5fb
commit
04f1046113
9 changed files with 78 additions and 18 deletions
|
|
@ -41,6 +41,21 @@ struct spa_node;
|
|||
#include <spa/node/event.h>
|
||||
#include <spa/node/command.h>
|
||||
|
||||
/**
|
||||
* Node information structure
|
||||
*
|
||||
* Contains the basic node information.
|
||||
*/
|
||||
struct spa_node_info {
|
||||
#define SPA_VERSION_NODE_INFO 0
|
||||
uint32_t version;
|
||||
#define SPA_NODE_CHANGE_MASK_PROPS (1<<0)
|
||||
uint64_t change_mask;
|
||||
struct spa_dict *props;
|
||||
};
|
||||
|
||||
#define SPA_NODE_INFO_INIT() (struct spa_node_info) { SPA_VERSION_NODE_INFO, }
|
||||
|
||||
/**
|
||||
* Port information structure
|
||||
*
|
||||
|
|
@ -72,7 +87,7 @@ struct spa_node_callbacks {
|
|||
uint32_t version; /**< version of this structure */
|
||||
|
||||
/** Emited when info changes */
|
||||
void (*info) (void *data, const struct spa_dict *info);
|
||||
void (*info) (void *data, const struct spa_node_info *info);
|
||||
|
||||
/** Emited when an async operation completed.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -257,8 +257,15 @@ impl_node_set_callbacks(struct spa_node *node,
|
|||
this->callbacks_data = data;
|
||||
|
||||
if (callbacks) {
|
||||
if (callbacks->info)
|
||||
callbacks->info(data, &SPA_DICT_INIT_ARRAY(node_info_items));
|
||||
if (callbacks->info) {
|
||||
struct spa_node_info info;
|
||||
|
||||
info = SPA_NODE_INFO_INIT();
|
||||
info.change_mask = SPA_NODE_CHANGE_MASK_PROPS;
|
||||
info.props = &SPA_DICT_INIT_ARRAY(node_info_items);
|
||||
|
||||
callbacks->info(data, &info);
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
|
|
|||
|
|
@ -258,8 +258,15 @@ impl_node_set_callbacks(struct spa_node *node,
|
|||
this->callbacks_data = data;
|
||||
|
||||
if (callbacks) {
|
||||
if (callbacks->info)
|
||||
callbacks->info(data, &SPA_DICT_INIT_ARRAY(node_info_items));
|
||||
if (callbacks->info) {
|
||||
struct spa_node_info info;
|
||||
|
||||
info = SPA_NODE_INFO_INIT();
|
||||
info.change_mask = SPA_NODE_CHANGE_MASK_PROPS;
|
||||
info.props = &SPA_DICT_INIT_ARRAY(node_info_items);
|
||||
|
||||
callbacks->info(data, &info);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -463,8 +463,15 @@ impl_node_set_callbacks(struct spa_node *node,
|
|||
this->callbacks_data = data;
|
||||
|
||||
if (callbacks) {
|
||||
if (callbacks->info)
|
||||
callbacks->info(data, &SPA_DICT_INIT_ARRAY(node_info_items));
|
||||
if (callbacks->info) {
|
||||
struct spa_node_info info;
|
||||
|
||||
info = SPA_NODE_INFO_INIT();
|
||||
info.change_mask = SPA_NODE_CHANGE_MASK_PROPS;
|
||||
info.props = &SPA_DICT_INIT_ARRAY(node_info_items);
|
||||
|
||||
callbacks->info(data, &info);
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
|
|
|||
|
|
@ -861,8 +861,15 @@ impl_node_set_callbacks(struct spa_node *node,
|
|||
this->callbacks_data = data;
|
||||
|
||||
if (callbacks) {
|
||||
if (callbacks->info)
|
||||
callbacks->info(data, &SPA_DICT_INIT_ARRAY(node_info_items));
|
||||
if (callbacks->info) {
|
||||
struct spa_node_info info;
|
||||
|
||||
info = SPA_NODE_INFO_INIT();
|
||||
info.change_mask = SPA_NODE_CHANGE_MASK_PROPS;
|
||||
info.props = &SPA_DICT_INIT_ARRAY(node_info_items);
|
||||
|
||||
callbacks->info(data, &info);
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
|
|
|||
|
|
@ -346,8 +346,15 @@ static int impl_node_set_callbacks(struct spa_node *node,
|
|||
this->callbacks_data = data;
|
||||
|
||||
if (callbacks) {
|
||||
if (callbacks->info)
|
||||
callbacks->info(data, &SPA_DICT_INIT_ARRAY(info_items));
|
||||
if (callbacks->info) {
|
||||
struct spa_node_info info;
|
||||
|
||||
info = SPA_NODE_INFO_INIT();
|
||||
info.change_mask = SPA_NODE_CHANGE_MASK_PROPS;
|
||||
info.props = &SPA_DICT_INIT_ARRAY(info_items);
|
||||
|
||||
callbacks->info(data, &info);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -407,8 +407,15 @@ impl_node_set_callbacks(struct spa_node *node,
|
|||
this->callbacks_data = data;
|
||||
|
||||
if (callbacks) {
|
||||
if (callbacks->info)
|
||||
callbacks->info(data, &SPA_DICT_INIT_ARRAY(node_info_items));
|
||||
if (callbacks->info) {
|
||||
struct spa_node_info info;
|
||||
|
||||
info = SPA_NODE_INFO_INIT();
|
||||
info.change_mask = SPA_NODE_CHANGE_MASK_PROPS;
|
||||
info.props = &SPA_DICT_INIT_ARRAY(node_info_items);
|
||||
|
||||
callbacks->info(data, &info);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -135,10 +135,12 @@ inspect_port_params(struct data *data, struct spa_node *node,
|
|||
}
|
||||
}
|
||||
|
||||
static void node_info(void *data, const struct spa_dict *info)
|
||||
static void node_info(void *data, const struct spa_node_info *info)
|
||||
{
|
||||
printf("node properties:\n");
|
||||
spa_debug_dict(2, info);
|
||||
if (info->change_mask & SPA_NODE_CHANGE_MASK_PROPS) {
|
||||
printf("node properties:\n");
|
||||
spa_debug_dict(2, info->props);
|
||||
}
|
||||
}
|
||||
|
||||
static const struct spa_node_callbacks node_callbacks =
|
||||
|
|
|
|||
|
|
@ -874,10 +874,11 @@ int pw_node_update_properties(struct pw_node *node, const struct spa_dict *dict)
|
|||
return changed;
|
||||
}
|
||||
|
||||
static void node_info(void *data, const struct spa_dict *info)
|
||||
static void node_info(void *data, const struct spa_node_info *info)
|
||||
{
|
||||
struct pw_node *node = data;
|
||||
pw_node_update_properties(node, info);
|
||||
if (info->change_mask & SPA_NODE_CHANGE_MASK_PROPS)
|
||||
pw_node_update_properties(node, info->props);
|
||||
}
|
||||
|
||||
static void node_done(void *data, int seq, int res)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue