compositor: free memory from str config sections after done using it
Signed-off-by: U. Artie Eoff <ullysses.a.eoff@intel.com>
This commit is contained in:
committed by
Kristian Høgsberg
parent
ff7550087e
commit
2e2384aac5
+34
-18
@@ -1509,7 +1509,7 @@ weston_buffer_from_resource(struct wl_resource *resource)
|
|||||||
{
|
{
|
||||||
struct weston_buffer *buffer;
|
struct weston_buffer *buffer;
|
||||||
struct wl_listener *listener;
|
struct wl_listener *listener;
|
||||||
|
|
||||||
listener = wl_resource_get_destroy_listener(resource,
|
listener = wl_resource_get_destroy_listener(resource,
|
||||||
weston_buffer_destroy_handler);
|
weston_buffer_destroy_handler);
|
||||||
|
|
||||||
@@ -1526,7 +1526,7 @@ weston_buffer_from_resource(struct wl_resource *resource)
|
|||||||
buffer->destroy_listener.notify = weston_buffer_destroy_handler;
|
buffer->destroy_listener.notify = weston_buffer_destroy_handler;
|
||||||
buffer->y_inverted = 1;
|
buffer->y_inverted = 1;
|
||||||
wl_resource_add_destroy_listener(resource, &buffer->destroy_listener);
|
wl_resource_add_destroy_listener(resource, &buffer->destroy_listener);
|
||||||
|
|
||||||
return buffer;
|
return buffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3857,7 +3857,7 @@ print_backtrace(void)
|
|||||||
filename = dlinfo.dli_fname;
|
filename = dlinfo.dli_fname;
|
||||||
else
|
else
|
||||||
filename = "?";
|
filename = "?";
|
||||||
|
|
||||||
weston_log("%u: %s (%s%s+0x%x) [%p]\n", i++, filename, procname,
|
weston_log("%u: %s (%s%s+0x%x) [%p]\n", i++, filename, procname,
|
||||||
ret == -UNW_ENOMEM ? "..." : "", (int)off, (void *)(pip.start_ip + off));
|
ret == -UNW_ENOMEM ? "..." : "", (int)off, (void *)(pip.start_ip + off));
|
||||||
|
|
||||||
@@ -3914,6 +3914,9 @@ weston_load_module(const char *name, const char *entrypoint)
|
|||||||
char path[PATH_MAX];
|
char path[PATH_MAX];
|
||||||
void *module, *init;
|
void *module, *init;
|
||||||
|
|
||||||
|
if (name == NULL)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
if (name[0] != '/')
|
if (name[0] != '/')
|
||||||
snprintf(path, sizeof path, "%s/%s", MODULEDIR, name);
|
snprintf(path, sizeof path, "%s/%s", MODULEDIR, name);
|
||||||
else
|
else
|
||||||
@@ -4125,6 +4128,7 @@ int main(int argc, char *argv[])
|
|||||||
char *backend = NULL;
|
char *backend = NULL;
|
||||||
char *option_backend = NULL;
|
char *option_backend = NULL;
|
||||||
char *shell = NULL;
|
char *shell = NULL;
|
||||||
|
char *option_shell = NULL;
|
||||||
char *modules, *option_modules = NULL;
|
char *modules, *option_modules = NULL;
|
||||||
char *log = NULL;
|
char *log = NULL;
|
||||||
int32_t idle_time = 300;
|
int32_t idle_time = 300;
|
||||||
@@ -4136,7 +4140,7 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
const struct weston_option core_options[] = {
|
const struct weston_option core_options[] = {
|
||||||
{ WESTON_OPTION_STRING, "backend", 'B', &option_backend },
|
{ WESTON_OPTION_STRING, "backend", 'B', &option_backend },
|
||||||
{ WESTON_OPTION_STRING, "shell", 0, &shell },
|
{ WESTON_OPTION_STRING, "shell", 0, &option_shell },
|
||||||
{ WESTON_OPTION_STRING, "socket", 'S', &socket_name },
|
{ WESTON_OPTION_STRING, "socket", 'S', &socket_name },
|
||||||
{ WESTON_OPTION_INTEGER, "idle-time", 'i', &idle_time },
|
{ WESTON_OPTION_INTEGER, "idle-time", 'i', &idle_time },
|
||||||
{ WESTON_OPTION_STRING, "modules", 0, &option_modules },
|
{ WESTON_OPTION_STRING, "modules", 0, &option_modules },
|
||||||
@@ -4156,7 +4160,7 @@ int main(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
|
|
||||||
weston_log_file_open(log);
|
weston_log_file_open(log);
|
||||||
|
|
||||||
weston_log("%s\n"
|
weston_log("%s\n"
|
||||||
STAMP_SPACE "%s\n"
|
STAMP_SPACE "%s\n"
|
||||||
STAMP_SPACE "Bug reports to: %s\n"
|
STAMP_SPACE "Bug reports to: %s\n"
|
||||||
@@ -4190,22 +4194,23 @@ int main(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
section = weston_config_get_section(config, "core", NULL, NULL);
|
section = weston_config_get_section(config, "core", NULL, NULL);
|
||||||
|
|
||||||
weston_config_section_get_string(section, "backend", &backend, NULL);
|
if (option_backend)
|
||||||
if (option_backend) {
|
backend = strdup(option_backend);
|
||||||
backend = option_backend;
|
else
|
||||||
}
|
weston_config_section_get_string(section, "backend", &backend,
|
||||||
|
NULL);
|
||||||
|
|
||||||
if (!backend) {
|
if (!backend) {
|
||||||
if (getenv("WAYLAND_DISPLAY"))
|
if (getenv("WAYLAND_DISPLAY"))
|
||||||
backend = "wayland-backend.so";
|
backend = strdup("wayland-backend.so");
|
||||||
else if (getenv("DISPLAY"))
|
else if (getenv("DISPLAY"))
|
||||||
backend = "x11-backend.so";
|
backend = strdup("x11-backend.so");
|
||||||
else
|
else
|
||||||
backend = WESTON_NATIVE_BACKEND;
|
backend = strdup(WESTON_NATIVE_BACKEND);
|
||||||
}
|
}
|
||||||
|
|
||||||
weston_config_section_get_string(section, "modules", &modules, "");
|
|
||||||
|
|
||||||
backend_init = weston_load_module(backend, "backend_init");
|
backend_init = weston_load_module(backend, "backend_init");
|
||||||
|
free(backend);
|
||||||
if (!backend_init)
|
if (!backend_init)
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
|
|
||||||
@@ -4223,14 +4228,25 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
setenv("WAYLAND_DISPLAY", socket_name, 1);
|
setenv("WAYLAND_DISPLAY", socket_name, 1);
|
||||||
|
|
||||||
if (!shell)
|
if (option_shell)
|
||||||
|
shell = strdup(option_shell);
|
||||||
|
else
|
||||||
weston_config_section_get_string(section, "shell", &shell,
|
weston_config_section_get_string(section, "shell", &shell,
|
||||||
"desktop-shell.so");
|
"desktop-shell.so");
|
||||||
if (load_modules(ec, shell, &argc, argv) < 0)
|
|
||||||
goto out;
|
|
||||||
|
|
||||||
if (load_modules(ec, modules, &argc, argv) < 0)
|
if (load_modules(ec, shell, &argc, argv) < 0) {
|
||||||
|
free(shell);
|
||||||
goto out;
|
goto out;
|
||||||
|
}
|
||||||
|
free(shell);
|
||||||
|
|
||||||
|
weston_config_section_get_string(section, "modules", &modules, "");
|
||||||
|
if (load_modules(ec, modules, &argc, argv) < 0) {
|
||||||
|
free(modules);
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
free(modules);
|
||||||
|
|
||||||
if (load_modules(ec, option_modules, &argc, argv) < 0)
|
if (load_modules(ec, option_modules, &argc, argv) < 0)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user