[vlc-commits] picture: factor freeing picture_t
Rémi Denis-Courmont
git at videolan.org
Wed Dec 12 18:57:43 CET 2018
vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Wed Dec 12 19:56:02 2018 +0200| [e6f89b02c75600250cb2eba809caaff7cc4fe53e] | committer: Rémi Denis-Courmont
picture: factor freeing picture_t
Due to private members, manually allocating a picture has not been
possible for a while. So we can assume that all picture_t are allocated
with either picture_NewFromResource() or picture_NewFromFormat().
And we can then just factor the final free() call.
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=e6f89b02c75600250cb2eba809caaff7cc4fe53e
---
modules/hw/d3d11/d3d11_surface.c | 1 -
modules/hw/d3d9/dxa9.c | 1 -
modules/hw/vaapi/vlc_vaapi.c | 1 -
modules/hw/vdpau/display.c | 1 -
modules/video_chroma/copy.c | 1 -
modules/video_output/android/display.h | 1 -
modules/video_output/kms.c | 1 -
modules/video_output/opengl/converter_sw.c | 1 -
modules/video_output/opengl/converter_vdpau.c | 1 -
modules/video_output/vulkan/display.c | 1 -
modules/video_output/wayland/shm.c | 1 -
modules/video_output/win32/direct3d11.c | 1 -
modules/video_output/win32/direct3d9.c | 3 +--
modules/video_output/xcb/pictures.c | 2 --
src/misc/picture.c | 3 +--
src/misc/picture_pool.c | 2 --
16 files changed, 2 insertions(+), 20 deletions(-)
diff --git a/modules/hw/d3d11/d3d11_surface.c b/modules/hw/d3d11/d3d11_surface.c
index 14266ba458..9393cdb0dc 100644
--- a/modules/hw/d3d11/d3d11_surface.c
+++ b/modules/hw/d3d11/d3d11_surface.c
@@ -499,7 +499,6 @@ static void DestroyPicture(picture_t *picture)
picture_sys_t *p_sys = picture->p_sys;
ReleasePictureSys( p_sys );
free(p_sys);
- free(picture);
}
static void DeleteFilter( filter_t * p_filter )
diff --git a/modules/hw/d3d9/dxa9.c b/modules/hw/d3d9/dxa9.c
index 3ea297bcbd..ee40ad185f 100644
--- a/modules/hw/d3d9/dxa9.c
+++ b/modules/hw/d3d9/dxa9.c
@@ -175,7 +175,6 @@ static void DestroyPicture(picture_t *picture)
picture_sys_t *p_sys = picture->p_sys;
ReleasePictureSys( p_sys );
free(p_sys);
- free(picture);
}
static void DeleteFilter( filter_t * p_filter )
diff --git a/modules/hw/vaapi/vlc_vaapi.c b/modules/hw/vaapi/vlc_vaapi.c
index 3c69fea393..b6d6d4bd14 100644
--- a/modules/hw/vaapi/vlc_vaapi.c
+++ b/modules/hw/vaapi/vlc_vaapi.c
@@ -564,7 +564,6 @@ pool_pic_destroy_cb(picture_t *pic)
free(instance);
}
free(pic->p_sys);
- free(pic);
}
static void
diff --git a/modules/hw/vdpau/display.c b/modules/hw/vdpau/display.c
index 447b0499f1..63ae458a65 100644
--- a/modules/hw/vdpau/display.c
+++ b/modules/hw/vdpau/display.c
@@ -80,7 +80,6 @@ static void pictureSys_DestroyVDPAU(picture_sys_t *psys)
static void PictureDestroyVDPAU(picture_t *pic)
{
pictureSys_DestroyVDPAU(pic->p_sys);
- free(pic);
}
static VdpStatus picture_NewVDPAU(vdp_t *vdp, VdpRGBAFormat rgb_fmt,
diff --git a/modules/video_chroma/copy.c b/modules/video_chroma/copy.c
index b0cf4a1042..322bffcc1e 100644
--- a/modules/video_chroma/copy.c
+++ b/modules/video_chroma/copy.c
@@ -1085,7 +1085,6 @@ static void pic_rsc_destroy(picture_t *pic)
{
for (unsigned i = 0; i < 3; i++)
free(pic->p[i].p_pixels);
- free(pic);
}
static picture_t *pic_new_unaligned(const video_format_t *fmt)
diff --git a/modules/video_output/android/display.h b/modules/video_output/android/display.h
index 4e0afcbb12..673de00543 100644
--- a/modules/video_output/android/display.h
+++ b/modules/video_output/android/display.h
@@ -101,7 +101,6 @@ static inline void AndroidOpaquePicture_DetachVout(picture_t *p_pic)
}
else
vlc_mutex_unlock(&p_picsys->hw.lock);
- free(p_pic);
}
static inline void
diff --git a/modules/video_output/kms.c b/modules/video_output/kms.c
index 1cce937330..bd65ee823f 100644
--- a/modules/video_output/kms.c
+++ b/modules/video_output/kms.c
@@ -605,7 +605,6 @@ static void CustomDestroyPicture(picture_t *p_picture)
vlc_close(sys->drm_fd);
sys->drm_fd = 0;
free(p_picture->p_sys);
- free(p_picture);
}
diff --git a/modules/video_output/opengl/converter_sw.c b/modules/video_output/opengl/converter_sw.c
index ae37d4929f..152bd58ac3 100644
--- a/modules/video_output/opengl/converter_sw.c
+++ b/modules/video_output/opengl/converter_sw.c
@@ -114,7 +114,6 @@ pbo_picture_destroy(picture_t *pic)
picsys->DeleteBuffers(pic->i_planes, picsys->buffers);
free(picsys);
- free(pic);
}
static picture_t *
diff --git a/modules/video_output/opengl/converter_vdpau.c b/modules/video_output/opengl/converter_vdpau.c
index 0599796473..1bc0d3b8a7 100644
--- a/modules/video_output/opengl/converter_vdpau.c
+++ b/modules/video_output/opengl/converter_vdpau.c
@@ -70,7 +70,6 @@ pool_pic_destroy_cb(picture_t *pic)
vdp_output_surface_destroy(p_sys->vdp, p_sys->surface);
vdp_release_x11(p_sys->vdp);
free(p_sys);
- free(pic);
}
static picture_pool_t *
diff --git a/modules/video_output/vulkan/display.c b/modules/video_output/vulkan/display.c
index 6be194e59b..e836be005d 100644
--- a/modules/video_output/vulkan/display.c
+++ b/modules/video_output/vulkan/display.c
@@ -202,7 +202,6 @@ static void DestroyPicture(picture_t *pic)
pl_buf_destroy(gpu, &picsys->buf);
vlc_vk_Release(picsys->vk);
free(picsys);
- free(pic);
}
static picture_t *CreatePicture(vout_display_t *vd)
diff --git a/modules/video_output/wayland/shm.c b/modules/video_output/wayland/shm.c
index 1964d47c77..6773dc7db6 100644
--- a/modules/video_output/wayland/shm.c
+++ b/modules/video_output/wayland/shm.c
@@ -67,7 +67,6 @@ static void PictureDestroy(picture_t *pic)
size_t picsize = pic->p[0].i_pitch * pic->p[0].i_lines;
munmap(pic->p[0].p_pixels, (picsize + pagemask) & ~pagemask);
- free(pic);
}
static void buffer_release_cb(void *data, struct wl_buffer *buffer)
diff --git a/modules/video_output/win32/direct3d11.c b/modules/video_output/win32/direct3d11.c
index e70180e54b..5fd66467e1 100644
--- a/modules/video_output/win32/direct3d11.c
+++ b/modules/video_output/win32/direct3d11.c
@@ -567,7 +567,6 @@ static void DestroyDisplayPoolPicture(picture_t *picture)
picture_sys_t *p_sys = picture->p_sys;
ReleasePictureSys( p_sys );
free(p_sys);
- free(picture);
}
#if !VLC_WINSTORE_APP
diff --git a/modules/video_output/win32/direct3d9.c b/modules/video_output/win32/direct3d9.c
index b6525d8a95..bd1c36b9df 100644
--- a/modules/video_output/win32/direct3d9.c
+++ b/modules/video_output/win32/direct3d9.c
@@ -217,7 +217,6 @@ static void DestroyPicture(picture_t *picture)
ReleasePictureSys(picture->p_sys);
free(picture->p_sys);
- free(picture);
}
/**
@@ -328,7 +327,7 @@ static picture_pool_t *Direct3D9CreatePicturePool(vlc_object_t *o,
error:
if (pool == NULL && pictures) {
for (unsigned i=0;i<picture_count; ++i)
- DestroyPicture(pictures[i]);
+ picture_Release(pictures[i]);
}
free(pictures);
return pool;
diff --git a/modules/video_output/xcb/pictures.c b/modules/video_output/xcb/pictures.c
index 2d43eee689..bcace0f76c 100644
--- a/modules/video_output/xcb/pictures.c
+++ b/modules/video_output/xcb/pictures.c
@@ -83,7 +83,6 @@ fail:
static void XCB_picture_SysV_Destroy (picture_t *pic)
{
shmdt (pic->p[0].p_pixels);
- free (pic);
}
static int XCB_picture_SysV_Alloc(vout_display_t *vd, picture_resource_t *res,
@@ -151,7 +150,6 @@ static int XCB_picture_SysV_Alloc(vout_display_t *vd, picture_resource_t *res,
static void XCB_picture_Destroy(picture_t *pic)
{
free(pic->p[0].p_pixels);
- free(pic);
}
/**
diff --git a/src/misc/picture.c b/src/misc/picture.c
index be6de71ea7..58aa37a120 100644
--- a/src/misc/picture.c
+++ b/src/misc/picture.c
@@ -56,7 +56,6 @@ static void PictureDestroyContext( picture_t *p_picture )
static void picture_DestroyFromResource( picture_t *p_picture )
{
free( p_picture->p_sys );
- free( p_picture );
}
/**
@@ -68,7 +67,6 @@ static void picture_DestroyFromFormat(picture_t *pic)
if (res != NULL)
picture_Deallocate(res->fd, res->base, res->size);
- free(pic);
}
VLC_WEAK void *picture_Allocate(int *restrict fdp, size_t size)
@@ -331,6 +329,7 @@ void picture_Destroy(picture_t *picture)
picture_priv_t *priv = container_of(picture, picture_priv_t, picture);
assert(priv->gc.destroy != NULL);
priv->gc.destroy(picture);
+ free(priv);
}
/*****************************************************************************
diff --git a/src/misc/picture_pool.c b/src/misc/picture_pool.c
index 874a04e4d8..9c896f840a 100644
--- a/src/misc/picture_pool.c
+++ b/src/misc/picture_pool.c
@@ -77,8 +77,6 @@ static void picture_pool_ReleasePicture(picture_t *clone)
unsigned offset = sys & (POOL_MAX - 1);
picture_t *picture = pool->picture[offset];
- free(clone);
-
if (pool->pic_unlock != NULL)
pool->pic_unlock(picture);
picture_Release(picture);
More information about the vlc-commits
mailing list