-
Notifications
You must be signed in to change notification settings - Fork 15
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Legato_Tasks() preemption #40
Comments
Maybe unlocking the function after the cache buffer have been completely treated (before returning back to stream a new cache bufffer from external memory) could be great. Users could tune the preemption time depending on the size of the cache buffer. |
To make the raw image decoder loop non-blocking, you should be able to add:
to the end of the loop like so:
|
Thanks for your answer. |
Hi Nicolas - a few things to try:
|
Hello Ed, |
Hello,
I am using the library on a PIC32MZDA without OS, and trying to optimize everything I can to fulfil other real time constraints like CAN periodicity messages.
Up to here I don't, the Legato_Tasks() at the preemtion level 1 or 2 keeps the hand during more than 100 ms to paint image widget of 128x128 pixels in RGBA8888 mode. I am using the stream interface, but the time needed to stream image from external memory seems not significant in the complete drawing operation.
Looking into the code I wonder if one of the preemption define (LE_PREEMPTION_LEVEL) used to avoid blocking was correctly placed.
The one in the function _leImageWidget_Paint (legato_widget_image_skin_classic.c) seems to be useless as a deeper function is actually blocking. The deeper function blocking is the _exec function in file legato_imagedecoder_raw.c (while loop).
Is there a way to make this function not blocking ?
Regards
Nicolas
The text was updated successfully, but these errors were encountered: