X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;ds=sidebyside;f=src%2Fcontrol%2Fmediacontrol_audio_video.c;h=cf6f0268c96e3708e587f21aa5c98da3960556aa;hb=6a0b7bb7097e0851f38cc9f6c2b2062c0fd14e8c;hp=e139553c4168bfc51afbf1a56418f1e6258799d1;hpb=e7153307302dcb51ef7ba30df2bb5745ad632c96;p=vlc diff --git a/src/control/mediacontrol_audio_video.c b/src/control/mediacontrol_audio_video.c index e139553c41..cf6f0268c9 100644 --- a/src/control/mediacontrol_audio_video.c +++ b/src/control/mediacontrol_audio_video.c @@ -84,7 +84,7 @@ mediacontrol_snapshot( mediacontrol_Instance *self, vlc_object_release( p_input ); RAISE_NULL( mediacontrol_InternalException, "Out of memory" ); } - snprintf( path, 255, "object:%d", p_cache->i_object_id ); + snprintf( path, 255, "object:%ju", (uintmax_t)(uintptr_t)p_cache ); var_SetString( p_vout, "snapshot-path", path ); var_SetString( p_vout, "snapshot-format", "png" ); @@ -100,15 +100,16 @@ mediacontrol_snapshot( mediacontrol_Instance *self, if( p_snapshot ) { + /* Note: p_snapshot->p_data is directly used, not copied. Thus + do not free it here. */ p_pic = private_mediacontrol_createRGBPicture( p_snapshot->i_width, - p_snapshot->i_height, - VLC_FOURCC( 'p','n','g',' ' ), - p_snapshot->date, - p_snapshot->p_data, - p_snapshot->i_datasize ); + p_snapshot->i_height, + VLC_FOURCC( 'p','n','g',' ' ), + p_snapshot->date, + p_snapshot->p_data, + p_snapshot->i_datasize ); if( !p_pic ) { - free( p_snapshot->p_data ); free( p_snapshot ); RAISE_NULL( mediacontrol_InternalException, "Out of memory" ); } @@ -126,44 +127,10 @@ int mediacontrol_showtext( vout_thread_t *p_vout, int i_channel, int i_flags, int i_hmargin, int i_vmargin, mtime_t i_start, mtime_t i_stop ) { - subpicture_t *p_spu; - video_format_t fmt; - - if( !psz_string ) return VLC_EGENERIC; - - p_spu = spu_CreateSubpicture( p_vout->p_spu ); - if( !p_spu ) return VLC_EGENERIC; - - /* Create a new subpicture region */ - memset( &fmt, 0, sizeof(video_format_t) ); - fmt.i_chroma = VLC_FOURCC('T','E','X','T'); - fmt.i_aspect = 0; - fmt.i_width = fmt.i_height = 0; - fmt.i_x_offset = fmt.i_y_offset = 0; - p_spu->p_region = p_spu->pf_create_region( VLC_OBJECT(p_vout), &fmt ); - if( !p_spu->p_region ) - { - msg_Err( p_vout, "cannot allocate SPU region" ); - spu_DestroySubpicture( p_vout->p_spu, p_spu ); - return VLC_EGENERIC; - } - - p_spu->p_region->psz_text = strdup( psz_string ); - p_spu->p_region->i_align = i_flags & SUBPICTURE_ALIGN_MASK; - p_spu->p_region->p_style = p_style; - p_spu->i_start = i_start; - p_spu->i_stop = i_stop; - p_spu->b_ephemer = false; - p_spu->b_absolute = false; - - p_spu->i_x = i_hmargin; - p_spu->i_y = i_vmargin; - p_spu->i_flags = i_flags & ~SUBPICTURE_ALIGN_MASK; - p_spu->i_channel = i_channel; - - spu_DisplaySubpicture( p_vout->p_spu, p_spu ); - - return VLC_SUCCESS; + return osd_ShowTextAbsolute( p_vout->p_spu, i_channel, + psz_string, p_style, + i_flags, i_hmargin, i_vmargin, + i_start, i_stop ); }