2 followers Follow

Widgets renderring problems


We have problem with widgets rendering. Here you can see it in action:

Those tabs on the left each has coresponding menu. Here only one menu is has been added. Video is self kind of explanatory.. Basically, the problem is that not corresponding regions are messing up. We would love to have any suggestions.

Karolis Milieška

Please sign in to leave a comment.



Hello Karolis,

Based on the video it looks like either missing invalidates of the centre region or a more low-level problem with interrupt priorities and/or frame buffer semaphore.

The fact that it works on the simulator makes an invalidation problem less likely. A way to quickly rule out invalidation, is to make the View redraw the entire screen every frame. This is done by inserting the following function in your concrete view class:

virtual void handleTickEvent() { container.invalidate(); }

This will override the basic tick event function and invalidate the root container every frame.

Does this make the screen look correct?


If not, could you please try disabling DMA drawing (to disable the frame buffer semaphore and DMA interrupt interaction). This is done in your BoardConfiguration by declaring your DMA object to be of type NoDMA instead of what it is now. You probably need to #include <touchgfx/hal/NoDMA.hpp>

Does this alleviate the problem? If so it points to a problem with either the DMA interrupt priority (configured in your HAL subclass) or with the OS abstraction layer - OSWrappers.cpp. Did you change anything in those files?


Søren Snehøj Nielsen 0 votes

I have checked all places where invalidation must be and it is there. Or maybe I missunderstand where to use it? I am using invalidation for every drawable object just after changing it.

Also, I want to point aout that there is also problems with left side tab bar as can be seen in the video: while chaging selected tab from first one (which has corresponding menu) to another. This must not have any effect on it.. As well as right side button: when touching it, bitmap is redrawde, bus it messes up other contents.

By inserting suggested function problem still occurs. It now ticks and flashes a bit at every tick.

Everything work correctly when no texts (in this case) added on to center menu list items. This might be some clue..

OSWrappers.cpp was adopted to work with Keil RTX.

Karolis Milieška 0 votes

We found problem. As you suggested we started investigate DMA. This was our mistake in code changes. But it now works even without using NoDMA.

Karolis Milieška 0 votes