Scrolling did not work in Matrix demo -- FIXED!

The Matrix demo for the Wio Terminal uses hardware scrolling on the TFT display but it was not working as supplied. The fix is to add a tft.startWrite() at the beginning and a tft.endWrite() at the end of these two functions in TFT_Matrix.ino:
setupScrollArea()
scroll_slow()

Here is the cause of the failure if you are interested:
The Seeed_Arduino_LCD library supplied for the Wio Terminal is configured to use SPI transactions. This means that every write to the display controller has to be wrapped in code that starts a transaction and ends a transaction. The Matrix demo is using tft.writecommand() and tft.writedata() which does not start and end a transaction even if they are configured. If you think about this, it is not a bug. These low level functions have no idea how many parameters you are going to write. Because of this the hardware scroll never happens.

I hope my day spent trying to get hardware scrolling working on the Wio Terminal saves someone some grief!

I just had a conversation with Bodmer, the author of the TFT_eSPI library Seeed forked. This issue was already fixed in his repository. The writecommand() and writedata() functions correctly start and end a transaction so there is no need to do that in your code if you use his library.

Thank you for your feedback, we will follow up the upstream function as soon as possible.