Bug 15666 - Use of scroll-bar in Albums list can result in placeholder art which does not get updated
: Use of scroll-bar in Albums list can result in placeholder art which does not...
Status: CLOSED FIXED
Product: SB Touch
Classification: Unclassified
Component: Browser
: unspecified
: PC Debian Linux
: P3 normal (vote)
: 7.5.0
Assigned To: Ben Klaas
:
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2010-02-09 02:17 UTC by Alan Young
Modified: 2010-04-08 17:26 UTC (History)
2 users (show)

See Also:
Category: Bug


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Alan Young 2010-02-09 02:17:03 UTC
To reproduce:

1. Go to My Music / Albums, with a library with plenty of albums
2. Use the scroll bar on the RHS to position the list some distance away from the start; observe that the placeholder album-art is not updated with album-specific images.
3. Scroll the display a little (say, one line) using a finger on the screen; not that album-specific images are now displayed.

Can also be reproduced with Desktop SP
Comment 1 Jim McAtee 2010-02-09 10:53:27 UTC
Yes, I see this too.  Not always.  Usually they fill in.
Comment 2 Ben Klaas 2010-02-26 10:20:21 UTC
I noticed these errors propagating the console when using the scrollbar and reproducing the bug...possibly related...

20100226 18:19:00.031 ERROR  squeezeplay.ui - jive_surface_get_size:548 Underlying sdl surface already freed, possibly with release()
20100226 18:19:00.074 ERROR  squeezeplay.ui.draw - draw_ttf_font:249 render returned error: Text has zero width
Comment 3 Ben Klaas 2010-03-01 15:08:40 UTC
my investigation shows that SlimBrowser's _browseMenuRenderer() is not being called to pick up the art when the MOUSE_UP event is registered from the slider.


the last few blocks in _browseMenuRenderer show this:

        if menuAccel or toRenderSize == 0 then
                return
        end

        -- preload artwork in the direction of scrolling
        -- FIXME wrap around cases
        local startIndex
        if dir > 0 then
                startIndex = toRenderIndexes[toRenderSize]
        else
                startIndex = toRenderIndexes[1] - toRenderSize
        end

        for dbIndex = startIndex, startIndex + toRenderSize do
                local item = db:item(dbIndex)
                if item then
                        _artworkItem(step, item, nil, false)
                end
        end

The problem seems to be that menuAccel is always true even when stopping the scrollbar finger scrolling, so it never gets to the part of the code where the _artworkItem() is collected.

I tried commenting out the menuAccel clause at the top as a test but that also failed because it doesn't get the correct menu item indexes
Comment 4 SVN Bot 2010-03-02 08:52:01 UTC
 == Auto-comment from SVN commit #8611 to the jive repo by bklaas ==
 == https://svn.slimdevices.com/jive?view=revision&revision=8611 ==

Fixed Bug: 15666
Description: in Menu.lua when MOUSE_UP is detected and self.accel is true, call reLayout() instead of reDraw() to trigger the artwork fetch
thanks to Tom for helping me understand this code
Comment 5 Chris Owens 2010-04-08 17:26:50 UTC
This bug has been marked fixed in a released version of Squeezebox Server or the accompanying firmware or mysqueezebox.com release.

If you are still seeing this issue, please let us know!