mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-03 09:01:54 -05:00
jack: use PIPEWIRE_PROPS for the context as well
Use PIPEWIRE_PROPS to create and connect the context as well. This
makes it possible to pass configuration to the modules loaded by
the context such as:
PIPEWIRE_PROPS="context.modules.args={nice.level=-14}" jack_simple_client
To set the nice level of the jack app.
See #698
This commit is contained in:
parent
895097230d
commit
83c403ed1c
1 changed files with 26 additions and 22 deletions
|
|
@ -2403,8 +2403,22 @@ jack_client_t * jack_client_open (const char *client_name,
|
||||||
varargs_parse(client, options, ap);
|
varargs_parse(client, options, ap);
|
||||||
va_end(ap);
|
va_end(ap);
|
||||||
|
|
||||||
if ((str = getenv("PIPEWIRE_PROFILE_MODULES")) == NULL)
|
if ((str = getenv("PIPEWIRE_PROPS")) != NULL)
|
||||||
str = "default,rtkit";
|
client->props = pw_properties_new_string(str);
|
||||||
|
if (client->props == NULL)
|
||||||
|
client->props = pw_properties_new(NULL, NULL);
|
||||||
|
if (client->props == NULL)
|
||||||
|
goto no_props;
|
||||||
|
|
||||||
|
if (pw_properties_get(client->props, PW_KEY_CONTEXT_PROFILE_MODULES) == NULL) {
|
||||||
|
if ((str = getenv("PIPEWIRE_PROFILE_MODULES")) == NULL)
|
||||||
|
str = "default,rtkit";
|
||||||
|
pw_properties_set(client->props, PW_KEY_CONTEXT_PROFILE_MODULES, str);
|
||||||
|
}
|
||||||
|
pw_properties_set(client->props, "loop.cancel", "true");
|
||||||
|
pw_properties_set(client->props, PW_KEY_REMOTE_NAME, client->server_name);
|
||||||
|
pw_properties_set(client->props, PW_KEY_CLIENT_NAME, client_name);
|
||||||
|
pw_properties_set(client->props, PW_KEY_CLIENT_API, "jack");
|
||||||
|
|
||||||
client->node_id = SPA_ID_INVALID;
|
client->node_id = SPA_ID_INVALID;
|
||||||
strncpy(client->name, client_name, JACK_CLIENT_NAME_SIZE);
|
strncpy(client->name, client_name, JACK_CLIENT_NAME_SIZE);
|
||||||
|
|
@ -2412,10 +2426,7 @@ jack_client_t * jack_client_open (const char *client_name,
|
||||||
client->context.l = pw_thread_loop_get_loop(client->context.loop),
|
client->context.l = pw_thread_loop_get_loop(client->context.loop),
|
||||||
client->context.context = pw_context_new(
|
client->context.context = pw_context_new(
|
||||||
client->context.l,
|
client->context.l,
|
||||||
pw_properties_new(
|
pw_properties_copy(client->props),
|
||||||
PW_KEY_CONTEXT_PROFILE_MODULES, str,
|
|
||||||
"loop.cancel", "true",
|
|
||||||
NULL),
|
|
||||||
0);
|
0);
|
||||||
client->allow_mlock = client->context.context->defaults.mem_allow_mlock;
|
client->allow_mlock = client->context.context->defaults.mem_allow_mlock;
|
||||||
client->warn_mlock = client->context.context->defaults.mem_warn_mlock;
|
client->warn_mlock = client->context.context->defaults.mem_warn_mlock;
|
||||||
|
|
@ -2457,12 +2468,7 @@ jack_client_t * jack_client_open (const char *client_name,
|
||||||
pw_thread_loop_lock(client->context.loop);
|
pw_thread_loop_lock(client->context.loop);
|
||||||
|
|
||||||
client->core = pw_context_connect(client->context.context,
|
client->core = pw_context_connect(client->context.context,
|
||||||
pw_properties_new(
|
pw_properties_copy(client->props), 0);
|
||||||
PW_KEY_REMOTE_NAME, client->server_name,
|
|
||||||
PW_KEY_CLIENT_NAME, client_name,
|
|
||||||
PW_KEY_CLIENT_API, "jack",
|
|
||||||
NULL),
|
|
||||||
0);
|
|
||||||
if (client->core == NULL)
|
if (client->core == NULL)
|
||||||
goto server_failed;
|
goto server_failed;
|
||||||
|
|
||||||
|
|
@ -2477,13 +2483,6 @@ jack_client_t * jack_client_open (const char *client_name,
|
||||||
&client->registry_listener,
|
&client->registry_listener,
|
||||||
®istry_events, client);
|
®istry_events, client);
|
||||||
|
|
||||||
if ((str = getenv("PIPEWIRE_PROPS")) != NULL)
|
|
||||||
client->props = pw_properties_new_string(str);
|
|
||||||
if (client->props == NULL)
|
|
||||||
client->props = pw_properties_new(NULL, NULL);
|
|
||||||
if (client->props == NULL)
|
|
||||||
goto init_failed;
|
|
||||||
|
|
||||||
if (pw_properties_get(client->props, PW_KEY_NODE_NAME) == NULL)
|
if (pw_properties_get(client->props, PW_KEY_NODE_NAME) == NULL)
|
||||||
pw_properties_set(client->props, PW_KEY_NODE_NAME, client_name);
|
pw_properties_set(client->props, PW_KEY_NODE_NAME, client_name);
|
||||||
if (pw_properties_get(client->props, PW_KEY_NODE_DESCRIPTION) == NULL)
|
if (pw_properties_get(client->props, PW_KEY_NODE_DESCRIPTION) == NULL)
|
||||||
|
|
@ -2548,16 +2547,21 @@ jack_client_t * jack_client_open (const char *client_name,
|
||||||
pw_log_debug(NAME" %p: new", client);
|
pw_log_debug(NAME" %p: new", client);
|
||||||
return (jack_client_t *)client;
|
return (jack_client_t *)client;
|
||||||
|
|
||||||
init_failed:
|
no_props:
|
||||||
if (status)
|
if (status)
|
||||||
*status = JackFailure | JackInitFailure;
|
*status = JackFailure | JackInitFailure;
|
||||||
goto exit;
|
goto exit;
|
||||||
|
init_failed:
|
||||||
|
if (status)
|
||||||
|
*status = JackFailure | JackInitFailure;
|
||||||
|
goto exit_unlock;
|
||||||
server_failed:
|
server_failed:
|
||||||
if (status)
|
if (status)
|
||||||
*status = JackFailure | JackServerFailed;
|
*status = JackFailure | JackServerFailed;
|
||||||
goto exit;
|
goto exit_unlock;
|
||||||
exit:
|
exit_unlock:
|
||||||
pw_thread_loop_unlock(client->context.loop);
|
pw_thread_loop_unlock(client->context.loop);
|
||||||
|
exit:
|
||||||
return NULL;
|
return NULL;
|
||||||
disabled:
|
disabled:
|
||||||
if (status)
|
if (status)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue