Bugzilla – Bug 7829
Jive menu broken if BLOCK_SIZE == list count + 1 and "Play All" or similar is prepended to the list
Last modified: 2011-01-14 12:08:48 UTC
This is a general problem with both queries in XMLBrowser.pm and Queries.pm. If the BLOCK_SIZE is exactly equal to the requested list size, and an extra item like "Play All" is being prepended on the top of the list, the menu is broken. With a default BLOCK_SIZE of 200, this condition is rarely hit. However, this is easily reproducible with desktop Squeezeplay by finding a directory that gets a "Play All" added, determine the list size (just from the query, not including the extra item(s) added for the menu), then set BLOCK_SIZE in DB.lua to that number, restart Squeezeplay and browse back to that directory.
Ben notes the right way to fix this is an architectural change that needs serious thinking.
though Richard notes that my architectural change idea is flawed in that it just pushes the hack from SC to Jive. I'm out of ideas on how to effectively fix this. Suggest a meeting post 7.0.1 to discuss only this issue.
Maybe Mickey can coordinate such a meeting?
I'm not sure this requires a meeting, given there's fairly strong resistance to changing how we have it now. I'd like to see it changed to something less headache-inspiring, but I don't see it happening. assigning to myself for assessment post 7.1
punting to 7.3
Ben: do Michael's changes in bug 9566 comment 12 change 23550 affect this bug?
no, that change will do nothing to fix this bug
this isn't going to be fixed by 7.3. retarget for 7.3.1
Tom and I speculated that the fix for Bug 7186 on the 7.4 jive branch may have also fixed this issue from empirical tests, that is not the case, although the criteria for hitting the bug may have slightly changed. To test, I browsed to Music Library->Genres->Rock, and noted through debug messages what the size of that list was (124). I then changed BLOCK_SIZE to 124 and retested (works), 125 (works), and 123 (request loop, broken menu scrolling). I also saw that a BLOCK_SIZE of 61 (but not 60, 62, or 63) reproduced the issue this debug is actually showing the count being returned differently with each chunk... 130413:10800 INFO (NetworkThread.lua:254) - NOTIFY: playerNew(Player {Squeezebox 160109}) 130414:11723 WARN (DB.lua:184) - ********************************* total count:124 130414:11723 WARN (DB.lua:185) - ********************************* loading key number 0 130414:11724 WARN (DB.lua:186) - ********************************* cFrom: 1 130414:11724 WARN (DB.lua:187) - ********************************* cTo: 61 130415:12352 WARN (DB.lua:184) - ********************************* total count:123 130415:12352 WARN (DB.lua:185) - ********************************* loading key number 2 130415:12352 WARN (DB.lua:186) - ********************************* cFrom: 123 130415:12352 WARN (DB.lua:187) - ********************************* cTo: 123 130416:13779 WARN (DB.lua:184) - ********************************* total count:124 130416:13780 WARN (DB.lua:185) - ********************************* loading key number 0 130416:13780 WARN (DB.lua:186) - ********************************* cFrom: 1 130416:13780 WARN (DB.lua:187) - ********************************* cTo: 61 130417:14432 WARN (DB.lua:184) - ********************************* total count:123 130417:14433 WARN (DB.lua:185) - ********************************* loading key number 2 130417:14433 WARN (DB.lua:186) - ********************************* cFrom: 123 130417:14433 WARN (DB.lua:187) - ********************************* cTo: 123 130418:15865 WARN (DB.lua:184) - ********************************* total count:124 130418:15865 WARN (DB.lua:185) - ********************************* loading key number 0 130418:15865 WARN (DB.lua:186) - ********************************* cFrom: 1 130418:15865 WARN (DB.lua:187) - ********************************* cTo: 61 130419:16493 WARN (DB.lua:184) - ********************************* total count:123 130419:16493 WARN (DB.lua:185) - ********************************* loading key number 2 130419:16493 WARN (DB.lua:186) - ********************************* cFrom: 123 130419:16493 WARN (DB.lua:187) - ********************************* cTo: 123 130420:17931 WARN (DB.lua:184) - ********************************* total count:124 130420:17931 WARN (DB.lua:185) - ********************************* loading key number 0 130420:17931 WARN (DB.lua:186) - ********************************* cFrom: 1 130420:17931 WARN (DB.lua:187) - ********************************* cTo: 61 130421:18567 WARN (DB.lua:184) - ********************************* total count:123 130421:18567 WARN (DB.lua:185) - ********************************* loading key number 2 130421:18567 WARN (DB.lua:186) - ********************************* cFrom: 123 130421:18567 WARN (DB.lua:187) - ********************************* cTo: 123 130422:20208 WARN (DB.lua:184) - ********************************* total count:124 130422:20208 WARN (DB.lua:185) - ********************************* loading key number 0 130422:20208 WARN (DB.lua:186) - ********************************* cFrom: 1 130422:20208 WARN (DB.lua:187) - ********************************* cTo: 61 vk/squeezeplay/7.4/trunk/squeezeplay/build/osx/bin:
retarget for 7.3.3
We are now planning to make a 7.3.3 release. Please review your bugs (all marked open against 7.3.3) to see if they can be fixed in the next few weeks, or if they should be retargeted for 7.4 or future. Thanks!
I think I may have addressed a related issue as part of bug 10646 where the list gets broken in Queries::playlistTracksQuery. The last item (favourites) is lost in many cases, but the patch fixes this. I'm holding off merging as I'd like to have feedback.
Since there's now a planned 7.3.3 release, bugs which won't make the cut-off are being moved to the next target out. If you feel that this bug needs to be addressed more (or less) urgently than the 7.4 release, please cc chris@slimdevices.com and leave a comment in the bug to that effect so we can review it. Thanks.
For some reason Bugzilla did not change the target when I did this yesterday. Or maybe it was me. In either case, I'm trying it again.
Old bug, it can wait.