libeplayer3: use actual pids instead of indexes

This commit is contained in:
martii
2013-07-12 22:34:39 +02:00
committed by Stefan Seyfried
parent 12f6a51f49
commit 8affebdef6
8 changed files with 291 additions and 132 deletions

View File

@@ -123,7 +123,10 @@ static char ** ManagerList(Context_t *context __attribute__((unused))) {
}
for (i = 0, j = 0; i < TrackCount; i++, j+=2) {
tracklist[j] = strdup(Tracks[i].Name);
size_t len = strlen(Tracks[i].Name) + 20;
char tmp[len];
snprintf(tmp, len, "%d %s\n", Tracks[i].Id, Tracks[i].Name);
tracklist[j] = strdup(tmp);
tracklist[j+1] = strdup(Tracks[i].Encoding);
}
tracklist[j] = NULL;
@@ -208,13 +211,17 @@ static int Command(void *_context, ManagerCmd_t command, void * argument) {
break;
}
case MANAGER_SET: {
int id = (int) argument;
int i;
if (id < TrackCount)
CurrentTrack = id;
else
for (i = 0; i < TrackCount; i++)
if (Tracks[i].Id == *((int*)argument)) {
CurrentTrack = i;
break;
}
if (i == TrackCount)
{
video_mgr_err("%s::%s track id out of range (%d - %d)\n", FILENAME, __FUNCTION__, id, TrackCount);
video_mgr_err("%s::%s track id %d unknown\n", FILENAME, __FUNCTION__, *((int*)argument));
ret = cERR_VIDEO_MGR_ERROR;
}
break;