This is the bug/patch tracker for Rockbox. Click here for more information.
Quick links: Bugs · Patches · Rockbox frontpage
FS#10596 - extra C displayed under album art and freeze when no backdrop
Attached to Project:
Rockbox
Opened by Robert Kukla (roolku) - Wednesday, 09 September 2009, 13:44 GMT+2
Last edited by Jonathan Gordon (jdgordon) - Friday, 18 September 2009, 07:16 GMT+2
Opened by Robert Kukla (roolku) - Wednesday, 09 September 2009, 13:44 GMT+2
Last edited by Jonathan Gordon (jdgordon) - Friday, 18 September 2009, 07:16 GMT+2
|
Detailsr22667, observed on target and sim
I noticed an extra C in my WPS when the album art didn't fill the whole view port. In an attempt to narrow down the cause I removed items until all that remained was: ----snip---- ### Basic Setup ### %X|wpsbackdrop.bmp| ### Cover ### %V|0|0|-|240|1|CECFCE|000000| %Cl|0|0|c240|b240| %C ----snip---- If there is an album art of say 240x200 a C will show in the top left corner. (not sure how long it has been like this as most of my album art is square) However, if I also remove the backdrop like here: ----snip---- ### Cover ### %V|0|0|-|240|1|CECFCE|000000| %Cl|0|0|c240|b240| %C ----snip---- then rockbox hangs as soon as you go to the WPS (so parsing seems to be okay). |
This task depends upon
Closed by Jonathan Gordon (jdgordon)
Friday, 18 September 2009, 07:16 GMT+2
Reason for closing: Fixed
Friday, 18 September 2009, 07:16 GMT+2
Reason for closing: Fixed
Can you tell the revision it was introduced?
Program received signal SIGSEGV, Segmentation fault.
[Switching to thread 43600.0xabe8]
0x004346ac in get_token_value (gwps=0x52fc40, token=0x52fd10,
buf=0x569fc00 "\006", buf_size=128, intval=0x0)
at /home/robert/clean/apps/gui/skin_engine/skin_tokens.c:326
326 *intval = 1;
(gdb)
When trying the second example without backdrop it either freezes (if I resume playback immediately after starting the simulator) or it segfaults (if I resume playback after (re-) selecting the wps in the theme settings):
Program received signal SIGSEGV, Segmentation fault.
[Switching to thread 44616.0xac14]
0x00431344 in get_line (gwps=0x52fc40, subline=0x55bfa0, align=0x559fd00,
linebuf=0x559fd10 "", linebuf_size=260)
at /home/robert/clean/apps/gui/skin_engine/skin_display.c:640
640 while (*value && (buf < linebuf_end))
(gdb)
### Cover ###
%V|0|0|-|220|1|CECFCE|000000|
%Cl|0|0|c220|b220|
%C
Interestingly, it doesn't have any images (except AA and progressbar, but those don't count).
edit: 2nd try
the ? takes precedence, doesn't it?
add brackets
curr_line->curr_subline->last_token_idx = (wps_data->num_tokens - wps_data->num_tokens ? 1 : 0);
curr_line->curr_subline->last_token_idx = ((wps_data->num_tokens - wps_data->num_tokens) ? 1 : 0);
wps_data->num_tokens - wps_data->num_tokens is never going to equal anything other than 0
%C indicates whether album art is available while %Cd displays aa.
but this breaks existing wps...
What is problem of current implementation is it doesn't care if %C tag is used as conditional or not.
Displaying aa even when %C is used as conditional e.g. %?C<...> is not correct behavior and makes it difficult to use %?C<...> in the viewport where aa isn't intended to be displayed. I'm guessing this is the cause of
FS#10599.thus %C should be handled completely differently if it is used as conditional.
this would be almost equivalent to have two tags except about breaking existing wps.
i can't tell yet why the AA in
FS#10599is drawn in the wrong vp.so, album art is drawn in the last viewport having %C or %?C<..>.