mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-01 22:58:50 -04:00
remote: add user data
This commit is contained in:
parent
2ca25e5bf4
commit
8a45fd4f31
13 changed files with 31 additions and 14 deletions
|
|
@ -516,7 +516,7 @@ int main(int argc, char *argv[])
|
|||
data.loop = pw_main_loop_new(NULL);
|
||||
data.core = pw_core_new(pw_main_loop_get_loop(data.loop), NULL);
|
||||
data.t = pw_core_get_type(data.core);
|
||||
data.remote = pw_remote_new(data.core, NULL);
|
||||
data.remote = pw_remote_new(data.core, NULL, 0);
|
||||
data.path = argc > 1 ? argv[1] : NULL;
|
||||
|
||||
pw_module_load(data.core, "libpipewire-module-spa-node-factory", NULL);
|
||||
|
|
|
|||
|
|
@ -299,6 +299,7 @@ static int impl_port_use_buffers(struct spa_node *node, enum spa_direction direc
|
|||
|
||||
static inline void reuse_buffer(struct data *d, uint32_t id)
|
||||
{
|
||||
pw_log_trace("sine-source %p: recycle buffer %d", d, id);
|
||||
spa_list_append(&d->empty, &d->buffers[id].link);
|
||||
}
|
||||
|
||||
|
|
@ -410,7 +411,7 @@ int main(int argc, char *argv[])
|
|||
data.loop = pw_main_loop_new(NULL);
|
||||
data.core = pw_core_new(pw_main_loop_get_loop(data.loop), NULL);
|
||||
data.t = pw_core_get_type(data.core);
|
||||
data.remote = pw_remote_new(data.core, NULL);
|
||||
data.remote = pw_remote_new(data.core, NULL, 0);
|
||||
data.path = argc > 1 ? argv[1] : NULL;
|
||||
|
||||
spa_list_init(&data.empty);
|
||||
|
|
|
|||
|
|
@ -125,7 +125,7 @@ int main(int argc, char *argv[])
|
|||
pw_loop_add_signal(l, SIGTERM, do_quit, &data);
|
||||
data.core = pw_core_new(l, NULL);
|
||||
data.t = pw_core_get_type(data.core);
|
||||
data.remote = pw_remote_new(data.core, NULL);
|
||||
data.remote = pw_remote_new(data.core, NULL, 0);
|
||||
data.library = argv[1];
|
||||
data.factory = argv[2];
|
||||
if (argc > 3)
|
||||
|
|
|
|||
|
|
@ -389,7 +389,7 @@ int main(int argc, char *argv[])
|
|||
data.running = true;
|
||||
data.core = pw_core_new(data.loop, NULL);
|
||||
data.t = pw_core_get_type(data.core);
|
||||
data.remote = pw_remote_new(data.core, NULL);
|
||||
data.remote = pw_remote_new(data.core, NULL, 0);
|
||||
data.path = argc > 1 ? argv[1] : NULL;
|
||||
|
||||
init_type(&data.type, data.t->map);
|
||||
|
|
|
|||
|
|
@ -285,7 +285,7 @@ int main(int argc, char *argv[])
|
|||
data.running = true;
|
||||
data.core = pw_core_new(data.loop, NULL);
|
||||
data.t = pw_core_get_type(data.core);
|
||||
data.remote = pw_remote_new(data.core, NULL);
|
||||
data.remote = pw_remote_new(data.core, NULL, 0);
|
||||
|
||||
init_type(&data.type, data.t->map);
|
||||
|
||||
|
|
|
|||
|
|
@ -437,7 +437,7 @@ gst_pipewire_device_provider_probe (GstDeviceProvider * provider)
|
|||
|
||||
t = pw_core_get_type(c);
|
||||
|
||||
if (!(r = pw_remote_new (c, NULL)))
|
||||
if (!(r = pw_remote_new (c, NULL, 0)))
|
||||
goto failed;
|
||||
|
||||
pw_remote_add_listener(r, &listener, &remote_events, self);
|
||||
|
|
@ -527,7 +527,7 @@ gst_pipewire_device_provider_start (GstDeviceProvider * provider)
|
|||
|
||||
pw_thread_loop_lock (self->main_loop);
|
||||
|
||||
if (!(self->remote = pw_remote_new (self->core, NULL))) {
|
||||
if (!(self->remote = pw_remote_new (self->core, NULL, 0))) {
|
||||
GST_ERROR_OBJECT (self, "Failed to create remote");
|
||||
goto failed_remote;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -826,7 +826,7 @@ gst_pipewire_sink_open (GstPipeWireSink * pwsink)
|
|||
goto mainloop_error;
|
||||
|
||||
pw_thread_loop_lock (pwsink->main_loop);
|
||||
pwsink->remote = pw_remote_new (pwsink->core, NULL);
|
||||
pwsink->remote = pw_remote_new (pwsink->core, NULL, 0);
|
||||
|
||||
pw_remote_add_listener (pwsink->remote,
|
||||
&pwsink->remote_listener,
|
||||
|
|
|
|||
|
|
@ -1032,7 +1032,7 @@ gst_pipewire_src_open (GstPipeWireSrc * pwsrc)
|
|||
goto mainloop_failed;
|
||||
|
||||
pw_thread_loop_lock (pwsrc->main_loop);
|
||||
if ((pwsrc->remote = pw_remote_new (pwsrc->core, NULL)) == NULL)
|
||||
if ((pwsrc->remote = pw_remote_new (pwsrc->core, NULL, 0)) == NULL)
|
||||
goto no_remote;
|
||||
|
||||
pw_remote_add_listener (pwsrc->remote,
|
||||
|
|
|
|||
|
|
@ -106,6 +106,7 @@ static void core_sync(void *object, uint32_t seq)
|
|||
{
|
||||
struct pw_resource *resource = object;
|
||||
|
||||
pw_log_debug("core %p: sync %d from resource %p", resource->core, seq, resource);
|
||||
pw_core_resource_done(resource, seq);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -341,6 +341,8 @@ struct pw_remote {
|
|||
char *error;
|
||||
|
||||
struct spa_hook_list listener_list;
|
||||
|
||||
void *user_data; /**< extra user data */
|
||||
};
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -195,14 +195,15 @@ static const struct pw_core_proxy_events core_proxy_events = {
|
|||
};
|
||||
|
||||
struct pw_remote *pw_remote_new(struct pw_core *core,
|
||||
struct pw_properties *properties)
|
||||
struct pw_properties *properties,
|
||||
size_t user_data_size)
|
||||
{
|
||||
struct remote *impl;
|
||||
struct pw_remote *this;
|
||||
struct pw_protocol *protocol;
|
||||
const char *protocol_name;
|
||||
|
||||
impl = calloc(1, sizeof(struct remote));
|
||||
impl = calloc(1, sizeof(struct remote) + user_data_size);
|
||||
if (impl == NULL)
|
||||
return NULL;
|
||||
|
||||
|
|
@ -211,6 +212,9 @@ struct pw_remote *pw_remote_new(struct pw_core *core,
|
|||
|
||||
this->core = core;
|
||||
|
||||
if (user_data_size > 0)
|
||||
this->user_data = SPA_MEMBER(impl, sizeof(struct remote), void);
|
||||
|
||||
if (properties == NULL)
|
||||
properties = pw_properties_new(NULL, NULL);
|
||||
if (properties == NULL)
|
||||
|
|
@ -288,6 +292,11 @@ struct pw_core *pw_remote_get_core(struct pw_remote *remote)
|
|||
return remote->core;
|
||||
}
|
||||
|
||||
void *pw_remote_get_user_data(struct pw_remote *remote)
|
||||
{
|
||||
return remote->user_data;
|
||||
}
|
||||
|
||||
enum pw_remote_state pw_remote_get_state(struct pw_remote *remote, const char **error)
|
||||
{
|
||||
if (error)
|
||||
|
|
|
|||
|
|
@ -142,8 +142,9 @@ struct pw_remote_events {
|
|||
* \return a new unconnected remote */
|
||||
struct pw_remote *
|
||||
pw_remote_new(struct pw_core *core, /**< a \ref pw_core */
|
||||
struct pw_properties *properties /**< optional properties, ownership of
|
||||
* the properties is taken.*/ );
|
||||
struct pw_properties *properties, /**< optional properties, ownership of
|
||||
* the properties is taken.*/
|
||||
size_t user_data_size /**< extra user data size */);
|
||||
|
||||
/** Destroy a remote \memberof pw_remote */
|
||||
void pw_remote_destroy(struct pw_remote *remote);
|
||||
|
|
@ -151,6 +152,9 @@ void pw_remote_destroy(struct pw_remote *remote);
|
|||
/** Get the core used to construct this remote */
|
||||
struct pw_core *pw_remote_get_core(struct pw_remote *remote);
|
||||
|
||||
/** Get the user_data. The size was given in \ref pw_remote_new */
|
||||
void *pw_remote_get_user_data(struct pw_remote *remote);
|
||||
|
||||
/** Get the current state, \a error is set when state is \ref PW_REMOTE_STATE_ERROR */
|
||||
enum pw_remote_state pw_remote_get_state(struct pw_remote *remote, const char **error);
|
||||
|
||||
|
|
|
|||
|
|
@ -401,7 +401,7 @@ int main(int argc, char *argv[])
|
|||
pw_loop_add_signal(l, SIGTERM, do_quit, &data);
|
||||
|
||||
data.core = pw_core_new(l, NULL);
|
||||
data.remote = pw_remote_new(data.core, NULL);
|
||||
data.remote = pw_remote_new(data.core, NULL, 0);
|
||||
|
||||
pw_remote_add_listener(data.remote, &data.remote_listener, &remote_events, &data);
|
||||
pw_remote_connect(data.remote);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue