To the Roku devs, the following two capabilities would be greatly appreciated
1. The ability to composite the canvas without showing it. That is, a show() method that just does the heavy lifting, so I can later do a very speedy actual displaying of the canvas.
2. The ability to block until the canvas is actual updated/displayed. The show() method returns after a fairly standard time interval, but depending on how heavily the canvas is utilized, the actual screen update may take several more seconds. Calls to screen components with quicker update intervals may cause screen components to display out of order. Actually, it just occurred to be you may have that behavior on purpose to facilitate message handling. In that case, sending a message that the canvas has finished displaying would be useful.
Additionally, if you don't already have plans on how to speed up roImageCanvas, I have a suggestion, allow contiguous sets of layers to be tagged as "static." This would allow the roImageCanvas to composite and cache those layers into a single image to be used on future calls to show(), which I imagine could greatly speed up compositing the canvas elements.
E.g.
1. Set layer 0 to background image
2. Build display in layers 1-10
3. set layers 1-10 as static, telling the canvas that you won't be changing them
4. Display something dynamic on layer 11
This would allow layers 1-10 to be composited into a single image, and that image then used in the show operation. Instead of each additional canvas change having to composite with the previous 11 layers (including 0), it composites with 0, 1-10 as a single image, and the new item. Changing anything in layers 1-10 could incur a fairly large performance/time penalty, as it re-caches them all.
This is fairly analogous to the multiple canvas object approach currently being used by myself and a few other developers, but less confusing and more determinate, since manual sleep for arbitrary times isn't needed.
-- GandK Labs
Check out Reversi! in the channel store!