From da8f67608387ec45ffd77d1b1551d016f7d295da Mon Sep 17 00:00:00 2001 From: Steve Lhomme Date: Mon, 16 Jan 2023 08:35:19 +0100 Subject: [PATCH] vout: fix direct cast Use the actual type passed to as opaque to the filter callbacks. The vlc_object may not be the first element in the structure. --- src/video_output/video_output.c | 3 ++- src/video_output/vout_subpictures.c | 9 ++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/video_output/video_output.c b/src/video_output/video_output.c index 0eff1a24a5..b87050ba78 100644 --- a/src/video_output/video_output.c +++ b/src/video_output/video_output.c @@ -718,7 +718,8 @@ static int FilterRestartCallback(vlc_object_t *p_this, char const *psz_var, static int DelFilterCallbacks(filter_t *filter, void *opaque) { - filter_DelProxyCallbacks((vlc_object_t*)opaque, filter, + vout_thread_sys_t *sys = opaque; + filter_DelProxyCallbacks(VLC_OBJECT(sys), filter, FilterRestartCallback); return VLC_SUCCESS; } diff --git a/src/video_output/vout_subpictures.c b/src/video_output/vout_subpictures.c index 4512f92787..590cb48a8e 100644 --- a/src/video_output/vout_subpictures.c +++ b/src/video_output/vout_subpictures.c @@ -1372,14 +1372,16 @@ static int RestartSubFilterCallback(vlc_object_t *obj, char const *psz_var, static int SubFilterAddProxyCallbacks(filter_t *filter, void *opaque) { - filter_AddProxyCallbacks((vlc_object_t *)opaque, filter, + vout_thread_t *vout = opaque; + filter_AddProxyCallbacks(VLC_OBJECT(vout), filter, RestartSubFilterCallback); return VLC_SUCCESS; } static int SubFilterDelProxyCallbacks(filter_t *filter, void *opaque) { - filter_DelProxyCallbacks((vlc_object_t *)opaque, filter, + vout_thread_t *vout = opaque; + filter_DelProxyCallbacks(VLC_OBJECT(vout), filter, RestartSubFilterCallback); return VLC_SUCCESS; } @@ -1401,7 +1403,8 @@ static int SubSourceAddProxyCallbacks(filter_t *filter, void *opaque) static int SubSourceDelProxyCallbacks(filter_t *filter, void *opaque) { - filter_DelProxyCallbacks((vlc_object_t *)opaque, filter, + vout_thread_t *vout = opaque; + filter_DelProxyCallbacks(VLC_OBJECT(vout), filter, RestartSubSourceCallback); return VLC_SUCCESS; }