Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • videolan/vlc
  • chouquette/vlc
  • bakiewicz.marek122/vlc
  • devnexen/vlc
  • rohanrajpal/vlc
  • blurrrb/vlc
  • gsoc/gsoc2019/darkapex/vlc
  • b1ue/vlc
  • fkuehne/vlc
  • magsoft/vlc
  • chub/vlc
  • cramiro9/vlc
  • robUx4/vlc
  • rom1v/vlc
  • akshayaky/vlc
  • tmk907/vlc
  • akymaster/vlc
  • govind.sharma/vlc
  • psilokos/vlc
  • xjbeta/vlc
  • jahan/vlc
  • 1480c1/vlc
  • amanchande/vlc
  • aaqib/vlc
  • rist/vlc
  • apol/vlc
  • mindfreeze/vlc
  • alexandre-janniaux/vlc
  • sandsmark/vlc
  • jagannatharjun/vlc
  • gsoc/gsoc2020/matiaslgonzalez/vlc
  • gsoc/gsoc2020/jagannatharjun/vlc
  • mstorsjo/vlc
  • gsoc/gsoc2020/vedenta/vlc
  • gsoc/gsoc2020/arnav-ishaan/vlc
  • gsoc/gsoc2020/andreduong/vlc
  • fuzun/vlc
  • gsoc/gsoc2020/vatsin/vlc
  • gsoc/gsoc2020/sagid/vlc
  • yaron/vlc
  • Phoenix/vlc
  • Garf/vlc
  • ePiratWorkarounds/vlc
  • tguillem/vlc
  • jnqnfe/vlc
  • mdc/vlc
  • Vedaa/vlc
  • rasa/vlc
  • quink/vlc
  • yealo/vlc
  • aleksey_ak/vlc
  • ePirat/vlc
  • ilya.yanok/vlc
  • asenat/vlc
  • m/vlc
  • bunjee/vlc
  • BLumia/vlc
  • sagudev/vlc
  • hamedmonji30/vlc
  • nullgemm/vlc
  • DivyamAhuja/vlc
  • thesamesam/vlc
  • dag7/vlc
  • snehil101/vlc
  • haasn/vlc
  • jbk/vlc
  • ValZapod/vlc
  • mfkl/vlc
  • WangChuan/vlc
  • core1024/vlc
  • GhostVaibhav/vlc
  • dfuhrmann/vlc
  • davide.prade/vlc
  • tmatth/vlc
  • Courmisch/vlc
  • zouya/vlc
  • hpi/vlc
  • EwoutH/vlc
  • aleung27/vlc
  • hengwu0/vlc
  • saladin/vlc
  • ashuio/vlc
  • richselwood/vlc
  • verma16Ayush/vlc
  • chemicalflash/vlc
  • PoignardAzur/vlc
  • huangjieNT/vlc
  • Blake-Haydon/vlc
  • AnuthaDev/vlc
  • gsoc/gsoc2021/mpd/vlc
  • nicolas_lequec/vlc
  • sambassaly/vlc
  • thresh/vlc
  • bonniegong/vlc
  • myaashish/vlc
  • stavros.vagionitis/vlc
  • ileoo/vlc
  • louis-santucci/vlc
  • cchristiansen/vlc
  • sabyasachi07/vlc
  • AbduAmeen/vlc
  • ashishb0410/vlc
  • urbanhusky/vlc
  • davidepietrasanta/vlc
  • riksleutelstad/vlc
  • jeremyVignelles/vlc
  • komh/vlc
  • iamjithinjohn/vlc
  • JohannesKauffmann/vlc2
  • kunglao/vlc
  • natzberg/vlc
  • jill/vlc
  • cwendling/vlc
  • adufou/vlc
  • ErwanAirone/vlc
  • HasinduDilshan10/vlc
  • vagrantc/vlc
  • rafiv/macos-bigsur-icon
  • Aymeriic/vlc
  • saranshg20/vlc
  • metzlove24/vlc
  • linkfanel/vlc
  • Ds886/vlc
  • metehan-arslan/vlc
  • Skantes/vlc
  • kgsandundananjaya96/vlc
  • mitchcapper/vlc
  • advaitgupta/vlc
  • StefanBruens/vlc
  • ratajs/vlc
  • T.M.F.B.3761/vlc
  • m222059/vlc
  • casemerrick/vlc
  • joshuaword2alt/vlc
  • sjwaddy/vlc
  • dima/vlc
  • Ybalrid/vlc
  • umxprime/vlc
  • eschmidt/vlc
  • vannieuwenhuysenmichelle/vlc
  • badcf00d/vlc
  • wesinator/vlc
  • louis/vlc
  • xqq/vlc
  • EmperorYP7/vlc
  • NicoLiam/vlc
  • loveleen/vlc
  • rofferom/vlc
  • rbultje/vlc
  • TheUnamed/vlc
  • pratiksharma341/vlc
  • Saurab17/vlc
  • purist.coder/vlc
  • Shuicheng/vlc
  • mdrrubel292/vlc
  • silverbleu00/vlc
  • metif12/vlc
  • asher-m/vlc
  • jeffk/vlc
  • Brandonbr1/vlc
  • beautyyuyanli/vlc
  • rego21/vlc
  • muyangren907/vlc
  • collectionbylawrencejason/vlc
  • evelez/vlc
  • GSMgeeth/vlc
  • Oneric/vlc
  • TJ5/vlc
  • XuanTung95/vlc
  • darrenjenny21/vlc
  • Trenly/vlc
  • RockyTDR/vlc
  • mjakubowski/vlc
  • caprica/vlc
  • ForteFrankie/vlc
  • seannamiller19/vlc
  • junlon2006/vlc
  • kiwiren6666/vlc
  • iuseiphonexs/vlc
  • fenngtun/vlc
  • Rajdutt999/vlc
  • typx/vlc
  • leon.vitanos/vlc
  • robertogarci0938/vlc
  • gsoc/gsoc2022/luc65r/vlc-mpd
  • skeller/vlc
  • MCJack123/vlc
  • luc65r/vlc-mpd
  • popov895/vlc
  • claucambra/vlc
  • brad/vlc
  • matthewmurua88/vlc
  • Tomas8874/vlc
  • philenotfound/vlc
  • makita-do3/vlc
  • LZXCorp/vlc
  • mar0x/vlc
  • senojetkennedy0102/vlc
  • shaneb243/vlc
  • ahmadbader/vlc
  • rajduttcse26/vlc-audio-filters
  • Juniorzito8415/vlc
  • achernyakov/vlc
  • lucasjetgroup/vlc
  • pupdoggy666/vlc
  • gmde9363/vlc
  • alexnwayne/vlc
  • bahareebrahimi781/vlc
  • hamad633666/vlc
  • umghof3112/vlc
  • joe0199771874/vlc
  • Octocats66666666/vlc
  • jjm_223/vlc
  • btech10110.19/vlc
  • sunnykfc028/vlc-audio-filters
  • loic/vlc
  • nguyenminhducmx1/vlc
  • JanekKrueger/vlc
  • bstubbington2/vlc
  • rcombs/vlc
  • Ordissimo/vlc
  • king7532/vlc
  • noobsauce101/vlc
  • schong0525/vlc
  • myQwil/vlc
  • apisbg91/vlc
  • geeboy0101017/vlc
  • kim.faughey/vlc
  • nurupo/vlc
  • yyusea/vlc
  • 0711235879.khco/vlc
  • ialo/vlc
  • iloveyeye2/vlc
  • gdtdftdqtd/vlc
  • leandroconsiglio/vlc
  • AndyHTML2012/vlc
  • ncz/vlc
  • lucenticus/vlc
  • knr1931/vlc
  • kjoonlee/vlc
  • chandrakant100/vlc-qt
  • johge42/vlc
  • polter/vlc
  • hexchain/vlc
  • Tushwrld/vlc
  • mztea928/vlc
  • jbelloncastro/vlc
  • alvinhochun/vlc
  • ghostpiratecrow/vlc
  • ujjwaltwitx/vlc
  • alexsonarin06/vlc
  • adrianbon76/vlc
  • altsod/vlc
  • damien.lucas44/vlc
  • dmytrivtaisa/vlc
  • utk202/vlc
  • aaxhrj/vlc
  • thomas.hermes/vlc
  • structurenewworldorder/vlc
  • slomo/vlc
  • wantlamy/vlc
  • musc.o3cminc/vlc
  • thebarshablog/vlc
  • kerrick/vlc
  • kratos142518/vlc
  • leogps/vlc
  • vacantron/vlc
  • luna_koly/vlc
  • Ratio2/vlc
  • anuoshemohammad/vlc
  • apsun/vlc
  • aaa1115910/vlc
  • alimotmoyo/vlc
  • Ambossmann/vlc
  • Sam-LearnsToCode/vlc
  • Chilledheart/vlc
  • Labnann/vlc
  • ktcoooot1/vlc
  • mohit-marathe/vlc
  • johnddx/vlc
  • manstabuk/vlc
  • Omar-ahmed314/vlc
  • vineethkm/vlc
  • 9Enemi86/vlc
  • radoslav.m.panteleev/vlc
  • ashishami2002/vlc
  • Corbax/vlc
  • firnasahmed/vlc
  • pelayarmalam4/vlc
  • c0ff330k/vlc
  • shikhindahikar/vlc
  • l342723951/vlc
  • christianschwandner/vlc
  • douniwan5788/vlc
  • 7damian7/vlc
  • ferdnyc/vlc
  • f.ales1/vlc
  • pandagby/vlc
  • BaaBaa/vlc
  • jewe37/vlc
  • w00drow/vlc
  • russelltg/vlc
  • ironicallygod/vlc
  • soumyaDghosh/vlc
  • linzihao1999/vlc
  • deyayush6/vlc
  • mibi88/vlc
  • newabdallah10/vlc
  • jhorbincolombia/vlc
  • rimvihaqueshupto/vlc
  • andrewkhon98/vlc
  • fab78/vlc
  • lapaz17/vlc
  • amanna13/vlc
  • mdakram28/vlc
  • 07jw1980/vlc
  • sohamgupta/vlc
  • Eson-Jia1/vlc
  • Sumou/vlc
  • vikram-kangotra/vlc
  • chalice191/vlc
  • olivercalder/vlc
  • aaasg4001/vlc
  • zipdox/vlc
  • kwizart/vlc
  • Dragon-S/vlc
  • jdemeule/vlc
  • gabriel_lt/vlc
  • locutusofborg/vlc
  • sammirata/vlc-librist
  • another/vlc
  • Benjamin_Loison/vlc
  • ahmedmoselhi/vlc
  • petergaal/vlc
  • huynhsontung/vlc
  • dariusmihut/vlc
  • tvermaashutosh/vlc
  • buti/vlc
  • Niram7777/vlc
  • rohan-here/vlc
  • balaji-sivasakthi/vlc
  • rlindner81/vlc
  • Kakadus/vlc
  • djain/vlc
  • ABBurmeister/vlc
  • craighuggins/vlc
  • orbea/vlc
  • maxos/vlc
  • aakarshmj/vlc
  • kblaschke/vlc
  • ankitm/vlc
  • advait-0/vlc
  • mohak2003/vlc
  • yselkowitz/vlc
  • AZM999/vlc-azm
  • andrey.turkin/vlc
  • Disha-Baghel/vlc
  • nowrep/vlc
  • Apeng/vlc
  • Choucroute_melba/vlc
  • autra/vlc
  • eclipseo/vlc
  • fhuber/vlc
  • olafhering/vlc
  • sdasda7777/vlc
  • 1div0/vlc
  • skosnits/vlc-extended-playlist-support
  • dnicolson/vlc
  • Timshel/vlc
  • octopols/vlc
  • MangalK/vlc
  • nima64/vlc
  • misawai/vlc
  • Alexander-Wilms/vlc
  • Maxime2/vlc-fork-for-visualizer
  • ww/vlc
  • jeske/vlc
  • sgross-emlix/vlc
  • morenonatural/vlc
  • freakingLovesVLC/vlc
  • borisgolovnev/vlc
  • mpromonet/vlc
  • diogo.simao-marques/vlc
  • masstock/vlc
  • pratikpatel8982/vlc
  • hugok79/vlc
  • longervision/vlc
  • abhiudaysurya/vlc
  • rishabhgarg/vlc
  • tumic/vlc
  • cart/vlc
  • shubham442/vlc
  • Aditya692005/vlc
  • sammirata/vlc4
  • syrykh/vlc
  • Vvorcun/macos-new-icon
  • AyaanshC/vlc
  • nasso/vlc
  • Quark/vlc
  • sebastinas/vlc
  • rhstone/vlc
  • talregev/vlc
  • Managor/vlc
  • abdsaber000/vlc
  • falbrechtskirchinger/vlc
  • b.sullender/vlc
  • hulxv/vlc
  • zyad-ayad/vlc
  • shocknovaa/vlc
  • gremlinflat/vlc
  • Pratham24D/vlc
