Hi All,
Here i am using a TFT display for RZ/A1H, Here we are using Guiliani developed a GUI . The data whatever received from CAN has to display on the screen and it is working fine, But while on each update the screen is flickering especially if any animation or text update happen, please suggest a solution to avoid the flickering. Also please suggest the reason and rootcause for the above
Hello,
to analyse your problem in the best way, we need additional information.
- what version of Guiliani are you using
- can you describe the design of the dialog (how many layers, special widgets)
- are you using a datapool-element to update the value in our GUI
- are there any other access to the framebuffer
In general Guiliani will own the framebuffer and update it when there are changes on the screen.
If the framebuffer of such an invalidated region is changed, Guiliani is likely to overwrite the contents.
Flickering of elements on the screen can only happen if the currently displayed framebuffer (when using double-buffering) is changed instead of the off-screen-framebuffer (render-buffer).
Best Regards,
Guiliani Support
1) Guiliani version that we used : 2.3
2) We used a single layer and no special widgets used i.e the flickering area has text and images in different locations
3) No Datapool elements used
4) No other access to the framebuffer
when not using a Datapool-element, how is the value coming from CAN updated inside the GUI? is there any special logic which accesses the GUI-element and changes the value?
In general when values from outside of the Guiliani-application (e.g. other tasks or peripherals) should update GUI-elements it is strongly advised to use Datapool-elements and define the GUI-element as an observer. This Datapool-element can be modified from outside of Guiliani in a thread-safe way. The update of the GUI-element is automatically done by Guiliani in the next iteration of the main-loop.
To investigate the flickering more you can set breakpoints inside the function "GrpDrv_SetFrameBuffer" in the file <Application>/Common/Source/FreeRTOS/StreamRuntime_GraphicRZA.cpp. In this function a call to "R_RVAPI_GraphChangeSurfaceVDC" is done which will effectively change the framebuffer which is currently displayed.
Hi
In case of CGUITextField and CGUIGauge components we use SetValue(value) to update the value in the UI.
We will try with DATAPOOL beyond datapool what changes i have to make please guide for the necessary
Thanks
thanks for the support after changing to datapool flickering reduced
Hii
I added the datapool method what you suggested and tried initial flickering has removed but while data receiving time still the flickering is happening any solution for this please, also attaching the video which shows the flickering
are you using the display from the official Renesas Evaluation Kit? Other displays might need some additional control when flipping the front and back-buffers or maybe different timing for the v-blank-period.
In general the function R_RVAPI_GraphChangeSurfaceVDC should only be called inside the function GrpDrv_SetFrameBuffer. Please verify that this is the case. To avoid artifacts on the display or flickering no call to display-related functions should be made in user-code.
You can add a breakpoint before the execution of this function and step over it to see the refresh of the display. In your video it seems that there are two refreshes done. One with a black portion of the background and the other one with the background-image and the updated text.