Roku Developer Program

Developers and content creators—a complete solution for growing an audience directly.
cancel
Showing results for 
Search instead for 
Did you mean: 
destruk
Level 10

Gridscreen focus firmware bug

for roGridscreen - got this from Roku QA. So I looked at it some more and it is affecting any channel that uses a gridscreen.


Platform/Firmware:
Dallas - 7.0.8792

Steps to reproduce:
1) Launch the channel
2) Shift posters in every row 1 right
3) Open Springboard of next one poster
4) Press back on RC

Expected result: the same poster is focused

Actual result: Incorrect poster is focused after pressing back on RC

This also breaks if you press up from the springboard. (does not appear to break if you only have a gridscreen with one category)
Simply setting the row/column with setfocusedlistitem immediately without the loop appears to exhibit a race condition and is ignored.
I thought, since each video has a unique poster thumbnail image what I'm having to do is run a loop through the content and match that and set the row/column when it finds a match.
Basically I have it print a match and save the matched value (which it shouldn't need to do anyway as I always track the row and column) -- it says it finds the match, stores the right value, and setfocusedlistitem is ignored again. I've tried adding sleep, -- about the only way to get it on the right poster is to break into the debugger and manually tell it setfocusedlititem for what I want and then hit c to continue again.

The issue isn't my own count, because that is correct for row and column - the issue is the internal gridscreen count that gets thrown off, and then it doesn't do what the code tells it to do to focus the correct posted again.

In addition, hitting remote buttons 30+ times per second navigating through a gridscreen will throw off the counts by 4+.
This started once you began redrawing/repopulating the gridscreen when a springboard is closed.

Please fix.
0 Kudos
1 Reply
destruk
Level 10

Re: Gridscreen focus firmware bug

This works - but it looks really stupid.
When I create the gridscreen I initialize a variable (adjust=0)
When I open the springboard from msg.listitemselected() I set a variable (adjust=1) as I assume it's going to focus the wrong poster at some point.
When the springboard closes then it sends msg.listitemfocused() - in this routine after it prints the message I have it setlistitemfocused(row,col) and then it highlights the correct poster and I change the adjust variable back to 0.
However, initially it highlights the wrong poster, and then immediately shifts to the correct poster.

And if your internal poster count for the component is off by 5 or more posters, it is visibly worse.
0 Kudos