Mercurial > mplayer.hg
view libmpdemux/tvi_def.h @ 18066:2ee39341b7a6
fix segfault in the skin browser when sbSelectedSkin gets dereferenced before setting, when no skin is selected in the skin list upon opening the browser,
and "Cancel" or "OK" buttons get clicked.
Noticed when runnig freshly compiled gmplayer on a system where the skins were still under the old location.
based on a combined patch by Stanislav Maslovski <stanislav POIS maslovski AH gmail POIS com>
author | gpoirier |
---|---|
date | Sun, 09 Apr 2006 13:52:45 +0000 |
parents | f580a7755ac5 |
children |
line wrap: on
line source
#include <stdlib.h> /* malloc */ #include <string.h> /* memset */ static int init(priv_t *priv); static int uninit(priv_t *priv); static int control(priv_t *priv, int cmd, void *arg); static int start(priv_t *priv); static double grab_video_frame(priv_t *priv, char *buffer, int len); #ifdef HAVE_TV_BSDBT848 static double grabimmediate_video_frame(priv_t *priv, char *buffer, int len); #endif static int get_video_framesize(priv_t *priv); static double grab_audio_frame(priv_t *priv, char *buffer, int len); static int get_audio_framesize(priv_t *priv); static tvi_functions_t functions = { init, uninit, control, start, grab_video_frame, #ifdef HAVE_TV_BSDBT848 grabimmediate_video_frame, #endif get_video_framesize, grab_audio_frame, get_audio_framesize }; static tvi_handle_t *new_handle(void) { tvi_handle_t *h = (tvi_handle_t *)malloc(sizeof(tvi_handle_t)); if (!h) return(NULL); h->priv = (priv_t *)malloc(sizeof(priv_t)); if (!h->priv) { free(h); return(NULL); } memset(h->priv, 0, sizeof(priv_t)); h->info = &info; h->functions = &functions; h->seq = 0; h->chanlist = -1; h->chanlist_s = NULL; h->norm = -1; h->channel = -1; return(h); } static void free_handle(tvi_handle_t *h) { if (h) { if (h->priv) free(h->priv); free(h); } }