mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-04 13:30:12 -05:00
pipewire: cleanup on error
To make leak checks more accurate.
This commit is contained in:
parent
4c64afc4ff
commit
c12bdb8c6c
1 changed files with 19 additions and 10 deletions
|
|
@ -52,9 +52,9 @@ static void show_help(const char *name, const char *config_name)
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
struct pw_context *context;
|
struct pw_context *context = NULL;
|
||||||
struct pw_main_loop *loop;
|
struct pw_main_loop *loop = NULL;
|
||||||
struct pw_properties *properties;
|
struct pw_properties *properties = NULL;
|
||||||
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' },
|
||||||
|
|
@ -62,7 +62,7 @@ int main(int argc, char *argv[])
|
||||||
|
|
||||||
{ NULL, 0, NULL, 0}
|
{ NULL, 0, NULL, 0}
|
||||||
};
|
};
|
||||||
int c;
|
int c, res = 0;
|
||||||
char path[PATH_MAX];
|
char path[PATH_MAX];
|
||||||
const char *config_name;
|
const char *config_name;
|
||||||
|
|
||||||
|
|
@ -91,7 +91,8 @@ int main(int argc, char *argv[])
|
||||||
config_name = optarg;
|
config_name = optarg;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return -1;
|
res = -EINVAL;
|
||||||
|
goto done;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -102,25 +103,33 @@ int main(int argc, char *argv[])
|
||||||
loop = pw_main_loop_new(&properties->dict);
|
loop = pw_main_loop_new(&properties->dict);
|
||||||
if (loop == NULL) {
|
if (loop == NULL) {
|
||||||
pw_log_error("failed to create main-loop: %m");
|
pw_log_error("failed to create main-loop: %m");
|
||||||
return -1;
|
res = -errno;
|
||||||
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
pw_loop_add_signal(pw_main_loop_get_loop(loop), SIGINT, do_quit, loop);
|
pw_loop_add_signal(pw_main_loop_get_loop(loop), SIGINT, do_quit, loop);
|
||||||
pw_loop_add_signal(pw_main_loop_get_loop(loop), SIGTERM, do_quit, loop);
|
pw_loop_add_signal(pw_main_loop_get_loop(loop), SIGTERM, do_quit, loop);
|
||||||
|
|
||||||
context = pw_context_new(pw_main_loop_get_loop(loop), properties, 0);
|
context = pw_context_new(pw_main_loop_get_loop(loop), properties, 0);
|
||||||
|
properties = NULL;
|
||||||
|
|
||||||
if (context == NULL) {
|
if (context == NULL) {
|
||||||
pw_log_error("failed to create context: %m");
|
pw_log_error("failed to create context: %m");
|
||||||
return -1;
|
res = -errno;
|
||||||
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
pw_log_info("start main loop");
|
pw_log_info("start main loop");
|
||||||
pw_main_loop_run(loop);
|
pw_main_loop_run(loop);
|
||||||
pw_log_info("leave main loop");
|
pw_log_info("leave main loop");
|
||||||
|
|
||||||
|
done:
|
||||||
|
pw_properties_free(properties);
|
||||||
|
if (context)
|
||||||
pw_context_destroy(context);
|
pw_context_destroy(context);
|
||||||
|
if (loop)
|
||||||
pw_main_loop_destroy(loop);
|
pw_main_loop_destroy(loop);
|
||||||
pw_deinit();
|
pw_deinit();
|
||||||
|
|
||||||
return 0;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue