add some missing events

Add initialized events for completeness
This commit is contained in:
Wim Taymans 2019-11-25 15:58:19 +01:00
parent b73976ff10
commit b7c5e00697
14 changed files with 44 additions and 2 deletions

View file

@ -412,6 +412,8 @@ int pw_client_register(struct pw_client *client,
pw_properties_setf(client->properties, PW_KEY_OBJECT_ID, "%d", client->info.id); pw_properties_setf(client->properties, PW_KEY_OBJECT_ID, "%d", client->info.id);
client->info.props = &client->properties->dict; client->info.props = &client->properties->dict;
pw_client_emit_initialized(client);
pw_global_add_listener(client->global, &client->global_listener, &global_events, client); pw_global_add_listener(client->global, &client->global_listener, &global_events, client);
pw_global_register(client->global); pw_global_register(client->global);

View file

@ -91,6 +91,9 @@ struct pw_client_events {
/** emited right before the client is freed */ /** emited right before the client is freed */
void (*free) (void *data); void (*free) (void *data);
/** the client is initialized */
void (*initialized) (void *data);
/** emited when the client info changed */ /** emited when the client info changed */
void (*info_changed) (void *data, const struct pw_client_info *info); void (*info_changed) (void *data, const struct pw_client_info *info);

View file

@ -445,6 +445,8 @@ int pw_device_register(struct pw_device *device,
pw_properties_setf(device->properties, PW_KEY_OBJECT_ID, "%d", device->info.id); pw_properties_setf(device->properties, PW_KEY_OBJECT_ID, "%d", device->info.id);
device->info.props = &device->properties->dict; device->info.props = &device->properties->dict;
pw_device_emit_initialized(device);
pw_global_add_listener(device->global, &device->global_listener, &global_events, device); pw_global_add_listener(device->global, &device->global_listener, &global_events, device);
pw_global_register(device->global); pw_global_register(device->global);

View file

@ -58,6 +58,8 @@ struct pw_device_events {
void (*destroy) (void *data); void (*destroy) (void *data);
/** the device is freed */ /** the device is freed */
void (*free) (void *data); void (*free) (void *data);
/** the device is initialized */
void (*initialized) (void *data);
/** the device info changed */ /** the device info changed */
void (*info_changed) (void *data, const struct pw_device_info *info); void (*info_changed) (void *data, const struct pw_device_info *info);

View file

@ -99,6 +99,7 @@ void pw_factory_destroy(struct pw_factory *factory)
pw_global_destroy(factory->global); pw_global_destroy(factory->global);
} }
pw_factory_emit_free(factory);
pw_log_debug(NAME" %p: free", factory); pw_log_debug(NAME" %p: free", factory);
free((char *)factory->info.name); free((char *)factory->info.name);
@ -232,6 +233,8 @@ int pw_factory_register(struct pw_factory *factory,
pw_properties_setf(factory->properties, PW_KEY_OBJECT_ID, "%d", factory->info.id); pw_properties_setf(factory->properties, PW_KEY_OBJECT_ID, "%d", factory->info.id);
factory->info.props = &factory->properties->dict; factory->info.props = &factory->properties->dict;
pw_factory_emit_initialized(factory);
pw_global_add_listener(factory->global, &factory->global_listener, &global_events, factory); pw_global_add_listener(factory->global, &factory->global_listener, &global_events, factory);
pw_global_register(factory->global); pw_global_register(factory->global);

View file

@ -50,6 +50,10 @@ struct pw_factory_events {
/** the factory is destroyed */ /** the factory is destroyed */
void (*destroy) (void *data); void (*destroy) (void *data);
/** the factory is freed */
void (*free) (void *data);
/** the factory is initialized */
void (*initialized) (void *data);
}; };
struct pw_factory_implementation { struct pw_factory_implementation {

View file

@ -1248,6 +1248,8 @@ int pw_link_register(struct pw_link *link,
pw_properties_setf(link->properties, PW_KEY_OBJECT_ID, "%d", link->info.id); pw_properties_setf(link->properties, PW_KEY_OBJECT_ID, "%d", link->info.id);
link->info.props = &link->properties->dict; link->info.props = &link->properties->dict;
pw_link_emit_initialized(link);
pw_global_add_listener(link->global, &link->global_listener, &global_events, link); pw_global_add_listener(link->global, &link->global_listener, &global_events, link);
pw_global_register(link->global); pw_global_register(link->global);

View file

@ -61,6 +61,9 @@ struct pw_link_events {
/** A link is freed */ /** A link is freed */
void (*free) (void *data); void (*free) (void *data);
/** a Link is initialized */
void (*initialized) (void *data);
/** The info changed on a link */ /** The info changed on a link */
void (*info_changed) (void *data, const struct pw_link_info *info); void (*info_changed) (void *data, const struct pw_link_info *info);

View file

@ -264,6 +264,8 @@ pw_module_load(struct pw_core *core,
pw_properties_setf(this->properties, PW_KEY_OBJECT_ID, "%d", this->info.id); pw_properties_setf(this->properties, PW_KEY_OBJECT_ID, "%d", this->info.id);
this->info.props = &this->properties->dict; this->info.props = &this->properties->dict;
pw_module_emit_initialized(this);
pw_global_add_listener(this->global, &this->global_listener, &global_events, this); pw_global_add_listener(this->global, &this->global_listener, &global_events, this);
if ((res = init_func(this, args)) < 0) if ((res = init_func(this, args)) < 0)
@ -334,7 +336,8 @@ void pw_module_destroy(struct pw_module *module)
pw_global_destroy(module->global); pw_global_destroy(module->global);
} }
pw_log_debug(NAME" %p: destroy", module); pw_log_debug(NAME" %p: free", module);
pw_module_emit_free(module);
free((char *) module->info.name); free((char *) module->info.name);
free((char *) module->info.filename); free((char *) module->info.filename);
free((char *) module->info.args); free((char *) module->info.args);

View file

@ -63,6 +63,10 @@ struct pw_module_events {
/** The module is destroyed */ /** The module is destroyed */
void (*destroy) (void *data); void (*destroy) (void *data);
/** The module is freed */
void (*free) (void *data);
/** The module is initialized */
void (*initialized) (void *data);
/** The module is registered. This is a good time to register /** The module is registered. This is a good time to register
* objectes created from the module. */ * objectes created from the module. */

View file

@ -607,8 +607,9 @@ int pw_node_register(struct pw_node *this,
insert_driver(core, this); insert_driver(core, this);
this->registered = true; this->registered = true;
this->rt.activation->position.clock.id = this->global->id;
this->info.id = this->global->id; this->info.id = this->global->id;
this->rt.activation->position.clock.id = this->info.id;
pw_properties_setf(this->properties, PW_KEY_OBJECT_ID, "%d", this->info.id); pw_properties_setf(this->properties, PW_KEY_OBJECT_ID, "%d", this->info.id);
this->info.props = &this->properties->dict; this->info.props = &this->properties->dict;

View file

@ -819,6 +819,8 @@ int pw_port_register(struct pw_port *port,
pw_properties_setf(port->properties, PW_KEY_OBJECT_ID, "%d", port->info.id); pw_properties_setf(port->properties, PW_KEY_OBJECT_ID, "%d", port->info.id);
port->info.props = &port->properties->dict; port->info.props = &port->properties->dict;
pw_port_emit_initialized(port);
return pw_global_register(port->global); return pw_global_register(port->global);
} }

View file

@ -68,6 +68,9 @@ struct pw_port_events {
/** The port is freed */ /** The port is freed */
void (*free) (void *data); void (*free) (void *data);
/** The port is initialized */
void (*initialized) (void *data);
/** the port info changed */ /** the port info changed */
void (*info_changed) (void *data, const struct pw_port_info *info); void (*info_changed) (void *data, const struct pw_port_info *info);

View file

@ -91,6 +91,7 @@ typedef uint32_t (*pw_permission_func_t) (struct pw_global *global,
#define pw_client_emit_destroy(o) pw_client_emit(o, destroy, 0) #define pw_client_emit_destroy(o) pw_client_emit(o, destroy, 0)
#define pw_client_emit_free(o) pw_client_emit(o, free, 0) #define pw_client_emit_free(o) pw_client_emit(o, free, 0)
#define pw_client_emit_initialized(o) pw_client_emit(o, initialized, 0)
#define pw_client_emit_info_changed(o,i) pw_client_emit(o, info_changed, 0, i) #define pw_client_emit_info_changed(o,i) pw_client_emit(o, info_changed, 0, i)
#define pw_client_emit_resource_added(o,r) pw_client_emit(o, resource_added, 0, r) #define pw_client_emit_resource_added(o,r) pw_client_emit(o, resource_added, 0, r)
#define pw_client_emit_resource_impl(o,r) pw_client_emit(o, resource_impl, 0, r) #define pw_client_emit_resource_impl(o,r) pw_client_emit(o, resource_impl, 0, r)
@ -280,6 +281,7 @@ struct pw_main_loop {
#define pw_device_emit(o,m,v,...) spa_hook_list_call(&o->listener_list, struct pw_device_events, m, v, ##__VA_ARGS__) #define pw_device_emit(o,m,v,...) spa_hook_list_call(&o->listener_list, struct pw_device_events, m, v, ##__VA_ARGS__)
#define pw_device_emit_destroy(m) pw_device_emit(m, destroy, 0) #define pw_device_emit_destroy(m) pw_device_emit(m, destroy, 0)
#define pw_device_emit_free(m) pw_device_emit(m, free, 0) #define pw_device_emit_free(m) pw_device_emit(m, free, 0)
#define pw_device_emit_initialized(m) pw_device_emit(m, initialized, 0)
#define pw_device_emit_info_changed(n,i) pw_device_emit(n, info_changed, 0, i) #define pw_device_emit_info_changed(n,i) pw_device_emit(n, info_changed, 0, i)
struct pw_device { struct pw_device {
@ -307,6 +309,8 @@ struct pw_device {
#define pw_module_emit(o,m,v,...) spa_hook_list_call(&o->listener_list, struct pw_module_events, m, v, ##__VA_ARGS__) #define pw_module_emit(o,m,v,...) spa_hook_list_call(&o->listener_list, struct pw_module_events, m, v, ##__VA_ARGS__)
#define pw_module_emit_destroy(m) pw_module_emit(m, destroy, 0) #define pw_module_emit_destroy(m) pw_module_emit(m, destroy, 0)
#define pw_module_emit_free(m) pw_module_emit(m, free, 0)
#define pw_module_emit_initialized(m) pw_module_emit(m, initialized, 0)
#define pw_module_emit_registered(m) pw_module_emit(m, registered, 0) #define pw_module_emit_registered(m) pw_module_emit(m, registered, 0)
struct pw_module { struct pw_module {
@ -549,6 +553,7 @@ struct pw_port_implementation {
#define pw_port_emit(o,m,v,...) spa_hook_list_call(&o->listener_list, struct pw_port_events, m, v, ##__VA_ARGS__) #define pw_port_emit(o,m,v,...) spa_hook_list_call(&o->listener_list, struct pw_port_events, m, v, ##__VA_ARGS__)
#define pw_port_emit_destroy(p) pw_port_emit(p, destroy, 0) #define pw_port_emit_destroy(p) pw_port_emit(p, destroy, 0)
#define pw_port_emit_free(p) pw_port_emit(p, free, 0) #define pw_port_emit_free(p) pw_port_emit(p, free, 0)
#define pw_port_emit_initialized(p) pw_port_emit(p, initialized, 0)
#define pw_port_emit_info_changed(p,i) pw_port_emit(p, info_changed, 0, i) #define pw_port_emit_info_changed(p,i) pw_port_emit(p, info_changed, 0, i)
#define pw_port_emit_link_added(p,l) pw_port_emit(p, link_added, 0, l) #define pw_port_emit_link_added(p,l) pw_port_emit(p, link_added, 0, l)
#define pw_port_emit_link_removed(p,l) pw_port_emit(p, link_removed, 0, l) #define pw_port_emit_link_removed(p,l) pw_port_emit(p, link_removed, 0, l)
@ -631,6 +636,7 @@ struct pw_control_link {
#define pw_link_emit(o,m,v,...) spa_hook_list_call(&o->listener_list, struct pw_link_events, m, v, ##__VA_ARGS__) #define pw_link_emit(o,m,v,...) spa_hook_list_call(&o->listener_list, struct pw_link_events, m, v, ##__VA_ARGS__)
#define pw_link_emit_destroy(l) pw_link_emit(l, destroy, 0) #define pw_link_emit_destroy(l) pw_link_emit(l, destroy, 0)
#define pw_link_emit_free(l) pw_link_emit(l, free, 0) #define pw_link_emit_free(l) pw_link_emit(l, free, 0)
#define pw_link_emit_initialized(l) pw_link_emit(l, initialized, 0)
#define pw_link_emit_info_changed(l,i) pw_link_emit(l, info_changed, 0, i) #define pw_link_emit_info_changed(l,i) pw_link_emit(l, info_changed, 0, i)
#define pw_link_emit_state_changed(l,...) pw_link_emit(l, state_changed, 0, __VA_ARGS__) #define pw_link_emit_state_changed(l,...) pw_link_emit(l, state_changed, 0, __VA_ARGS__)
#define pw_link_emit_port_unlinked(l,p) pw_link_emit(l, port_unlinked, 0, p) #define pw_link_emit_port_unlinked(l,p) pw_link_emit(l, port_unlinked, 0, p)
@ -825,6 +831,8 @@ struct pw_filter {
#define pw_factory_emit(s,m,v,...) spa_hook_list_call(&s->listener_list, struct pw_factory_events, m, v, ##__VA_ARGS__) #define pw_factory_emit(s,m,v,...) spa_hook_list_call(&s->listener_list, struct pw_factory_events, m, v, ##__VA_ARGS__)
#define pw_factory_emit_destroy(s) pw_factory_emit(s, destroy, 0) #define pw_factory_emit_destroy(s) pw_factory_emit(s, destroy, 0)
#define pw_factory_emit_free(s) pw_factory_emit(s, free, 0)
#define pw_factory_emit_initialized(s) pw_factory_emit(s, initialized, 0)
struct pw_factory { struct pw_factory {
struct pw_core *core; /**< the core */ struct pw_core *core; /**< the core */