From b3aa346063f3b3845e6123a0477be02c125ce88c Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Fri, 20 Nov 2020 12:29:51 +0100 Subject: [PATCH] handle core error better Use the PW_ID_CORE constant Quit the mainloop when server disconnected in the tools See #395 --- src/examples/bluez-session.c | 3 +-- src/examples/export-sink.c | 3 +-- src/examples/export-source.c | 3 +-- src/examples/export-spa-device.c | 3 +-- src/examples/export-spa.c | 3 +-- src/tools/pw-cat.c | 3 ++- src/tools/pw-cli.c | 3 +-- src/tools/pw-dot.c | 3 +-- src/tools/pw-metadata.c | 3 +-- src/tools/pw-mon.c | 4 ++-- src/tools/pw-profiler.c | 2 +- 11 files changed, 13 insertions(+), 20 deletions(-) diff --git a/src/examples/bluez-session.c b/src/examples/bluez-session.c index 421eb261d..6be3b7277 100644 --- a/src/examples/bluez-session.c +++ b/src/examples/bluez-session.c @@ -346,9 +346,8 @@ static void on_core_error(void *data, uint32_t id, int seq, int res, const char pw_log_error("error id:%u seq:%d res:%d (%s): %s", id, seq, res, spa_strerror(res), message); - if (id == 0) { + if (id == PA_ID_CORE && res == -EPIPE) pw_main_loop_quit(impl->loop); - } } static const struct pw_core_events core_events = { diff --git a/src/examples/export-sink.c b/src/examples/export-sink.c index ec4696cc5..170c69eeb 100644 --- a/src/examples/export-sink.c +++ b/src/examples/export-sink.c @@ -502,9 +502,8 @@ static void on_core_error(void *data, uint32_t id, int seq, int res, const char pw_log_error("error id:%u seq:%d res:%d (%s): %s", id, seq, res, spa_strerror(res), message); - if (id == 0) { + if (id == PA_ID_CORE pw_main_loop_quit(d->loop); - } } static const struct pw_core_events core_events = { diff --git a/src/examples/export-source.c b/src/examples/export-source.c index 087f57253..8299994d8 100644 --- a/src/examples/export-source.c +++ b/src/examples/export-source.c @@ -494,9 +494,8 @@ static void on_core_error(void *data, uint32_t id, int seq, int res, const char pw_log_error("error id:%u seq:%d res:%d (%s): %s", id, seq, res, spa_strerror(res), message); - if (id == 0) { + if (id == PA_ID_CORE pw_main_loop_quit(d->loop); - } } static const struct pw_core_events core_events = { diff --git a/src/examples/export-spa-device.c b/src/examples/export-spa-device.c index bc5681b3f..e32ebafb2 100644 --- a/src/examples/export-spa-device.c +++ b/src/examples/export-spa-device.c @@ -77,9 +77,8 @@ static void on_core_error(void *data, uint32_t id, int seq, int res, const char pw_log_error("error id:%u seq:%d res:%d (%s): %s", id, seq, res, spa_strerror(res), message); - if (id == 0) { + if (id == PA_ID_CORE) pw_main_loop_quit(d->loop); - } } static const struct pw_core_events core_events = { diff --git a/src/examples/export-spa.c b/src/examples/export-spa.c index 522798bff..ceb1dced5 100644 --- a/src/examples/export-spa.c +++ b/src/examples/export-spa.c @@ -111,9 +111,8 @@ static void on_core_error(void *data, uint32_t id, int seq, int res, const char pw_log_error("error id:%u seq:%d res:%d (%s): %s", id, seq, res, spa_strerror(res), message); - if (id == 0) { + if (id == PA_ID_CORE) pw_main_loop_quit(d->loop); - } } static const struct pw_core_events core_events = { diff --git a/src/tools/pw-cat.c b/src/tools/pw-cat.c index a37256b1b..85c271db6 100644 --- a/src/tools/pw-cat.c +++ b/src/tools/pw-cat.c @@ -635,7 +635,8 @@ static void on_core_error(void *userdata, uint32_t id, int seq, int res, const c fprintf(stderr, "remote error: id=%"PRIu32" seq:%d res:%d (%s): %s\n", id, seq, res, spa_strerror(res), message); - pw_main_loop_quit(data->loop); + if (id == PW_ID_CORE && res == -EPIPE) + pw_main_loop_quit(data->loop); } static const struct pw_core_events core_events = { diff --git a/src/tools/pw-cli.c b/src/tools/pw-cli.c index feb67c0d1..0ca9b60c6 100644 --- a/src/tools/pw-cli.c +++ b/src/tools/pw-cli.c @@ -413,9 +413,8 @@ static void on_core_error(void *_data, uint32_t id, int seq, int res, const char pw_log_error("remote %p: error id:%u seq:%d res:%d (%s): %s", rd, id, seq, res, spa_strerror(res), message); - if (id == 0) { + if (id == PW_ID_CORE && res == -EPIPE) pw_main_loop_quit(data->loop); - } } static const struct pw_core_events remote_core_events = { diff --git a/src/tools/pw-dot.c b/src/tools/pw-dot.c index 13f6b5cd0..d5a63fa82 100644 --- a/src/tools/pw-dot.c +++ b/src/tools/pw-dot.c @@ -727,9 +727,8 @@ static void on_core_error(void *data, uint32_t id, int seq, int res, const char pw_log_error("error id:%u seq:%d res:%d (%s): %s", id, seq, res, spa_strerror(res), message); - if (id == 0) { + if (id == PW_ID_CORE && res == -EPIPE) pw_main_loop_quit(d->loop); - } } static const struct pw_core_events core_events = { diff --git a/src/tools/pw-metadata.c b/src/tools/pw-metadata.c index 1ca397733..7fc1a558a 100644 --- a/src/tools/pw-metadata.c +++ b/src/tools/pw-metadata.c @@ -146,9 +146,8 @@ static void on_core_error(void *data, uint32_t id, int seq, int res, const char pw_log_error("error id:%u seq:%d res:%d (%s): %s", id, seq, res, spa_strerror(res), message); - if (id == 0) { + if (id == PW_ID_CORE && res == -EPIPE) pw_main_loop_quit(d->loop); - } } static const struct pw_core_events core_events = { diff --git a/src/tools/pw-mon.c b/src/tools/pw-mon.c index 15a392c80..5133b094d 100644 --- a/src/tools/pw-mon.c +++ b/src/tools/pw-mon.c @@ -662,9 +662,9 @@ static void on_core_error(void *_data, uint32_t id, int seq, int res, const char pw_log_error("error id:%u seq:%d res:%d (%s): %s", id, seq, res, spa_strerror(res), message); - if (id == 0) { + + if (id == PW_ID_CORE && res == -EPIPE) pw_main_loop_quit(data->loop); - } } static const struct pw_core_events core_events = { diff --git a/src/tools/pw-profiler.c b/src/tools/pw-profiler.c index 5cc09ca3a..a8c73ef83 100644 --- a/src/tools/pw-profiler.c +++ b/src/tools/pw-profiler.c @@ -508,7 +508,7 @@ static void on_core_error(void *_data, uint32_t id, int seq, int res, const char pw_log_error("error id:%u seq:%d res:%d (%s): %s", id, seq, res, spa_strerror(res), message); - if (id == PW_ID_CORE) + if (id == PW_ID_CORE && res == -EPIPE) pw_main_loop_quit(data->loop); }