diff options
author | Lennart Poettering <lennart@poettering.net> | 2006-07-13 17:35:10 +0000 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2006-07-13 17:35:10 +0000 |
commit | 1fd18d6b5fce487faea673d093019395ec783fbc (patch) | |
tree | 96870bbaf694ff59a30cec47b8d5256e06755542 /src/utils | |
parent | d989c692ac2178f0724bd34d5ac0bc2c12176efb (diff) | |
download | pulseaudio-1fd18d6b5fce487faea673d093019395ec783fbc.tar.gz |
* add proper error handling to pabrowse.c
* properly destroy pa_browser object on exit
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1071 fefdeb5f-60dc-0310-8127-8f9354f1896f
Diffstat (limited to 'src/utils')
-rw-r--r-- | src/utils/pabrowse.c | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/src/utils/pabrowse.c b/src/utils/pabrowse.c index 954e4e6c2..450182f5f 100644 --- a/src/utils/pabrowse.c +++ b/src/utils/pabrowse.c @@ -107,10 +107,18 @@ static void browser_callback(pa_browser *b, pa_browse_opcode_t c, const pa_brows } } +static void error_callback(pa_browser *b, const char *s, void *userdata) { + pa_mainloop_api*m = userdata; + + fprintf(stderr, "Failure: %s\n", s); + m->quit(m, 1); +} + int main(int argc, char *argv[]) { pa_mainloop *mainloop = NULL; pa_browser *browser = NULL; int ret = 1, r; + const char *s; if (!(mainloop = pa_mainloop_new())) goto finish; @@ -121,15 +129,22 @@ int main(int argc, char *argv[]) { pa_signal_new(SIGTERM, exit_signal_callback, NULL); signal(SIGPIPE, SIG_IGN); - if (!(browser = pa_browser_new(pa_mainloop_get_api(mainloop)))) + if (!(browser = pa_browser_new_full(pa_mainloop_get_api(mainloop), PA_BROWSE_FOR_SERVERS|PA_BROWSE_FOR_SINKS|PA_BROWSE_FOR_SOURCES, &s))) { + fprintf(stderr, "pa_browse_new_full(): %s\n", s); goto finish; + } pa_browser_set_callback(browser, browser_callback, NULL); + pa_browser_set_error_callback(browser, error_callback, pa_mainloop_get_api(mainloop)); ret = 0; pa_mainloop_run(mainloop, &ret); finish: + + if (browser) + pa_browser_unref(browser); + if (mainloop) { pa_signal_done(); pa_mainloop_free(mainloop); |