[vlc-devel] [PATCH] qt: fix memory leaks when adding elements to the playlist
Pierre Lamot
pierre at videolabs.io
Fri Apr 12 15:57:31 CEST 2019
---
.../qt/components/mediacenter/mcmedialib.cpp | 20 ++++++++-----------
1 file changed, 8 insertions(+), 12 deletions(-)
diff --git a/modules/gui/qt/components/mediacenter/mcmedialib.cpp b/modules/gui/qt/components/mediacenter/mcmedialib.cpp
index 2fdf3159a0..09358a7c2d 100644
--- a/modules/gui/qt/components/mediacenter/mcmedialib.cpp
+++ b/modules/gui/qt/components/mediacenter/mcmedialib.cpp
@@ -83,9 +83,9 @@ void MCMediaLib::addToPlaylist(const MLParentId & itemId)
if (itemId.type == VLC_ML_PARENT_UNKNOWN)
{
- input_item_t* item = vlc_ml_get_input_item( m_ml, itemId.id );
+ vlc::playlist::InputItemPtr item( vlc_ml_get_input_item( m_ml, itemId.id ), false );
if (item) {
- QVector<vlc::playlist::Media> medias = { vlc::playlist::Media(item) };
+ QVector<vlc::playlist::Media> medias = { vlc::playlist::Media(item.get()) };
m_intf->p_sys->p_mainPlaylistController->append(medias, false);
}
}
@@ -100,8 +100,8 @@ void MCMediaLib::addToPlaylist(const MLParentId & itemId)
auto mediaRange = ml_range_iterate<vlc_ml_media_t>( media_list );
QVector<vlc::playlist::Media> medias;
std::transform(mediaRange.begin(), mediaRange.end(), std::back_inserter(medias), [&](vlc_ml_media_t& m) {
- input_item_t* item = vlc_ml_get_input_item( m_ml, m.i_id );
- return vlc::playlist::Media(item);
+ vlc::playlist::InputItemPtr item(vlc_ml_get_input_item( m_ml, m.i_id ), false);
+ return vlc::playlist::Media(item.get());
});
m_intf->p_sys->p_mainPlaylistController->append(medias, false);
}
@@ -137,11 +137,10 @@ void MCMediaLib::addAndPlay(const MLParentId & itemId )
return;
if (itemId.type == VLC_ML_PARENT_UNKNOWN)
{
- input_item_t* item = vlc_ml_get_input_item( m_ml, itemId.id );
+ vlc::playlist::InputItemPtr item(vlc_ml_get_input_item( m_ml, itemId.id ), false);
if (item) {
- QVector<vlc::playlist::Media> medias = { vlc::playlist::Media(item) };
+ QVector<vlc::playlist::Media> medias = { vlc::playlist::Media(item.get()) };
m_intf->p_sys->p_mainPlaylistController->append(medias, true);
- input_item_Release( item );
}
}
else
@@ -155,11 +154,8 @@ void MCMediaLib::addAndPlay(const MLParentId & itemId )
auto mediaRange = ml_range_iterate<vlc_ml_media_t>( media_list );
QVector<vlc::playlist::Media> medias;
std::transform(mediaRange.begin(), mediaRange.end(), std::back_inserter(medias), [&](vlc_ml_media_t& m) {
- input_item_t* item = vlc_ml_get_input_item( m_ml, m.i_id );
- auto res = vlc::playlist::Media(item);
- if ( item )
- input_item_Release( item );
- return res;
+ vlc::playlist::InputItemPtr item(vlc_ml_get_input_item( m_ml, m.i_id ), false);
+ return vlc::playlist::Media(item.get());
});
m_intf->p_sys->p_mainPlaylistController->append(medias, true);
}
--
2.19.1
More information about the vlc-devel
mailing list