[vlc-commits] lib: media: Mandate an explicit destroy of thumbnail requests
Hugo Beauzée-Luyssen
git at videolan.org
Mon Oct 28 11:34:07 CET 2019
vlc | branch: master | Hugo Beauzée-Luyssen <hugo at beauzee.fr> | Thu Oct 24 11:20:21 2019 +0200| [f0f5b0c797fb38c067731c7328eac871bef480af] | committer: Hugo Beauzée-Luyssen
lib: media: Mandate an explicit destroy of thumbnail requests
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=f0f5b0c797fb38c067731c7328eac871bef480af
---
include/vlc/libvlc_media.h | 16 ++++++++++++++--
lib/libvlc.sym | 1 +
lib/media.c | 6 ++++--
3 files changed, 19 insertions(+), 4 deletions(-)
diff --git a/include/vlc/libvlc_media.h b/include/vlc/libvlc_media.h
index 6861181270..e64ecdb84c 100644
--- a/include/vlc/libvlc_media.h
+++ b/include/vlc/libvlc_media.h
@@ -830,7 +830,8 @@ typedef enum libvlc_thumbnailer_seek_speed_t
* \param timeout A timeout value in ms, or 0 to disable timeout
*
* \return A valid opaque request object, or NULL in case of failure.
- * It must be released by libvlc_media_thumbnail_cancel().
+ * It may be cancelled by libvlc_media_thumbnail_cancel().
+ * It must be released by libvlc_media_thumbnail_destroy().
*
* \version libvlc 4.0 or later
*
@@ -860,7 +861,8 @@ libvlc_media_thumbnail_request_by_time( libvlc_media_t *md,
* \param timeout A timeout value in ms, or 0 to disable timeout
*
* \return A valid opaque request object, or NULL in case of failure.
- * It must be released by libvlc_media_thumbnail_cancel().
+ * It may be cancelled by libvlc_media_thumbnail_cancel().
+ * It must be released by libvlc_media_thumbnail_destroy().
*
* \version libvlc 4.0 or later
*
@@ -886,6 +888,16 @@ libvlc_media_thumbnail_request_by_pos( libvlc_media_t *md,
LIBVLC_API void
libvlc_media_thumbnail_cancel( libvlc_media_thumbnail_request_t *p_req );
+/**
+ * @brief libvlc_media_thumbnail_destroy destroys a thumbnail request
+ * @param p_req An opaque thumbnail request object.
+ *
+ * If the request has not completed or hasn't been cancelled yet, the behavior
+ * is undefined
+ */
+LIBVLC_API void
+libvlc_media_thumbnail_destroy( libvlc_media_thumbnail_request_t *p_req );
+
/**
* Add a slave to the current media.
*
diff --git a/lib/libvlc.sym b/lib/libvlc.sym
index d1ee941cac..3a4870120d 100644
--- a/lib/libvlc.sym
+++ b/lib/libvlc.sym
@@ -84,6 +84,7 @@ libvlc_media_get_parsed_status
libvlc_media_thumbnail_request_by_time
libvlc_media_thumbnail_request_by_pos
libvlc_media_thumbnail_cancel
+libvlc_media_thumbnail_destroy
libvlc_media_list_add_media
libvlc_media_list_count
libvlc_media_list_event_manager
diff --git a/lib/media.c b/lib/media.c
index 8860a9e1aa..27df35b454 100644
--- a/lib/media.c
+++ b/lib/media.c
@@ -1106,8 +1106,6 @@ static void media_on_thumbnail_ready( void* data, picture_t* thumbnail )
libvlc_event_send( &p_media->event_manager, &event );
if ( pic != NULL )
libvlc_picture_release( pic );
- libvlc_media_release( p_media );
- free( req );
}
libvlc_media_thumbnail_request_t*
@@ -1188,6 +1186,10 @@ void libvlc_media_thumbnail_cancel( libvlc_media_thumbnail_request_t *req )
libvlc_priv_t *p_priv = libvlc_priv(req->md->p_libvlc_instance->p_libvlc_int);
assert( p_priv->p_thumbnailer != NULL );
vlc_thumbnailer_Cancel( p_priv->p_thumbnailer, req->req );
+}
+
+void libvlc_media_thumbnail_destroy( libvlc_media_thumbnail_request_t *req )
+{
libvlc_media_release( req->md );
free( req );
}
More information about the vlc-commits
mailing list