411 results
Show changes
Commits on Source (3)
......@@ -1596,6 +1596,43 @@ QT_QTEST_COMMON_cxxflags = $(AM_CXXFLAGS) $(QT_CFLAGS) $(QT_QTEST_CFLAGS) -fPIC
QT_QTEST_COMMON_ldadd = $(QT_LIBS) $(LIBS_qt) $(QT_QTEST_LIBS) $(LIBVLCCORE) $(LIBVLC)
QT_QTEST_COMMON_ldflags = $(AM_LDFLAGS) $(QT_LDFLAGS) $(QT_QTEST_LDFLAGS)
# test_ml_model
test_ml_model_SOURCES = \
tests/vlc_stub_modules.cpp \
tests/test_ml_model.cpp \
util/base_model.hpp util/base_model_p.hpp util/base_model.cpp \
util/listcache.hpp \
util/locallistcacheloader.hpp \
medialibrary/mlqmltypes.hpp \
medialibrary/mlbasemodel.hpp medialibrary/mlbasemodel.cpp \
medialibrary/medialib.hpp medialibrary/medialib.cpp \
medialibrary/mlthreadpool.hpp medialibrary/mlthreadpool.cpp \
playlist/playlist_controller.hpp playlist/playlist_controller.cpp \
playlist/playlist_item.hpp playlist/playlist_item.cpp
nodist_test_ml_model_SOURCES = \
tests/test_ml_model.moc \
util/base_model.moc.cpp \
util/listcache.moc.cpp \
util/locallistcacheloader.moc.cpp \
medialibrary/mlqmltypes.moc.cpp \
medialibrary/mlbasemodel.moc.cpp \
medialibrary/medialib.moc.cpp \
medialibrary/mlthreadpool.moc.cpp \
playlist/playlist_controller.moc.cpp \
playlist/playlist_item.moc.cpp
BUILT_SOURCES += tests/test_ml_model.moc
CLEANFILES += tests/test_ml_model.moc
test_ml_model_CPPFLAGS = $(QT_QTEST_COMMON_cppflags)
test_ml_model_CXXFLAGS = $(QT_QTEST_COMMON_cxxflags)
test_ml_model_LDADD = $(QT_QTEST_COMMON_ldadd)
test_ml_model_LDFLAGS = $(QT_QTEST_COMMON_ldflags)
check_PROGRAMS += test_ml_model
TESTS += test_ml_model
# test_renderer_manager_model
test_renderer_manager_model_SOURCES = \
......
......@@ -1141,6 +1141,39 @@ if qt6_dep.found()
qtest_qt6_dep = dependency('qt6', version: '=' + qt6_dep.version(), modules: ['Test'], required: false)
if qtest_qt6_dep.found()
vlc_tests += {
'name': 'test_qt_ml_model',
'sources': files(
'tests/test_ml_model.cpp',
'tests/vlc_stub_modules.cpp',
'util/base_model.cpp',
'medialibrary/mlbasemodel.cpp',
'medialibrary/medialib.cpp',
'medialibrary/mlthreadpool.cpp',
'playlist/playlist_controller.cpp',
'playlist/playlist_item.cpp',
),
'moc_sources': files(
'tests/test_ml_model.cpp'
),
'moc_headers': files(
'tests/vlc_stub_modules.cpp',
'util/base_model.hpp',
'util/listcache.hpp',
'util/locallistcacheloader.hpp',
'medialibrary/mlqmltypes.hpp',
'medialibrary/mlbasemodel.hpp',
'medialibrary/medialib.hpp',
'medialibrary/mlthreadpool.hpp',
'playlist/playlist_controller.hpp',
'playlist/playlist_item.hpp',
),
'suite': ['qt'],
'include_directories' : qt_include_dir,
'link_with': [libvlccore, libvlc],
'dependencies': [qt6_dep, qt_extra_deps, qtest_qt6_dep],
}
vlc_tests += {
'name': 'test_qt_renderer_manager',
'sources': files(
......
QT = testlib
CONFIG -= debug_and_release
CONFIG += no_include_pwd
/*****************************************************************************
* Copyright (C) 2024 VLC authors and VideoLAN
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* ( at your option ) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
#include "../medialibrary/mlbasemodel.hpp"
#include "vlc_stub_modules.hpp"
#include <memory>
#include <vector>
#include <QCoreApplication>
#include <QTest>
struct vlc_medialibrary_t;
class MLTestModel : public MLBaseModel
{
Q_OBJECT
public:
virtual QVariant itemRoleData(MLItem *item, int role) const override
{
VLC_UNUSED(role);
if (!item)
return {};
return QVariant::fromValue(item->getId());
}
void appendRange(int64_t min, int64_t max)
{
for (int64_t i = min; i <= max; ++i)
m_items.emplace_back(i, VLC_ML_PARENT_UNKNOWN);
emit resetRequested();
}
void updateItem(size_t position, int64_t id)
{
MLItemId itemId{id, VLC_ML_PARENT_UNKNOWN};
m_items[position] = itemId;
updateItemInCache(itemId);
}
protected:
std::unique_ptr<MLListCacheLoader> createMLLoader() const override
{
return std::make_unique<MLListCacheLoader>(m_mediaLib, std::make_shared<MLTestModel::Loader>(*this, *this));
}
struct Loader : public MLListCacheLoader::MLOp
{
Loader(const MLBaseModel& model, const MLTestModel& parent)
: MLOp(model)
, m_mlTestModel(parent)
{}
size_t count(vlc_medialibrary_t* ml, const vlc_ml_query_params_t* queryParams) const override
{
VLC_UNUSED(ml);
VLC_UNUSED(queryParams);
return m_mlTestModel.m_items.size();
}
std::vector<std::unique_ptr<MLItem>> load(vlc_medialibrary_t* ml, const vlc_ml_query_params_t* queryParams) const override
{
VLC_UNUSED(ml);
uint32_t offset = queryParams->i_offset;
uint32_t count = queryParams->i_nbResults;
size_t maxIndex = std::min(
static_cast<size_t>(offset + count),
m_mlTestModel.m_items.size() - 1);
std::vector<std::unique_ptr<MLItem>> ret;
for (size_t i = offset; i <= maxIndex; ++i) {
ret.emplace_back(std::make_unique<MLItem>(m_mlTestModel.m_items[i]));
}
return ret;
}
std::unique_ptr<MLItem> loadItemById(vlc_medialibrary_t* ml, MLItemId itemId) const override
{
VLC_UNUSED(ml);
return std::make_unique<MLItem>(itemId);
}
const MLTestModel& m_mlTestModel;
};
std::vector<MLItemId> m_items;
};
class TestVLCMLModel : public QObject
{
Q_OBJECT
private slots:
void initTestCase() {
m_env = std::make_unique<VLCTestingEnv>();
QVERIFY(m_env->init());
}
void cleanupTestCase() {
m_env.reset();
}
void init() {
m_medialib = std::make_unique<MediaLib>(m_env->intf, nullptr);
m_model = std::make_unique<MLTestModel>();
m_model->classBegin();
m_model->setMl(m_medialib.get());
m_model->componentComplete();
}
void cleanup() {
m_model.reset();
m_medialib.reset();
}
/**
* @brief testModelUpdatedFromCallback
* test for !6537 scenario
*
* - Count&Load task issued (task n°1)
* - model need reset (thumbnail is updated for instance) => `needReload = true`
* - Count&Load task (n°1) is resolved
* * diff util insert/remove rows
* - Callback from model change ask to refer an item beyond the cache
* - refer issue a new 'fetch more' request (n°2) as m_countTask is 0
* - as `needReload await true`, cache is moved to oldCache, new count&load request
* is issued (n° 3)
* - task n°2 resolve, cache is null, assertion fails
*
*/
void testModelRecuseUpdateFromSlot()
{
connect(m_model.get(), &BaseModel::countChanged, this, [this](){
m_model->updateItem(13, 37);
//model will initially only load 100 elements fetching beyond the loaded range
// will trigger "fetch more" request
m_model->data(m_model->index(500), Qt::DisplayRole);
}, Qt::SingleShotConnection);
m_model->appendRange(1, 1000);
QTRY_COMPARE_WITH_TIMEOUT(m_model->getCount(), 1000u, 100);
}
private:
std::unique_ptr<VLCTestingEnv> m_env;
std::unique_ptr<MediaLib> m_medialib;
std::unique_ptr<MLTestModel> m_model;
};
QTEST_GUILESS_MAIN(TestVLCMLModel)
#include "test_ml_model.moc"
......@@ -33,6 +33,7 @@
#include <vlc_probe.h>
#include <vlc_interface.h>
#include <vlc_player.h>
#include <vlc_media_library.h>
#include "../../../../lib/libvlc_internal.h"
......@@ -111,6 +112,38 @@ static void CloseIntf( vlc_object_t *p_this )
testenv->intf = nullptr;
}
//Medialib module
static void* MLGet( vlc_medialibrary_module_t* module, int query, va_list args )
{
return nullptr;
}
static int MLList( vlc_medialibrary_module_t* module, int query,
const vlc_ml_query_params_t* params, va_list args )
{
return VLC_EGENERIC;
}
static int MLControl( vlc_medialibrary_module_t* module, int query, va_list args )
{
return VLC_EGENERIC;
}
static int MLOpen( vlc_object_t* obj )
{
auto* p_ml = reinterpret_cast<vlc_medialibrary_module_t*>( obj );
p_ml->pf_control = MLControl;
p_ml->pf_get = MLGet;
p_ml->pf_list = MLList;
return VLC_SUCCESS;
}
static void MLClose( vlc_object_t* obj )
{
VLC_UNUSED(obj);
}
//module declaration
vlc_module_begin()
......@@ -123,6 +156,9 @@ add_submodule()
add_submodule()
set_capability("renderer probe", 10000)
set_callback(vlc_rd_probe_open)
add_submodule()
set_capability("medialibrary", 10000)
set_callbacks(MLOpen, MLClose)
vlc_module_end()
extern "C" {
......@@ -148,7 +184,7 @@ VLCTestingEnv::~VLCTestingEnv()
}
static const char * test_defaults_args[] = {
"-v", "--vout=vdummy", "--aout=adummy", "--text-renderer=tdummy",
"-v", "--vout=vdummy", "--aout=adummy", "--text-renderer=tdummy", "--media-library"
};
static const int test_defaults_nargs =
......