wayland: fix memory leaks

There are still some leaks from wayland-cursor stuff, but there is no way to
free the memory as user of the cursor library.

Conflicts:
	video/out/wayland_common.c
This commit is contained in:
Alexander Preisinger authored and wm4 committed 2014-01-15 20:50:52 +01:00
1 parent 4ee8d8d3f9
commit a63fab8921
3 files changed
+23 -2

No files matched your search

+3 -2
View File
@@ -188,11 +188,12 @@ static void releaseGlContext_wayland(MPGLContext *ctx)
struct vo_wayland_state *wl = ctx->vo->wayland;
gl->Finish();
eglReleaseThread();
wl_egl_window_destroy(wl->egl_context.egl_window);
eglDestroySurface(wl->egl_context.egl.dpy, wl->egl_context.egl_surface);
eglMakeCurrent(wl->egl_context.egl.dpy, NULL, NULL, EGL_NO_CONTEXT);
eglDestroyContext(wl->egl_context.egl.dpy, wl->egl_context.egl.ctx);
eglTerminate(wl->egl_context.egl.dpy);
eglReleaseThread();
wl_egl_window_destroy(wl->egl_context.egl_window);
wl->egl_context.egl.ctx = NULL;
}
+3
View File
@@ -651,6 +651,9 @@ static void uninit(struct vo *vo)
for (int i = 0; i < MAX_BUFFERS; ++i)
destroy_shm_buffer(&p->buffers[i]);
if (p->redraw_callback)
wl_callback_destroy(p->redraw_callback);
talloc_free(p->original_image);
vo_wayland_uninit(vo);
+17
View File
@@ -659,6 +659,20 @@ static bool create_display (struct vo_wayland_state *wl)
static void destroy_display (struct vo_wayland_state *wl)
{
struct vo_wayland_output *output;
wl_list_for_each(output, &wl->display.output_list, link) {
if (output && output->output) {
wl_output_destroy(output->output);
output->output = NULL;
}
}
wl_list_empty(&wl->display.output_list);
if (wl->display.shm)
wl_shm_destroy(wl->display.shm);
if (wl->display.shell)
wl_shell_destroy(wl->display.shell);
@@ -667,6 +681,7 @@ static void destroy_display (struct vo_wayland_state *wl)
if (wl->display.registry)
wl_registry_destroy(wl->display.registry);
if (wl->display.display) {
wl_display_flush(wl->display.display);
wl_display_disconnect(wl->display.display);
@@ -697,6 +712,7 @@ static void destroy_window (struct vo_wayland_state *wl)
{
if (wl->window.shell_surface)
wl_shell_surface_destroy(wl->window.shell_surface);
if (wl->window.surface)
wl_surface_destroy(wl->window.surface);
}
@@ -748,6 +764,7 @@ static void destroy_input (struct vo_wayland_state *wl)
xkb_map_unref(wl->input.xkb.keymap);
xkb_state_unref(wl->input.xkb.state);
}
if (wl->input.xkb.context)
xkb_context_unref(wl->input.xkb.context);