cancel
Showing results for 
Search instead for 
Did you mean: 

TouchGFX elements not updating when invalidate is called

brohr01
Associate III

Hello, I am working with a custom board using an STM32u5g9vjt6q and a DSI display in video mode.  The screen consist of multiple elements including scrollwheels, text boxes, arcs and boxes with borders and using the double buffer strategy  Originally I had the project running on FreeRTOS and all of the elements would update correctly by calling invalidate on the items that needed to be updated.

I have switched to running no OS for various reasons and now the only screen elements that update 100% of the time are the scrollwheels, I sometimes see a textbox wildcard flicker between the default value and the updated value but that is not very common. 

If I call View::invalidate(); from inside of screen1::handleTickEvent() all of the screen elements will refresh and be displayed correctly but this kills the performance of the device as expected and I know this is not the solution to my problem.  I have been doing a lot of reading on this forum and I started to look into the VSync functions inside of OSWrappers.cpp, Im not sure this is where my problem lies but its the only clue I have to go on.

OSWrappers::signalVSync() is being called around 70hz, OSWrappers::signalRenderingDone() is being called at 50hz and the output of the FRAME_RATE gpio is 25hz

OSWrappers::waitForVSync() is never being called, Im not sure if that has anything to do with my issue, just something that Ive noticed.

Any input would be great, I need to figure out how to remove the View::invalidate() call on every handleTickEvent() and be able to rely on invalidating each element as they need to be updated.  Once again, this approach worked as expected when I was running FreeRTOS. Thanks!

0 REPLIES 0