pw-cli: add -m option

To keep the mainloop running and keep the process (and objects) alive.
Interesting when doing pw-cli load-module libpipewire-module-loopback.
This commit is contained in:
Wim Taymans 2022-06-09 17:24:13 +02:00
parent 4821c7ca2f
commit 9255cfbd7c

View file

@ -3152,11 +3152,12 @@ int main(int argc, char *argv[])
struct pw_loop *l; struct pw_loop *l;
char *opt_remote = NULL; char *opt_remote = NULL;
char *error; char *error;
bool daemon = false; bool daemon = false, monitor = false;
struct remote_data *rd; struct remote_data *rd;
static const struct option long_options[] = { static const struct option long_options[] = {
{ "help", no_argument, NULL, 'h' }, { "help", no_argument, NULL, 'h' },
{ "version", no_argument, NULL, 'V' }, { "version", no_argument, NULL, 'V' },
{ "monitor", no_argument, NULL, 'm' },
{ "daemon", no_argument, NULL, 'd' }, { "daemon", no_argument, NULL, 'd' },
{ "remote", required_argument, NULL, 'r' }, { "remote", required_argument, NULL, 'r' },
{ NULL, 0, NULL, 0} { NULL, 0, NULL, 0}
@ -3168,7 +3169,7 @@ int main(int argc, char *argv[])
setlocale(LC_ALL, ""); setlocale(LC_ALL, "");
pw_init(&argc, &argv); pw_init(&argc, &argv);
while ((c = getopt_long(argc, argv, "hVdr:", long_options, NULL)) != -1) { while ((c = getopt_long(argc, argv, "hVmdr:", long_options, NULL)) != -1) {
switch (c) { switch (c) {
case 'h': case 'h':
show_help(&data, argv[0], false); show_help(&data, argv[0], false);
@ -3184,6 +3185,9 @@ int main(int argc, char *argv[])
case 'd': case 'd':
daemon = true; daemon = true;
break; break;
case 'm':
monitor = true;
break;
case 'r': case 'r':
opt_remote = optarg; opt_remote = optarg;
break; break;
@ -3250,9 +3254,11 @@ int main(int argc, char *argv[])
fprintf(stderr, "Error: \"%s\"\n", error); fprintf(stderr, "Error: \"%s\"\n", error);
free(error); free(error);
} }
if (!data.quit && data.current) { while (!data.quit && data.current) {
data.current->prompt_pending = pw_core_sync(data.current->core, 0, 0); data.current->prompt_pending = pw_core_sync(data.current->core, 0, 0);
pw_main_loop_run(data.loop); pw_main_loop_run(data.loop);
if (!monitor)
break;
} }
} }
spa_list_consume(rd, &data.remotes, link) spa_list_consume(rd, &data.remotes, link)