Skip to content

Commit 8655fb9

Browse files
committed
fixup! WIP Cuesheet improvements
Remove cue->curr_track Change-Id: I5643b10e95fb8ad0f717a248f4a714c4ae5b8202 Change-Id: I97a9ca291cac27cef3f98f79d744fe667f328a72
1 parent 8da3fbe commit 8655fb9

File tree

4 files changed

+28
-24
lines changed

4 files changed

+28
-24
lines changed

apps/cuesheet.c

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -265,9 +265,8 @@ bool parse_cuesheet(struct cuesheet_file *cue_file, struct cuesheet *cue)
265265
strcpy(cue->file, cue->path);
266266

267267
struct cue_track_info* cue_track;
268-
cue->curr_track = &get_track(0);
269268
void* buffer = cue->tracks;
270-
void* buffer_end = cue->curr_track;
269+
void* buffer_end = &get_track(0);
271270
while ((line_len = read_line(fd, line, read_bytes)) > 0)
272271
{
273272
if (char_enc == CHAR_ENC_UTF_16_LE)
@@ -450,12 +449,11 @@ static bool seek(unsigned long pos)
450449
and updates the information about the current track. */
451450
int cue_find_current_track(struct cuesheet *cue, unsigned long curpos)
452451
{
453-
int i = curpos > cue->curr_track->offset ? cue->curr_track_idx: 0;
452+
int i = curpos > get_cue_curr_track(cue)->offset ? cue->curr_track_idx: 0;
454453
while (i < cue->track_count - 1 && get_track(i+1).offset < curpos)
455454
i++;
456455

457456
cue->curr_track_idx = i;
458-
cue->curr_track = &get_track(i);
459457
return i;
460458
}
461459

@@ -651,7 +649,7 @@ void cue_draw_markers(struct screen *screen, struct cuesheet *cue,
651649
bool cuesheet_subtrack_changed(struct mp3entry *id3)
652650
{
653651
struct cuesheet *cue = id3->cuesheet;
654-
if (cue && (id3->elapsed < cue->curr_track->offset
652+
if (cue && (id3->elapsed < get_cue_curr_track(cue)->offset
655653
|| (cue->curr_track_idx < cue->track_count - 1
656654
&& id3->elapsed >= get_cue_track(cue, cue->curr_track_idx + 1)->offset)))
657655
{

apps/cuesheet.h

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,14 +51,18 @@ struct cuesheet {
5151
struct cue_track_info tracks[MAX_LIST];
5252

5353
int curr_track_idx;
54-
struct cue_track_info* curr_track;
5554
};
5655

5756
static FORCE_INLINE struct cue_track_info* get_cue_track(struct cuesheet *cue, int index)
5857
{
5958
return &cue->tracks[MAX_LIST - index - 1];
6059
}
6160

61+
static FORCE_INLINE struct cue_track_info* get_cue_curr_track(struct cuesheet *cue)
62+
{
63+
return &cue->tracks[cue->curr_track_idx];
64+
}
65+
6266
struct cuesheet_file {
6367
char path[MAX_PATH];
6468
int size;

apps/gui/skin_engine/skin_tokens.c

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -166,29 +166,15 @@ const char *get_cuesheetid3_token(struct wps_token *token, struct mp3entry *id3,
166166
int offset_tracks, char *buf, int buf_size)
167167
{
168168
struct cuesheet *cue = id3?id3->cuesheet:NULL;
169-
if (!cue || !cue->curr_track)
169+
if (!cue)
170170
return NULL;
171171

172-
struct cue_track_info *track = cue->curr_track;
173-
if (offset_tracks)
174-
{
175-
if (cue->curr_track_idx+offset_tracks < cue->track_count)
176-
track = get_cue_track(cue, cue->curr_track_idx+offset_tracks);
177-
else
178-
return NULL;
179-
}
180172
switch (token->type)
181173
{
182-
case SKIN_TOKEN_METADATA_ARTIST:
183-
return *track->performer ? track->performer : NULL;
184-
case SKIN_TOKEN_METADATA_COMPOSER:
185-
return *track->songwriter ? track->songwriter : NULL;
186174
case SKIN_TOKEN_METADATA_ALBUM:
187175
return *cue->title ? cue->title : NULL;
188176
case SKIN_TOKEN_METADATA_ALBUM_ARTIST:
189177
return *cue->performer ? cue->performer : NULL;
190-
case SKIN_TOKEN_METADATA_TRACK_TITLE:
191-
return *track->title ? track->title : NULL;
192178
case SKIN_TOKEN_PLAYLIST_ENTRIES:
193179
snprintf(buf, buf_size, "%d", cue->track_count);
194180
return buf;
@@ -200,7 +186,23 @@ const char *get_cuesheetid3_token(struct wps_token *token, struct mp3entry *id3,
200186
cue->curr_track_idx+offset_tracks+1, cue->track_count);
201187
return buf;
202188
default:
203-
return NULL;
189+
break;
190+
}
191+
192+
if(cue->curr_track_idx+offset_tracks >= cue->track_count)
193+
return NULL;
194+
195+
struct cue_track_info *track = get_cue_track(cue, cue->curr_track_idx+offset_tracks);
196+
switch (token->type)
197+
{
198+
case SKIN_TOKEN_METADATA_ARTIST:
199+
return *track->performer ? track->performer : NULL;
200+
case SKIN_TOKEN_METADATA_COMPOSER:
201+
return *track->songwriter ? track->songwriter : NULL;
202+
case SKIN_TOKEN_METADATA_TRACK_TITLE:
203+
return *track->title ? track->title : NULL;
204+
default:
205+
break;
204206
}
205207
return NULL;
206208
}

apps/playback.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -784,8 +784,8 @@ static void track_list_clear(unsigned int action)
784784
if (hid == track_list.in_progress_hid)
785785
track_list.in_progress_hid = 0;
786786

787-
if (tbip->info.cuesheet_hid >= 0 && hid == current_hid)
788-
id3_get(PLAYING_ID3)->cuesheet = NULL;
787+
// if (tbip->info.cuesheet_hid >= 0 && hid == current_hid)
788+
// id3_get(PLAYING_ID3)->cuesheet = NULL;
789789
track_list_free_buf_info(tbip);
790790
}
791791

0 commit comments

Comments
 (0)