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.
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.