@@ -62,12 +62,8 @@ MpvAdapter::MpvAdapter(
62
62
m_mpv, &MpvWidget::tracklistChanged, this ,
63
63
[this ] (const mpv_node *node)
64
64
{
65
- QList<const Track * > tracks = processTracks (node);
65
+ QList<Track> tracks = processTracks (node);
66
66
emit m_context->playerTracksChanged (tracks);
67
- for (const Track *track : tracks)
68
- {
69
- delete track;
70
- }
71
67
}
72
68
);
73
69
connect (
@@ -493,15 +489,15 @@ double MpvAdapter::getAudioDelay() const
493
489
return delay;
494
490
}
495
491
496
- QList<const Track * > MpvAdapter::getTracks ()
492
+ QList<Track> MpvAdapter::getTracks ()
497
493
{
498
494
mpv_node node;
499
495
if (mpv_get_property (m_handle, " track-list" , MPV_FORMAT_NODE, &node) < 0 )
500
496
{
501
497
qDebug () << " Could not get track-list property" ;
502
- return QList< const Track *>() ;
498
+ return {} ;
503
499
}
504
- QList<const Track * > tracks = processTracks (&node);
500
+ QList<Track> tracks = processTracks (&node);
505
501
mpv_free_node_contents (&node);
506
502
return tracks;
507
503
}
@@ -1251,88 +1247,113 @@ void MpvAdapter::mouseWheelMoved(const QWheelEvent *event)
1251
1247
1252
1248
/* Code modified from loadTracks() */
1253
1249
/* https://github.com/u8sand/Baka-MPlayer/blob/master/src/mpvhandler.cpp */
1254
- QList<const Track * > MpvAdapter::processTracks (const mpv_node *node)
1250
+ QList<Track> MpvAdapter::processTracks (const mpv_node *node)
1255
1251
{
1256
- QList<const Track * > tracks;
1252
+ QList<Track> tracks;
1257
1253
if (node->format == MPV_FORMAT_NODE_ARRAY)
1258
1254
{
1259
1255
for (int i = 0 ; i < node->u .list ->num ; i++)
1260
1256
{
1261
- Track *track = new Track ;
1257
+ tracks. emplaceBack ( Track{}) ;
1262
1258
if (node->u .list ->values [i].format == MPV_FORMAT_NODE_MAP)
1263
1259
{
1264
1260
for (int n = 0 ; n < node->u .list ->values [i].u .list ->num ; n++)
1265
1261
{
1266
1262
if (QString (node->u .list ->values [i].u .list ->keys [n]) == " id" )
1267
1263
{
1268
1264
if (node->u .list ->values [i].u .list ->values [n].format == MPV_FORMAT_INT64)
1269
- track-> id = node->u .list ->values [i].u .list ->values [n].u .int64 ;
1265
+ tracks. back (). id = node->u .list ->values [i].u .list ->values [n].u .int64 ;
1270
1266
}
1271
1267
else if (QString (node->u .list ->values [i].u .list ->keys [n]) == " type" )
1272
1268
{
1273
1269
if (node->u .list ->values [i].u .list ->values [n].format == MPV_FORMAT_STRING)
1274
1270
{
1275
1271
QString type = node->u .list ->values [i].u .list ->values [n].u .string ;
1276
1272
if (type == " audio" )
1277
- track->type = Track::Type::audio;
1273
+ {
1274
+ tracks.back ().type = Track::Type::audio;
1275
+ }
1278
1276
else if (type == " video" )
1279
- track->type = Track::Type::video;
1277
+ {
1278
+ tracks.back ().type = Track::Type::video;
1279
+ }
1280
1280
else if (type == " sub" )
1281
- track->type = Track::Type::subtitle;
1281
+ {
1282
+ tracks.back ().type = Track::Type::subtitle;
1283
+ }
1282
1284
}
1283
1285
}
1284
1286
else if (QString (node->u .list ->values [i].u .list ->keys [n]) == " src-id" )
1285
1287
{
1286
1288
if (node->u .list ->values [i].u .list ->values [n].format == MPV_FORMAT_INT64)
1287
- track->srcId = node->u .list ->values [i].u .list ->values [n].u .int64 ;
1289
+ {
1290
+ tracks.back ().srcId = node->u .list ->values [i].u .list ->values [n].u .int64 ;
1291
+ }
1288
1292
}
1289
1293
else if (QString (node->u .list ->values [i].u .list ->keys [n]) == " title" )
1290
1294
{
1291
1295
if (node->u .list ->values [i].u .list ->values [n].format == MPV_FORMAT_STRING)
1292
- track->title = node->u .list ->values [i].u .list ->values [n].u .string ;
1296
+ {
1297
+ tracks.back ().title = node->u .list ->values [i].u .list ->values [n].u .string ;
1298
+ }
1293
1299
}
1294
1300
else if (QString (node->u .list ->values [i].u .list ->keys [n]) == " lang" )
1295
1301
{
1296
1302
if (node->u .list ->values [i].u .list ->values [n].format == MPV_FORMAT_STRING)
1297
- track->lang = node->u .list ->values [i].u .list ->values [n].u .string ;
1303
+ {
1304
+ tracks.back ().lang = node->u .list ->values [i].u .list ->values [n].u .string ;
1305
+ }
1298
1306
}
1299
1307
else if (QString (node->u .list ->values [i].u .list ->keys [n]) == " albumart" )
1300
1308
{
1301
1309
if (node->u .list ->values [i].u .list ->values [n].format == MPV_FORMAT_FLAG)
1302
- track->albumart = node->u .list ->values [i].u .list ->values [n].u .flag != 0 ;
1310
+ {
1311
+ tracks.back ().albumart = node->u .list ->values [i].u .list ->values [n].u .flag != 0 ;
1312
+ }
1303
1313
}
1304
1314
else if (QString (node->u .list ->values [i].u .list ->keys [n]) == " default" )
1305
1315
{
1306
1316
if (node->u .list ->values [i].u .list ->values [n].format == MPV_FORMAT_FLAG)
1307
- track->def = node->u .list ->values [i].u .list ->values [n].u .flag != 0 ;
1317
+ {
1318
+ tracks.back ().def = node->u .list ->values [i].u .list ->values [n].u .flag != 0 ;
1319
+ }
1308
1320
}
1309
1321
else if (QString (node->u .list ->values [i].u .list ->keys [n]) == " selected" )
1310
1322
{
1311
1323
if (node->u .list ->values [i].u .list ->values [n].format == MPV_FORMAT_FLAG)
1312
- track->selected = node->u .list ->values [i].u .list ->values [n].u .flag != 0 ;
1324
+ {
1325
+ tracks.back ().selected = node->u .list ->values [i].u .list ->values [n].u .flag != 0 ;
1326
+ }
1313
1327
}
1314
1328
else if (QString (node->u .list ->values [i].u .list ->keys [n]) == " main-selection" )
1315
1329
{
1316
1330
if (node->u .list ->values [i].u .list ->values [n].format == MPV_FORMAT_INT64)
1317
- track->mainSelection = node->u .list ->values [i].u .list ->values [n].u .int64 ;
1331
+ {
1332
+ tracks.back ().mainSelection = node->u .list ->values [i].u .list ->values [n].u .int64 ;
1333
+ }
1318
1334
}
1319
1335
else if (QString (node->u .list ->values [i].u .list ->keys [n]) == " external" )
1320
1336
{
1321
1337
if (node->u .list ->values [i].u .list ->values [n].format == MPV_FORMAT_FLAG)
1322
- track->external = node->u .list ->values [i].u .list ->values [n].u .flag != 0 ;
1338
+ {
1339
+ tracks.back ().external = node->u .list ->values [i].u .list ->values [n].u .flag != 0 ;
1340
+ }
1323
1341
}
1324
1342
else if (QString (node->u .list ->values [i].u .list ->keys [n]) == " external-filename" )
1325
1343
{
1326
1344
if (node->u .list ->values [i].u .list ->values [n].format == MPV_FORMAT_STRING)
1327
- track->externalFilename = node->u .list ->values [i].u .list ->values [n].u .string ;
1345
+ {
1346
+ tracks.back ().externalFilename = node->u .list ->values [i].u .list ->values [n].u .string ;
1347
+ }
1328
1348
}
1329
1349
else if (QString (node->u .list ->values [i].u .list ->keys [n]) == " codec" )
1330
1350
{
1331
1351
if (node->u .list ->values [i].u .list ->values [n].format == MPV_FORMAT_STRING)
1332
- track->codec = node->u .list ->values [i].u .list ->values [n].u .string ;
1352
+ {
1353
+ tracks.back ().codec = node->u .list ->values [i].u .list ->values [n].u .string ;
1354
+ }
1333
1355
}
1334
1356
}
1335
- tracks.push_back (track);
1336
1357
}
1337
1358
}
1338
1359
}
0 commit comments