You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
There is noticeable flicker when the timer value changes. It seems that tcMenu is re-rendering the entire menu row, rather than just the string value which has changed, and with the speed of the LCD, it causes a flicker as the data renders.
According to TFT_eSPI documentation, and tcMenu documentation, this seems like it can be avoided if the menu item is double-buffered as a sprite. I've tried to increase the allowed sprite size to work for the size of the timer row, but it doesn't necessarily seem to be working as expected. tcMenu seems to make reference to 40px being the max sprite height, but I can't find where that is in code.
If i shrink the size of the row down, the flicker appears to go away. I can't tell if this is because the double-buffering is working correctly, because there is just less data to render (so it happens faster), or if it is just not noticeable because of the smaller size, there is less flickering for my eye to catch.
Things I've tried:
Increasing the buffer size settings when the gfx object is created
Overclocking the SPI bus to 80mhz (from 70mhz). This didn't help, and ultimately caused occasional screen artifacts.
Changing font, and size.
Things I may try going forward:
Switch to a dashboard view where the timer isn't a menu item, but a manually rendered block. I can ensure that it is a buffered sprite at that point. Issue is... I would then have to manually format the string and run all of the graphics calls to render the text to the correct spot using render pipeline callbacks. This is far from my ideal case, I'm trying to avoid breaking out into manual rendering at all costs.
See if I can find in the tcMenu code where the sprite support may be limited, and not creating a buffered sub display. So far I haven't found it, the eSPI code tcMenu creates is a rather thin layer, and doesn't have any sort of limitation to size that i can find. We should still have plenty of ram available for buffering up to the entire screen as a framebuffer.
The text was updated successfully, but these errors were encountered:
There is noticeable flicker when the timer value changes. It seems that tcMenu is re-rendering the entire menu row, rather than just the string value which has changed, and with the speed of the LCD, it causes a flicker as the data renders.
According to TFT_eSPI documentation, and tcMenu documentation, this seems like it can be avoided if the menu item is double-buffered as a sprite. I've tried to increase the allowed sprite size to work for the size of the timer row, but it doesn't necessarily seem to be working as expected. tcMenu seems to make reference to 40px being the max sprite height, but I can't find where that is in code.
If i shrink the size of the row down, the flicker appears to go away. I can't tell if this is because the double-buffering is working correctly, because there is just less data to render (so it happens faster), or if it is just not noticeable because of the smaller size, there is less flickering for my eye to catch.
Things I've tried:
Things I may try going forward:
The text was updated successfully, but these errors were encountered: