diff --git a/include/vlc_media_library.h b/include/vlc_media_library.h index fcd452eeeb..97765a9e5d 100644 --- a/include/vlc_media_library.h +++ b/include/vlc_media_library.h @@ -579,6 +579,7 @@ enum vlc_ml_control VLC_ML_MEDIA_GENERATE_THUMBNAIL, /**< arg1: media id; arg2: vlc_ml_thumbnail_size_t; arg3: width; arg4: height; arg5: position */ VLC_ML_MEDIA_ADD_EXTERNAL_MRL, /**< arg1: media id; arg2: const char*; arg3: type(vlc_ml_file_type_t) */ VLC_ML_MEDIA_SET_TYPE, /**< arg1: media id; arg2: vlc_ml_media_type_t */ + VLC_ML_MEDIA_SET_PLAYED, /**< arg1: media id; arg2: bool */ VLC_ML_MEDIA_ADD_BOOKMARK, /**< arg1: media id; arg2: int64_t */ VLC_ML_MEDIA_REMOVE_BOOKMARK, /**< arg1: media id; arg2: int64_t */ VLC_ML_MEDIA_REMOVE_ALL_BOOKMARKS, /**< arg1: media id */ @@ -1080,6 +1081,12 @@ static inline int vlc_ml_media_set_type( vlc_medialibrary_t* p_ml, int64_t i_med return vlc_ml_control( p_ml, VLC_ML_MEDIA_SET_TYPE, i_media_id, (int)i_type ); } +static inline int vlc_ml_media_set_played( vlc_medialibrary_t* p_ml, int64_t i_media_id, + bool b_played ) +{ + return vlc_ml_control( p_ml, VLC_ML_MEDIA_SET_PLAYED, i_media_id, (int) b_played ); +} + static inline vlc_ml_bookmark_list_t* vlc_ml_list_media_bookmarks( vlc_medialibrary_t* p_ml, const vlc_ml_query_params_t* params, int64_t i_media_id ) diff --git a/modules/misc/medialibrary/medialibrary.cpp b/modules/misc/medialibrary/medialibrary.cpp index f699a1c036..8144637c37 100644 --- a/modules/misc/medialibrary/medialibrary.cpp +++ b/modules/misc/medialibrary/medialibrary.cpp @@ -622,6 +622,7 @@ int MediaLibrary::Control( int query, va_list args ) case VLC_ML_MEDIA_SET_THUMBNAIL: case VLC_ML_MEDIA_ADD_EXTERNAL_MRL: case VLC_ML_MEDIA_SET_TYPE: + case VLC_ML_MEDIA_SET_PLAYED: case VLC_ML_MEDIA_ADD_BOOKMARK: case VLC_ML_MEDIA_REMOVE_BOOKMARK: case VLC_ML_MEDIA_REMOVE_ALL_BOOKMARKS: @@ -1459,6 +1460,17 @@ int MediaLibrary::controlMedia( int query, va_list args ) return VLC_EGENERIC; return VLC_SUCCESS; } + case VLC_ML_MEDIA_SET_PLAYED: + { + if ( va_arg( args, int ) ) + { + if ( m->markAsPlayed() == false ) + return VLC_EGENERIC; + } + else if ( m->removeFromHistory() == false ) + return VLC_EGENERIC; + return VLC_SUCCESS; + } case VLC_ML_MEDIA_ADD_BOOKMARK: { auto time = va_arg( args, int64_t );