1
0
mirror of https://github.com/mpv-player/mpv synced 2025-02-23 16:36:56 +00:00

wayland: free wayland_state on a false return

wm4 mentioned that the wayland autoprobe leaked. A simple oversight in
the wayland_common code forgot to free the vo_wayland_state if
vo_wayland_init returned false.
This commit is contained in:
Dudemanguy911 2019-10-02 18:38:45 -05:00
parent c669a434f3
commit defc8f359c

View File

@ -1043,11 +1043,15 @@ int vo_wayland_init(struct vo *vo)
wl_list_init(&wl->output_list);
if (!wl->display)
if (!wl->display) {
talloc_free(wl);
return false;
}
if (create_input(wl))
if (create_input(wl)) {
talloc_free(wl);
return false;
}
wl->registry = wl_display_get_registry(wl->display);
wl_registry_add_listener(wl->registry, &registry_listener, wl);
@ -1058,18 +1062,22 @@ int vo_wayland_init(struct vo *vo)
if (!wl->wm_base) {
MP_FATAL(wl, "Compositor doesn't support the required %s protocol!\n",
xdg_wm_base_interface.name);
talloc_free(wl);
return false;
}
if (!wl_list_length(&wl->output_list)) {
MP_FATAL(wl, "No outputs found or compositor doesn't support %s (ver. 2)\n",
wl_output_interface.name);
talloc_free(wl);
return false;
}
/* Can't be initialized during registry due to multi-protocol dependence */
if (create_xdg_surface(wl))
if (create_xdg_surface(wl)) {
talloc_free(wl);
return false;
}
if (wl->dnd_devman) {
wl->dnd_ddev = wl_data_device_manager_get_data_device(wl->dnd_devman, wl->seat);