Compare commits

...

290 Commits
xml ... master

Author SHA1 Message Date
Fabian Zäh
9e396fad8c fix(scale): change return type of lv_scale_get_rotation to int32_t and update documentation (#7862) 2025-03-12 17:23:42 -03:00
yushuailong
57a428abd8 fix(obj): style opa of other part is not effective (#7905)
Signed-off-by: yushuailong <yushuailong1@xiaomi.com>
Signed-off-by: yushuailong1 <yushuailong1@xiaomi.com>
Co-authored-by: yushuailong1 <yushuailong1@xiaomi.com>
2025-03-12 17:19:26 +01:00
David Truan
176b500005 feat(indev): Add rotation and two fingers swipe gestures support (#7865) 2025-03-12 16:38:43 +01:00
Kamran Aghlami
8ae5ee254a feat(obj_tree): indent printed object data according to its depth (#7852)
Thanks!
2025-03-12 16:37:42 +01:00
Iulian Mateșică
ca2f5070f4 fix(nuttx): incorrect draw buffer size for I1 color and bpp=1 (#7885) 2025-03-12 16:32:56 +01:00
Felix Biego
5b39934276 docs(viewe): add Viewe docs (#7916) 2025-03-11 14:59:28 +01:00
Benign X
3198e1e78d fix(label): fix behavior when set to LV_LABEL_LONG_MODE_SCROLL_CIRCULAR with BIDI (#7886)
Signed-off-by: Benign X <1341398182@qq.com>
2025-03-11 14:27:03 +01:00
Gabor Kiss-Vamosi
90dcc889b2 feat(draw_sw): have only one SW draw unit with multiple threads internally (#7899) 2025-03-11 14:18:27 +01:00
mhasler-inno
b4f256a40e feat(dma2d): add support for DMA2D on STM32H7RS (#7850) 2025-03-10 19:05:46 -03:00
André Costa
416428faa7 feat(benchmark): add on benchmark end callback (#7814) 2025-03-10 19:01:43 -03:00
Zhang Ji Peng
7630e994bc fix(svg): fix SVG draw rect off by 1px bug (#7902)
Signed-off-by: zhangjipeng <zhangjipeng@xiaomi.com>
Co-authored-by: zhangjipeng <zhangjipeng@xiaomi.com>
2025-03-10 16:45:17 +01:00
jeremy-baker
abb51a43ee fix(dave2d): LV to D2 colour format conversion for I8 format (#7896) 2025-03-10 11:53:45 +08:00
jeremy-baker
cecaa6a5a8 fix(dave2d): fix build break (#7882) 2025-03-10 10:59:17 +08:00
VIFEX
ed1ff5bda6 feat(tests): add draw 8bpp font test (#7895)
Signed-off-by: pengyiqiang <pengyiqiang@xiaomi.com>
Co-authored-by: pengyiqiang <pengyiqiang@xiaomi.com>
2025-03-10 10:58:47 +08:00
liamHowatt
850426b793 docs(ffmpeg): images always loaded with lvgl fs 2025-03-07 12:10:29 +01:00
liamHowatt
eecebd2156 fix(ffmpeg): clear the first image data 2025-03-07 12:10:29 +01:00
liamHowatt
3605c32695 fix(ffmpeg): free packet 2025-03-07 12:10:29 +01:00
Gabor Kiss-Vamosi
50fbe6a0a4 fix(thorvg): add missing include (#7877) 2025-03-07 12:09:52 +01:00
Liu Yi
cb8ac4df4f ci(ubuntu): ci use ubuntu24.04 (#6241)
Signed-off-by: lhdjply <lhdjply@126.com>
2025-03-07 10:47:17 +01:00
Gabor Kiss-Vamosi
346395d039 chore(obj): deprecate lv_obj_find_by_id in favor of lv_obj_find_by_name 2025-03-07 10:30:22 +01:00
Gabor Kiss-Vamosi
56c44bfdc4 refactor(objid): rename lv_obj_get_child_by_id to lv_obj_find_by_id for consistency 2025-03-07 10:30:22 +01:00
Gabor Kiss-Vamosi
626d6b51ad feat(obj): add obj name support
fixes #7476

Co-authored-by: Liam Howatt <30486941+liamHowatt@users.noreply.github.com>
Co-authored-by: André Costa <andre_miguel_costa@hotmail.com>
2025-03-07 10:30:22 +01:00
Gabor Kiss-Vamosi
6d999331d7 chore(class): use lv_ prefixed s to avoied naming conflicts with the user widgets 2025-03-07 10:30:22 +01:00
Neo Xu
aa567970c5 fix(nuttx): fix nuttx lcd release assert (#7840) 2025-03-07 08:43:27 +08:00
Gabor Kiss-Vamosi
1623acab3d docs(test): fix the location of test.rst (#7900) 2025-03-06 23:47:53 +01:00
Gabor Kiss-Vamosi
8d04466c68 feat(test): make LVGL's test utilities public 2025-03-06 23:25:03 +01:00
Gabor Kiss-Vamosi
aff9ad3b4a fix(label): improve the position keeping of updated scrolling texts 2025-03-06 23:25:03 +01:00
Gabor Kiss-Vamosi
eeb1fef18e fix(anim): make sure the resumed animtion doesn't skip the first update 2025-03-06 23:25:03 +01:00
yushuailong
71e6edcdf7 fix(refr): fix invalidate area calc error (#7871)
Signed-off-by: yushuailong1 <yushuailong1@xiaomi.com>
2025-03-06 10:43:41 +01:00
VIFEX
660e1afda0 fix(vg_lite): fix missed reference count release (#7889)
Signed-off-by: pengyiqiang <pengyiqiang@xiaomi.com>
Co-authored-by: pengyiqiang <pengyiqiang@xiaomi.com>
2025-03-05 19:42:40 +08:00
VIFEX
39bc1f78d0 perf(array): make short functions inline to reduce function jumps (#7890)
Signed-off-by: pengyiqiang <pengyiqiang@xiaomi.com>
Co-authored-by: pengyiqiang <pengyiqiang@xiaomi.com>
2025-03-05 19:42:12 +08:00
dependabot[bot]
c4f4202fa4 chore(deps): bump JamesIves/github-pages-deploy-action from 4.7.2 to 4.7.3 (#7873)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-05 16:38:20 +08:00
dependabot[bot]
4fb0615880 chore(deps): bump espressif/upload-components-ci-action from 1 to 2 (#7874)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-03-05 16:37:50 +08:00
Benign X
63b53829b6 fix(freetype): add missing error handling for glyph bitmap lookup failure (#7887)
Signed-off-by: Benign X <1341398182@qq.com>
2025-03-05 16:05:31 +08:00
Benign X
340482db9e feat(nuttx_fbdev): support for complete non-/consecutive fbdev mmap processing 2025-03-05 00:18:57 +08:00
Benign X
b662802112 fix(nuttx_fbdev): fix memory buffer handling
mmap fb mem addr

Improved the memory buffer handling in the framebuffer device driver for NuttX.

This change adjusts the calculation of the buffer offset and ensures that the framebuffer memory is correctly mapped.
2025-03-05 00:18:57 +08:00
Victor Wheeler
1b21cfe256 docs: fix doc-build failure (#7879) 2025-03-04 06:42:01 +01:00
红桃六
1bcc6e180d feat(spangroup): add some testcases for span rtl mode. (#7870)
Signed-off-by: liuhongchao <liuhongchao@xiaomi.com>
2025-03-04 10:30:48 +08:00
lizhaoming
5c068fb015 feat(examples): add looping scroll example (#7714)
Co-authored-by: lizhaoming <13678462+lizhao-ming@user.noreply.gitee.com>
2025-03-04 00:02:31 +01:00
Victor Wheeler
0bef0125ea docs(restructure): restructure TOC and contents for ease of use (#7847) 2025-03-03 21:09:44 +01:00
Fabian Blatz
b201713604 feat(draw/sw): allow custom handlers (#7531) 2025-02-28 19:24:11 -03:00
VIFEX
d689dd6951 fix(vg_lite): fix pending swap sequence error (#7849)
Signed-off-by: pengyiqiang <pengyiqiang@xiaomi.com>
Co-authored-by: pengyiqiang <pengyiqiang@xiaomi.com>
2025-02-28 19:23:34 -03:00
Victor Wheeler
28277c8448 docs(introduction): update active state of v8.3 (#7867) 2025-02-28 20:10:33 +01:00
红桃六
2fcb7199c3 fix(indev): fix lv_indev_gesture write access error (#7843)
Signed-off-by: liuhongchao <liuhongchao@xiaomi.com>
2025-02-28 10:00:41 +01:00
Liam Howatt
8c313b230d fix(SDL): error if color depth is 1 and render mode is not partial (#7846) 2025-02-27 16:25:03 +01:00
Zhang Ji Peng
2f3b307d5f fix(draw): fix 'lv_vector_path_append_arc' not starting with a 'move to' operation. (#7854)
Signed-off-by: zhangjipeng <zhangjipeng@xiaomi.com>
Co-authored-by: zhangjipeng <zhangjipeng@xiaomi.com>
2025-02-27 15:12:01 +01:00
Liam Howatt
97e0c9c0c2 fix(release_updater): push: if branch is specified, remote must be specified too (#7863) 2025-02-27 15:11:14 +01:00
Gabor Kiss-Vamosi
8d84f6a699 fix(obj): cover check should consider both grad opa-s (#7813) 2025-02-27 12:27:05 +01:00
Cosmin-Daniel Radu
560364adaa feat(nxp): add G2D support (#7625)
Signed-off-by: Ana Grad <ana.grad@nxp.com>
Co-authored-by: Ana Grad <ana.grad@nxp.com>
2025-02-27 11:31:57 +01:00
Victor Wheeler
00df4ca7a4 docs(boards): proofread batch 21 (#7769) 2025-02-27 11:04:29 +01:00
红桃六
964ef5c551 fix(indev): fix platform-specific printf format for int32_t (#7844)
Signed-off-by: liuhongchao <liuhongchao@xiaomi.com>
2025-02-26 14:31:33 +08:00
Ackerman
ec15a45a93 fix(profiler_builtin): fix uint32_t storage nanosecond time overflow (#7818)
Signed-off-by: chenjinglin <chenjinglin@xiaomi.com>
2025-02-26 11:57:17 +08:00
jialuxiao-mi
5764574c9c fix(demos/smartwatch): fix image color format error (#7819)
Signed-off-by: jialuxiao <jialuxiao@xiaomi.com>
2025-02-26 11:56:36 +08:00
Ioannis Markopoulos
228498f4c3 fix(nema): Broken build after draw unit refactoring, draw_label changes (#7759) 2025-02-25 22:45:02 +01:00
Victor Wheeler
fc3e2dd1ae docs: convert 4 .rst files back to .md files since not part of doc-gen (#7839) 2025-02-25 22:36:30 +01:00
Gabor Kiss-Vamosi
ab07080f01 fix(release_updater): minor fixes and addition of new boards (#7726)
Co-authored-by: Liam Howatt <30486941+liamHowatt@users.noreply.github.com>
2025-02-25 17:42:11 +01:00
Victor Wheeler
8f6713c185 docs(misc): pre-re-org wrap-up... (#7804)
Co-authored-by: Felipe Neves <ryukokki.felipe@gmail.com>
2025-02-25 16:15:02 +01:00
Victor Wheeler
fb3903c55e docs(bindings): proofread batch 20 (#7764) 2025-02-24 23:24:51 +01:00
Victor Wheeler
d4b5bf8af0 docs(xml): fix Sphinx errors in XML-component docs (#7820) 2025-02-24 23:24:37 +01:00
Felix Biego
db1daf55d8 fix(examples): add casts (#7831) 2025-02-24 23:23:54 +01:00
Benign X
27b113e270 feat(lv_bin_decoder): improve error logging in file reading (#7826) 2025-02-24 20:03:39 +01:00
Felix Biego
728546adb7 feat(blend): add blend difference mode (#7796) 2025-02-21 19:29:29 +01:00
Gabor Kiss-Vamosi
fc5c156385 feat(thorvg): use LVGL's malloc/realloc/zalloc/free (#7772) 2025-02-21 18:51:33 +01:00
Victor Wheeler
2bf2ab46ce docs(libs): proofread docs batch 19 (#7709)
Co-authored-by: Liam Howatt <30486941+liamHowatt@users.noreply.github.com>
2025-02-21 18:49:14 +01:00
VIFEX
5856e46079 perf(vg_lite): reduce ineffective D-cache flushing operations (#7817)
Signed-off-by: pengyiqiang <pengyiqiang@xiaomi.com>
Co-authored-by: pengyiqiang <pengyiqiang@xiaomi.com>
2025-02-21 18:45:09 +01:00
Benign X
93cef1274a feat(nuttx_image_cache): add configuration to use image cache heap for default heap (#7653) 2025-02-21 14:31:14 +08:00
Narukara
889f42be3f docs(intro): fix typo (#7812) 2025-02-21 12:24:12 +08:00
VIFEX
673e8b0d2e feat(vg_lite): optimize resource reference count management (#7809)
Signed-off-by: pengyiqiang <pengyiqiang@xiaomi.com>
Co-authored-by: pengyiqiang <pengyiqiang@xiaomi.com>
2025-02-20 16:08:28 -03:00
André Costa
34e2ef67f0 feat(mem): add lv_reallocf (#7780) 2025-02-20 12:20:03 +08:00
yushuailong
884589e12b fix(indev): fix scroll_obj not send LV_EVENT_INDEV_RESET (#7767)
Signed-off-by: yushuailong1 <yushuailong1@xiaomi.com>
2025-02-20 12:19:38 +08:00
红桃六
28f902d702 feat(span): support bidi for span (#7717)
Signed-off-by: liuhongchao <liuhongchao@xiaomi.com>
2025-02-20 10:18:17 +08:00
Victor Wheeler
377cc5aa80 docs(libs): proofread docs batch18 (#7688)
Co-authored-by: Gabor Kiss-Vamosi <kisvegabor@gmail.com>
Co-authored-by: Liam Howatt <30486941+liamHowatt@users.noreply.github.com>
2025-02-19 08:39:03 -05:00
VIFEX
10fbcef470 feat(draw_vector): add fill units support (#7774)
Signed-off-by: pengyiqiang <pengyiqiang@xiaomi.com>
Co-authored-by: pengyiqiang <pengyiqiang@xiaomi.com>
2025-02-19 19:40:39 +08:00
红桃六
64e0388d32 fix(kconfig): add LIBUV dependency to prevent missing configurations (#7798)
Signed-off-by: liuhongchao <liuhongchao@xiaomi.com>
2025-02-19 19:30:17 +08:00
红桃六
cc51da5af3 fix(indev): modify calculation delta_y use p_delta_y, not p_delta_x (#7791)
Signed-off-by: liuhongchao <liuhongchao@xiaomi.com>
2025-02-19 14:52:16 +08:00
Paul Vogel
77f8f62d18 fix(example_grad): return value from lv_style_get_prop not checked (#7793) 2025-02-19 10:36:37 +08:00
Victor Wheeler
d22bf032b1 docs(roller): fix roller API-docs spelling error (#7735) 2025-02-18 20:53:31 -05:00
Victor Wheeler
1d0bb3e8c6 feat(docs): new docs-build paradigm... (#7597) 2025-02-18 20:51:47 -05:00
Gabor Kiss-Vamosi
97aa6b8629 docs(xml): fix not using the docs (#7785) 2025-02-19 09:45:20 +08:00
Victor Wheeler
80ee18b612 feat(docs): upgrade presentation of display.rst (#7478) 2025-02-18 21:51:40 +01:00
Niklas Fiekas
f0c819c1b1 perf(draw): optimize lv_draw_label() with text_length for text_local (#7673) 2025-02-18 16:48:59 -03:00
红桃六
589e8ac994 fix(indev): fix platform-specific printf format for int32_t (#7784)
Signed-off-by: liuhongchao <liuhongchao@xiaomi.com>
2025-02-17 17:14:33 +08:00
Zhang Ji Peng
9760d57540 feat(decoder): add svg image decoder for image widget (#7141)
Signed-off-by: zhangjipeng <zhangjipeng@xiaomi.com>
Co-authored-by: zhangjipeng <zhangjipeng@xiaomi.com>
Co-authored-by: Gabor Kiss-Vamosi <kisvegabor@gmail.com>
2025-02-14 19:33:49 +08:00
Benign X
1d49c7afbe fix(draw_letter): fix draw letter bg_coords behaviour when it's NULL (#7773) 2025-02-14 17:55:16 +08:00
André Costa
cef1649ea7 feat(osal): add lv_os_get_idle_percent for linux (#7632)
Co-authored-by: Liam <30486941+liamHowatt@users.noreply.github.com>
2025-02-14 11:49:19 +08:00
Gabor Kiss-Vamosi
09d0d10e28 revert(xml): revert the accidentally modifed view.xml 2025-02-13 18:59:27 +01:00
Gabor Kiss-Vamosi
052d908ab7 feat(xml): add test for a complex view 2025-02-13 18:59:27 +01:00
Gabor Kiss-Vamosi
ad8a9d9587 docs(xml): reorganize and extend the XML docs 2025-02-13 18:59:27 +01:00
Gabor Kiss-Vamosi
299e31b9ed feat(xml): add buttonmatrix 2025-02-13 18:59:27 +01:00
Gabor Kiss-Vamosi
fc4f8fa694 fix(xml): add missing align and layout values 2025-02-13 18:59:27 +01:00
Gabor Kiss-Vamosi
e90cfb7117 refactor(chart): add 'series' keyword in value setters/getters for consistency 2025-02-13 18:59:27 +01:00
Fabian Blatz
dc2346830b fix(text): fix oob read for utf8-next (#7602) 2025-02-13 14:50:01 -03:00
Gabor Kiss-Vamosi
55911732f1 Dont's squash - gradient updates (#7646) 2025-02-12 22:30:53 -03:00
André Costa
0c5e09a144 ci: add 8bit build option (#7574) 2025-02-12 14:26:44 -05:00
Victor Wheeler
bafc22e016 feat(fs): clarify rest of docs on driver-identifier letters. (#7710) 2025-02-12 13:58:37 -05:00
Paul Vogel
155ee2a045 fix(bin_decoder): check divisor is zero (#7610) 2025-02-12 16:27:43 +08:00
William Spinelli
49d6d7295a fix(nema): fix indexed image error (#7744) 2025-02-11 20:31:42 -05:00
VIFEX
da2438712b feat(vg_lite): enhanced the automatic diagnosis function of GPU errors (#7751)
Signed-off-by: pengyiqiang <pengyiqiang@xiaomi.com>
Co-authored-by: pengyiqiang <pengyiqiang@xiaomi.com>
2025-02-12 09:11:01 +08:00
Victor Wheeler
43b32341b0 fix(observer): protect against possible negative arg value 2025-02-11 22:06:14 +01:00
Victor Wheeler
bae25ad288 fix(observer): fix 2 warnings emitted by VS C compiler...
- possible loss of data warning from `size_t` to `uint32_t`, and
- signed-unsigned comparison warning
2025-02-11 22:06:14 +01:00
Victor Wheeler
82034cbaee feat(observer): rename arg to clarify correct use...
...`subject` => `group_subject` to clarify meaning and correct use
so that it is clear that it is not the same as any of the subjects in
the `list[]` argument.
2025-02-11 22:06:14 +01:00
Victor Wheeler
9b3c365ae5 feat(observer): Make lv_obj_remove_from_subject() legal for Widget Binding.
Resolves #7702
2025-02-11 22:06:14 +01:00
Victor Wheeler
02c3d7c865 fix(observer): fix bug in lv_obj_bind_checked() function
Resolves #7694
2025-02-11 22:06:14 +01:00
Victor Wheeler
e0dfe80044 feat(lv_subject_t): re-sequence fields to reduce size from 32 => 28 bytes
Resolves #7649
2025-02-11 22:06:14 +01:00
Victor Wheeler
c28c7e869a fix(observer.c): fix inconsistency of whitespace around conditional directives 2025-02-11 22:06:14 +01:00
Victor Wheeler
a0e37a35f8 docs(observer): re-work API (and some internal) documentation 2025-02-11 22:06:14 +01:00
Victor Wheeler
efcdff7248 docs(observer): proofread/edit/clarify observer.rst 2025-02-11 22:06:14 +01:00
Victor Wheeler
0ae888b660 fix(event): consider NULL as a wildcard for callback arg in lv_obj_remove_event_cb_with_user_data()
Resolves #7701
2025-02-11 22:06:14 +01:00
Liam Howatt
5810653958 fix(DMA2D): build issue after the draw_unit to draw_task refactor (#7749) 2025-02-11 11:42:40 +01:00
Shouko-4429
cbdc344464 fix(vg_lite): alleviate the loss of precision in obtaining path bound (#7731)
Signed-off-by: zhangmingyu3 <zhangmingyu3@xiaomi.com>
Co-authored-by: zhangmingyu3 <zhangmingyu3@xiaomi.com>
2025-02-11 08:01:19 +08:00
yimoxiao
09634a0b22 fix(indev): add the missing wait_until_release flag to clean up (#7638)
Signed-off-by: mengqingtao1 <mengqingtao1@xiaomi.com>
Co-authored-by: mengqingtao1 <mengqingtao1@xiaomi.com>
2025-02-11 07:59:45 +08:00
VIFEX
de32a116bc fix(draw): fix wrong LV_PROFILER tag (#7737)
Signed-off-by: pengyiqiang <pengyiqiang@xiaomi.com>
Co-authored-by: pengyiqiang <pengyiqiang@xiaomi.com>
2025-02-10 10:46:44 +01:00
VIFEX
815b24ffb2 chore(lv_conf_template): replace tab with space (#7736)
Signed-off-by: pengyiqiang <pengyiqiang@xiaomi.com>
Co-authored-by: pengyiqiang <pengyiqiang@xiaomi.com>
2025-02-10 09:41:16 +01:00
VIFEX
b15107eec5 fix(test_anim): fix stack-use-after-return (#7730) 2025-02-10 13:18:40 +08:00
Gabor Kiss-Vamosi
b9e0c4daaf fix(flex): don't count item gap for leading hidden items (#7720) 2025-02-08 11:40:04 +08:00
Liam Howatt
b504294613 ci: fix port release branch updater git config command (#7722) 2025-02-08 11:39:00 +08:00
Liam Howatt
79757b1902 fix(drivers): generic MIPI add missing lv_display_flush_ready (#7693) 2025-02-07 20:05:37 -03:00
Niklas Fiekas
e016e45bd4 chore(obj): make lv_obj_get_scroll_{left,right,top,bottom}() const (#7674) 2025-02-07 22:50:54 +01:00
Luna
bb632c970b fix(file_explorer): fix navigation when using a keypad indev (#7181)
Co-authored-by: Liam <30486941+liamHowatt@users.noreply.github.com>
2025-02-07 22:42:15 +01:00
Victor Wheeler
a5f51bff72 docs(event): add warning not to modify Widgets during draw events. (#7685)
Co-authored-by: Gabor Kiss-Vamosi <kisvegabor@gmail.com>
2025-02-07 20:24:00 +01:00
Liam Howatt
56320599cf ci: Port release updater update master as well (#7650) 2025-02-06 13:30:30 +01:00
Liam Howatt
c38335a1eb feat(demos): add new card to high resolution demo (#7699) 2025-02-06 13:30:00 +01:00
Liam Howatt
236c7ad625 fix(area): lv_area_diff remove overlap (#7696) 2025-02-06 13:28:01 +01:00
Victor Wheeler
f9a9d5b41b fix(indev.rst): handle lv_obj_is_focused no longer exists. (#7711) 2025-02-06 13:26:49 +01:00
Gabor Kiss-Vamosi
970ca51361 ci(ccpp): add --auto-clean flag to lower disk space usage 2025-02-05 22:48:59 +01:00
Gabor Kiss-Vamosi
1c9c9f6601 feat(xml): add basic callback event support 2025-02-05 22:48:59 +01:00
Gabor Kiss-Vamosi
a535063308 feat(xml): add support scale, span, roller and bar
Also add some backward compatible API changes
2025-02-05 22:48:59 +01:00
Gabor Kiss-Vamosi
b78a9b447a feat(xml): add gradient support 2025-02-05 22:48:59 +01:00
Gabor Kiss-Vamosi
ecfe33480b fix(xml): fix widget xmls 2025-02-05 22:48:59 +01:00
Gabor Kiss-Vamosi
39c4011864 refactor(table): convert lv_table_add_cell_ctrl to a setter 2025-02-05 22:48:59 +01:00
Gabor Kiss-Vamosi
5f2888d93a refactor(chart): add 'series' keyword in value setters/getters for consistency 2025-02-05 22:48:59 +01:00
Gabor Kiss-Vamosi
9cc9e7b503 docs(licenses): add the missing license files (#7668) 2025-02-05 19:32:22 +08:00
cristian-stoica
590184c59b fix(sysmon): disable all performance banners from screen with serial redirect (#7593) 2025-02-05 19:25:34 +08:00
Detlev Zundel
61b9d1a807 fix(draw_sw_mask): add ASSERT_MALLOC check (#7692)
Signed-off-by: Detlev Zundel <dzu@member.fsf.org>
2025-02-04 12:16:27 -05:00
Victor Wheeler
c5f888235d Feat(docs): proofread docs batch17 (#7680) 2025-02-03 19:59:05 -03:00
Saeed Poorjandaghi
b7d2eb159a fix(memcpy): ensure volatile qualifier for destination pointer in lv_… (#7573) 2025-02-03 19:58:43 -03:00
André Costa
5fde4418fb fix: warn user about deprecated LV_DEFAULT_DRIVE_LETTER (#7620)
Co-authored-by: Liam <30486941+liamHowatt@users.noreply.github.com>
2025-01-30 18:08:36 -03:00
André Costa
ed1b7d6349 feat(observer): add bind_XXX ge/gt/le/lt and notify only when value changes (#7678)
Co-authored-by: Liam Howatt <30486941+liamHowatt@users.noreply.github.com>
2025-01-30 18:01:52 -03:00
Niklas Fiekas
5d2709db32 fix(chart): fix last point not drawn in scatter chart (#7665)
Co-authored-by: Gregor Stemme <gregor.stemme@Sartorius.com>
2025-01-30 14:55:16 -05:00
Paul Vogel
6133695bfe fix(canvas): initialize layer before return (#7677) 2025-01-30 14:07:39 -05:00
André Costa
c4e426ab6b fix(indev): skip press event on new object release (#7612) 2025-01-30 11:14:07 -05:00
Kevin Wright
2579d2bfe7 fix(xml): Fixed small typo (#7684) 2025-01-30 12:33:46 -03:00
cristian-stoica
84db90f418 refactor(draw): use task instead of draw_unit as argument to draw functions (#7240)
Signed-off-by: Cristian Stoica <cristianmarian.stoica@nxp.com>
2025-01-30 11:48:26 +01:00
Victor Wheeler
5f41926f04 fix(docs): clarify obj hierarchy after lv_menu_page_create() (#7604) 2025-01-30 11:13:28 +01:00
Cosmin-Daniel Radu
284e7a41df fix(vglite) ARGB8565 color format support
Signed-off-by: Cosmin-Daniel Radu <cosmin.radu_1@nxp.com>
2025-01-30 01:47:40 +01:00
Cosmin-Daniel Radu
9e5039c6c4 fix(vglite) fix stride calculation
Signed-off-by: Cosmin-Daniel Radu <cosmin.radu_1@nxp.com>
2025-01-30 01:47:40 +01:00
Cristian Stoica
b89958a1c7 fix(vglite) Do not dispatch any task if draw unit is busy with "wait_for_finish".
Signed-off-by: Nicușor Cîțu <nicusor.citu@nxp.com>
2025-01-30 01:47:40 +01:00
Cosmin-Daniel Radu
2e75bbdbe4 feat(vglite) draw_vglite_border add support for legacy scissor
Signed-off-by: Cosmin-Daniel Radu <cosmin.radu_1@nxp.com>
2025-01-30 01:47:40 +01:00
Cosmin-Daniel Radu
b67bfeeae0 fix(vglite) vglite draw thread stack size increase for gcFEATURE_VG_SIMPLYFIED_BEZIER
Signed-off-by: Cosmin-Daniel Radu <cosmin.radu_1@nxp.com>
2025-01-30 01:47:40 +01:00
Cosmin-Daniel Radu
655f744c5d fix(vglite) skip VG_LITE_PATTERN_REPEAT tasks on GC255
Signed-off-by: Cosmin-Daniel Radu <cosmin.radu_1@nxp.com>
2025-01-30 01:47:40 +01:00
Cosmin-Daniel Radu
33de4075a1 fix(pxp) draw_img src_area parameter
Signed-off-by: Cosmin-Daniel Radu <cosmin.radu_1@nxp.com>
2025-01-30 01:47:40 +01:00
Cristian Stoica
29e3da28ea fix(vglite) do not apply scissor cut if border is complete
This avoids an unnecessary operation and improves performance for simple
cases

Signed-off-by: Cristian Stoica <cristianmarian.stoica@nxp.com>
2025-01-30 01:47:40 +01:00
Liam Howatt
4d8b72260d fix(refr): lv_obj_invalidate_area invalidates whole obj (#7598) 2025-01-30 00:50:25 +01:00
Liam Howatt
660b41df9c fix(gif): fix bounds check (#7675) 2025-01-29 16:17:59 -03:00
Victor Wheeler
d1302001ba fix(docs): fix minor issues with alif.rst (#7676) 2025-01-29 08:31:39 +01:00
Erik Tagirov
fa305054f4 feat(drm): add support for GBM buffer object to increase performance (#7464) 2025-01-29 08:16:32 +01:00
Gabriel
0f67eb67cf docs(fbdev): add information about resolution issue (#7025) 2025-01-28 11:24:22 -05:00
Paul Vogel
c3c731d241 fix(chart): avoid divide by zero (#7609) 2025-01-28 11:11:21 -05:00
Liam
1ed1ddd881 docs(Alif): add docs for Alif chip vendor (#7622) 2025-01-28 12:44:46 +01:00
Victor Wheeler
3c995e389b fix(docs): several minor doc fixes (#7652) 2025-01-28 12:43:41 +01:00
Felipe Neves
2c3b2d2c17 docs: general typo fix on the NXP related docs. (#7626)
Signed-off-by: Felipe Neves <felipe@lvgl.io>
2025-01-28 12:41:54 +01:00
Erik Tagirov
4e61b66d77 fix(cmake): installation with custom LV_CONF_PATH (#7624) 2025-01-28 12:37:07 +01:00
Fabian Blatz
7d088e2399 fix(demo): Add missing Kconfig symbols for ebike and high res
Adds the missing Kconfig symbols for ebike and high resolution demo.
2025-01-28 12:01:44 +01:00
Fabian Blatz
b6adc8fe70 chore(tests): Enable -Wunused-function
Enable -Wunused-function function flag to avoid dead code.
2025-01-28 12:01:44 +01:00
Fabian Blatz
5c11078447 feat(draw/sw): make I1 luminance threshold configurable (#7616) 2025-01-28 11:15:44 +01:00
Liam
4744bbe194 feat(drivers): add evdev discovery (#7481) 2025-01-24 04:58:52 +01:00
Victor Wheeler
b9dd8b1172 fix(fs_win32): fix inconsistency using LV_FS_WIN32_PATH... (#7608) 2025-01-23 23:05:53 -03:00
Gabor Kiss-Vamosi
0cd1f0ca39 fix(layout): always recalculate teh layout if HIDDEN changes (#7607) 2025-01-23 23:05:10 -03:00
Liam
e9505a84da docs(Riverdi): Add Riverdi board docs (#7629) 2025-01-23 23:04:30 -03:00
VIFEX
2b97e0c022 fix(draw_vector): alleviate the loss of precision in obtaining path bound (#7635)
Signed-off-by: pengyiqiang <pengyiqiang@xiaomi.com>
Co-authored-by: pengyiqiang <pengyiqiang@xiaomi.com>
2025-01-23 13:15:54 -05:00
André Costa
05a0395a1c ci: cancel previous workflow run on new commit (#7619) 2025-01-23 12:50:54 -05:00
yushuailong
d066084e29 fix(refr): lv_refr_get_top_obj not check style opa (#7643)
Signed-off-by: yushuailong1 <yushuailong1@xiaomi.com>
Co-authored-by: yushuailong1 <yushuailong1@xiaomi.com>
2025-01-23 12:31:30 -05:00
Felipe Neves
52c48cbe3f fix(vg_lite_math): initialize all variables to avoid error of uninitialized variables on some compilers. (#7628)
Signed-off-by: Felipe Neves <felipe@lvgl.io>
2025-01-23 12:26:14 -05:00
Victor Wheeler
1dd2d29ff4 feat(docs): proofread/edit obj_property.rst. (#7621) 2025-01-24 01:11:58 +08:00
Tom Hughes
c8c87d46fc chore(draw): fix unused function warning (#7611) 2025-01-23 09:29:39 +08:00
Benign X
1fff1c9932 fix(nuttx_image_cache): fix incorrect code order (#7644) 2025-01-22 12:57:32 -03:00
Liam
a10d4b8c47 docs(fs): pin diagram dependency version (#7453) 2025-01-21 18:51:31 -03:00
Felipe Neves
66a992ef3c docs: clarify what C functions are used in storage operations (#7627)
Signed-off-by: Felipe Neves <felipe@lvgl.io>
2025-01-21 16:50:02 -05:00
Felix Biego
ca869b7ef3 feat(demo): add smartwatch demo (#7429) 2025-01-21 15:34:03 -03:00
红桃六
7ab421ed30 fix(span): fix align text to center and right layout issues. (#7615)
Signed-off-by: liuhongchao <liuhongchao@xiaomi.com>
2025-01-21 17:33:26 +08:00
Kevin Schlosser
2cdcf8d729 feat(scripts/LVGLImage.py): adds RGB565 dithering support (#7582) 2025-01-20 17:31:38 -05:00
VIFEX
7f0dfc6e3f fix(vg_lite): remove pattern color fill (#7613)
Signed-off-by: pengxiaolei <pengxiaolei@xiaomi.com>
Signed-off-by: pengyiqiang <pengyiqiang@xiaomi.com>
Co-authored-by: pengxiaolei <pengxiaolei@xiaomi.com>
2025-01-20 11:19:35 +08:00
VIFEX
ddcafed9f7 perf(obj): use layer to cache the current opa stack (#7523)
Signed-off-by: pengyiqiang <pengyiqiang@xiaomi.com>
Co-authored-by: pengyiqiang <pengyiqiang@xiaomi.com>
2025-01-20 11:19:03 +08:00
Benign X
62291fa174 feat(draw): add lv_draw_letter support (#7490)
Co-authored-by: Gabor Kiss-Vamosi <kisvegabor@gmail.com>
2025-01-16 10:42:30 +08:00
cristian-stoica
9ddde9e4bc fix(nxp): allow vglite build when LV_USE_DRAW_SW is disabled (#7596) 2025-01-15 12:06:30 -03:00
Thomas Devoogdt
acb72e8491 fix(wayland): use premultiplied alpha for transparent backgrounds #7543 (#7580)
Signed-off-by: Thomas Devoogdt <thomas.devoogdt@barco.com>
2025-01-15 08:59:02 +01:00
André Costa
e028ee985c feat(anim): add a pause method (#7583) 2025-01-15 08:57:30 +01:00
Liam
124b2e268d ci: add port release updater (#7590) 2025-01-15 08:50:52 +01:00
Victor Wheeler
5f5c74c088 feat(docs): batch 14 of proofread/edited docs (#7477) 2025-01-15 08:48:25 +01:00
cristian-stoica
b1728f85b3 fix(os): add support for thread names (#7579)
Signed-off-by: Cristian Stoica <cristianmarian.stoica@nxp.com>
2025-01-15 07:31:05 +01:00
Liam
9f4df225c8 fix(menu): add missing LV_ASSERT_OBJ (#7605) 2025-01-15 07:28:27 +01:00
dependabot[bot]
6c7c336e7d chore(deps): bump JamesIves/github-pages-deploy-action from 4.7.1 to 4.7.2 (#7534)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-15 12:32:21 +08:00
dependabot[bot]
bb896adc1a chore(deps): bump carlosperate/arm-none-eabi-gcc-action from 1.9.1 to 1.10.0 (#7535)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-15 12:31:50 +08:00
jeremy-baker
7dae232b7f fix(dave2d): handle LV_COLOR_FORMAT_RGB888 correctly (#7594) 2025-01-15 12:21:08 +08:00
cristian-stoica
89c4c50c19 perf(nxp/vglite): do not recreate identity matrix at runtime (#7595)
Signed-off-by: Cristian Stoica <cristianmarian.stoica@nxp.com>
2025-01-15 12:17:54 +08:00
Ackerman
177b0bd044 fix(scroll): scrolling animation and finger dragging conflict during continuous sliding, causing flickering (#7522)
Signed-off-by: chenjinglin <chenjinglin@xiaomi.com>
2025-01-14 12:40:50 -05:00
cristian-stoica
3f13398673 fix(pxp,vglite): extend base structure to create vglite and pxp draw units (#7578)
Signed-off-by: Cristian Stoica <cristianmarian.stoica@nxp.com>
2025-01-13 10:44:08 +01:00
André Costa
62a2804d97 docs(timer): fix usage of timer user data (#7575) 2025-01-13 10:42:46 +01:00
Victor Wheeler
d9677acd93 feat(docs): add short bit about include pattern to CODING_STYLE.rst (#7563)
Co-authored-by: Gabor Kiss-Vamosi <kisvegabor@gmail.com>
2025-01-13 09:21:51 +01:00
Leonardo Cavagnis
29ce750989 docs(arduino): add Arduino Giga Display Shield reference (#7584) 2025-01-13 09:20:55 +01:00
Paul Vogel
03d0dad414 fix(label): add assignment to uninitialized variable (#7587) 2025-01-13 09:15:03 +01:00
Gabor Kiss-Vamosi
99e2734093 fix(xml): return if XMLs can't be saved (#7588) 2025-01-13 08:37:56 +08:00
Victor Wheeler
ad66f13f96 feat(docs): batch 12 of proofread/edited docs (#7440) 2025-01-10 11:06:42 -03:00
Felipe Neves
5563787cac feat(dma2d): add support for ARGB1555 color on top of RGB565 format (#7555)
Signed-off-by: Felipe Neves <felipe@lvgl.io>
2025-01-09 21:41:02 -05:00
Chishin
4e52b15508 fix(sysmon): fix heap memory overflow (#7576) 2025-01-09 21:27:59 -05:00
Gabor Kiss-Vamosi
51a3d93852 fix(scroll): handle scroll chain with snapping too (#7491) 2025-01-09 20:08:51 -05:00
Michael Simon
20bfb4855b feat(drivers): add UEFI driver (#7069) 2025-01-09 15:31:30 -03:00
Liam
f47879b67e feat(demos): High Resolution Demo Improvements (#7566) 2025-01-09 13:24:47 -03:00
bjsylvia
137a2a647c chore: fix typos in libs (#7516)
Signed-off-by: bjsylvia <bjsylvia@163.com>
2025-01-09 11:29:35 +01:00
lizhaoming
39d0d1037a docs(layer): fix layer rst function error (#7541)
Co-authored-by: lizhaoming <13678462+lizhao-ming@user.noreply.gitee.com>
2025-01-09 11:18:12 +01:00
DDcrow
692830d27c fix(widgets): fix an incorrect text replacement (#7548) 2025-01-09 11:07:35 +01:00
Niklas Fiekas
d47865afa1 fix(label): limit self size by max_height style (#7542) 2025-01-08 15:58:27 -03:00
Paul Vogel
7b3320baf4 fix(widget_chart): add assignment to uninitialized variable (#7561) 2025-01-08 15:57:47 -03:00
Gabor Kiss-Vamosi
ce1baa6aa2 fix(label): fix updating scrolling label text (#7533)
Co-authored-by: Liam <30486941+liamHowatt@users.noreply.github.com>
2025-01-08 15:57:17 -03:00
Thomas Devoogdt
53b4c6a2c2 fix(style): fix conditional jump or move depends on uninitialised value (#7571)
Signed-off-by: Thomas Devoogdt <thomas.devoogdt@barco.com>
2025-01-08 15:56:05 -03:00
Thomas Devoogdt
bccf82efa1 fix(wayland): delete the allocated display and buffers (#7572)
Signed-off-by: Thomas Devoogdt <thomas.devoogdt@barco.com>
2025-01-08 15:55:07 -03:00
Gabor Kiss-Vamosi
6a1ecfcf34 feat(xml): add support for more properties and add more examples (#7417) 2025-01-08 11:25:06 -05:00
Thomas Devoogdt
31bd7b61ba feat(libinput): map LV_KEY_{ESC} (#7544)
Signed-off-by: Thomas Devoogdt <thomas@devoogdt.com>
2025-01-07 23:07:46 -05:00
Victor Wheeler
a97ab9763e feat(docs): batch 11 of proofread/edited docs (#7361)
Co-authored-by: Gabor Kiss-Vamosi <kisvegabor@gmail.com>
Co-authored-by: Liam <30486941+liamHowatt@users.noreply.github.com>
2025-01-07 23:01:14 -05:00
Victor Wheeler
935b4016a3 fix(docs): clarify how to pass color index... (#7554) 2025-01-07 08:01:33 -05:00
Victor Wheeler
51aaf7bcde feat(docs): batch 10 of proofread/edited docs (#7357)
Co-authored-by: Liam <30486941+liamHowatt@users.noreply.github.com>
2025-01-07 12:39:19 +01:00
Victor Wheeler
1f9f5f475f fix(lv_canvas.c): fix use of uninitialized variable (#7556) 2025-01-06 22:45:58 -03:00
Victor Wheeler
2c4f722f4b feat(docs): batch 13 of proofread docs (#7458) 2025-01-06 19:38:02 -05:00
André Costa
25232d92e7 feat(dropdown): add lv_anim_enable_t parameter to lv_dropddown_set_selected (#7310) 2025-01-06 09:40:23 -05:00
xaowang
f27c65bf4a fix(draw_buf): flush D-Cache after clear buffer (#7550)
Signed-off-by: wxd <xaowang96@gmail.com>
2025-01-06 09:27:01 -03:00
Yang Gang
2b4d7b0e1c fix(circle_buff): replace a none ASCII character (#7538) 2025-01-06 02:08:16 +08:00
VIFEX
ee05029cb0 perf(vg_lite): optimize matrix and rectangle conversion (#7537) 2025-01-04 10:18:36 -03:00
VIFEX
c9872e5283 perf(refr): reduce matrix conversion (#7536) 2025-01-04 10:18:27 -03:00
Victor Wheeler
f393629c2a fix(lv_freetype): clean up includes (#7524) 2025-01-03 22:36:42 +01:00
Paul Vogel
e4aac4c67a fix(tree): add NULL check (#7526) 2025-01-03 16:17:16 +01:00
Gabor Kiss-Vamosi
29df86bef3 fix(anim): remove the redefinition of lv_anim_set_time (#7500) 2025-01-02 18:35:05 -03:00
Gabor Kiss-Vamosi
738bda27f6 chore(pr-template): add 'Fixes' to the template (#7462) 2025-01-02 18:11:24 -03:00
bjsylvia
6b8a288437 chore: fix typos in lv_draw_label.h (#7511) 2024-12-27 12:06:48 +08:00
bjsylvia
4ecca36cef chore: fix typos in lv_display.h (#7512) 2024-12-27 12:06:34 +08:00
bjsylvia
3da5eec875 chore: fix typos in lv_text.c (#7513) 2024-12-27 12:06:19 +08:00
bjsylvia
4c5fbefeb7 chore: fix typos in others (#7514)
Signed-off-by: bjsylvia <bjsylvia@163.com>
2024-12-27 12:06:05 +08:00
bjsylvia
664d41748d chore: fix typos in drivers (#7517)
Signed-off-by: bjsylvia <bjsylvia@163.com>
2024-12-27 12:05:07 +08:00
bjsylvia
9af3fc058e chore: fix typos in some header files (#7518)
Signed-off-by: bjsylvia <bjsylvia@163.com>
2024-12-27 12:04:43 +08:00
bjsylvia
741d3d59fc chore: fix typos in nema_gfx (#7519)
Signed-off-by: bjsylvia <bjsylvia@163.com>
2024-12-27 12:04:24 +08:00
bjsylvia
a356915267 chore: fix typos in core (#7510)
Signed-off-by: bjsylvia <bjsylvia@163.com>
2024-12-27 12:04:05 +08:00
VIFEX
f378299370 perf(vg_lite): improve path append data performance (#7504)
Signed-off-by: pengyiqiang <pengyiqiang@xiaomi.com>
Co-authored-by: pengyiqiang <pengyiqiang@xiaomi.com>
2024-12-24 18:48:36 +08:00
lizhaoming
bd39f984b8 fix(roller): Adjust the position of the lv_roller_set_str function in lv_roller. c and lv_roller. h (#7506) 2024-12-23 17:53:21 -03:00
Benign X
517b307ae3 perf(bin_decoder): improve the decoding performance of a8 (#7494) 2024-12-23 17:50:26 -03:00
bjsylvia
0223869773 chore(tests): assert array size with LV_ARRAY_DEFAULT_CAPACITY (#7497) 2024-12-23 17:48:28 -03:00
Liu Yi
cdaaeb81dc docs(label): add documentation and example for text recolor (#7460)
Signed-off-by: lhdjply <lhdjply@126.com>
Co-authored-by: Liam <30486941+liamHowatt@users.noreply.github.com>
Co-authored-by: Victor Wheeler <vwheeler63@users.noreply.github.com>
2024-12-22 20:26:10 +01:00
Liam
36a6d173fc feat(demos): add high resolution demo (#7308)
Co-authored-by: Gabor Kiss-Vamosi <kisvegabor@gmail.com>
2024-12-22 11:57:46 +01:00
Neo Xu
f5b00f5ad8 feat(animimage): add property support
Signed-off-by: Neo Xu <neo.xu1990@gmail.com>
2024-12-22 11:52:51 +01:00
Neo Xu
4eacf15f59 feat(slider): add property interface
Signed-off-by: Neo Xu <neo.xu1990@gmail.com>
2024-12-22 11:52:51 +01:00
Neo Xu
133b6fc3f8 feat(property): support second value in property
Signed-off-by: Neo Xu <neo.xu1990@gmail.com>
2024-12-22 11:52:51 +01:00
Neo Xu
2d8ff35bfb chore(anim): define anim on/off as true/false
Signed-off-by: Neo Xu <neo.xu1990@gmail.com>
2024-12-22 11:52:51 +01:00
Allen
17b76773a3 fix(font): fix get glyph id bug. (#7404)
Co-authored-by: azh <anzhaohui@gurobot.com>
Co-authored-by: Gabor Kiss-Vamosi <kisvegabor@gmail.com>
2024-12-22 11:20:05 +01:00
RomanLuchyshyn
27ebfc20ad feat(draw/sw): added support for 3 bpp font rendering (#7350)
Co-authored-by: Gabor Kiss-Vamosi <kisvegabor@gmail.com>
2024-12-20 07:50:01 -05:00
Kevin Schlosser
3146313e44 feat(gen_json): adds option to gen_json to build without docstrings (#7471) 2024-12-20 07:31:53 -05:00
Benign X
251c1b02f3 fix(ap): fix ap unicode 0622+0644 (#7482) 2024-12-20 14:40:14 +08:00
bjsylvia
0756895382 docs(intro): fix typos (#7485)
Signed-off-by: bjsylvia <bjsylvia@163.com>
2024-12-20 11:06:56 +08:00
bjsylvia
a903fc3d75 docs(details): fix typos (#7484)
Signed-off-by: bjsylvia <bjsylvia@163.com>
2024-12-20 11:06:28 +08:00
bjsylvia
019bfa4415 chore(demos): fix spelling error in demos (#7479)
Signed-off-by: bjsylvia <bjsylvia@163.com>
2024-12-20 11:05:57 +08:00
bjsylvia
83ebd439fa fix(sysmon): fix crash when enable LV_USE_PERF_MONITOR and nuttx backend (#7483)
Signed-off-by: bjsylvia <bjsylvia@163.com>
2024-12-20 11:04:59 +08:00
Victor Wheeler
abb60a4ec6 feat(docs): make docs development practical (#7414) 2024-12-19 13:47:46 -05:00
VIFEX
d607ce5f6a fix(event): remove preprocess flag when get name (#7468) 2024-12-18 18:52:53 -03:00
VIFEX
2d62571c66 perf(vg_lite): improve path data conversion performance (#7470) 2024-12-18 18:51:55 -03:00
Carlos Diaz
fcbcdf823d fix(table): mark clicks as 'Invalid' when clicking on empty spaces (#7153) 2024-12-18 11:31:38 +01:00
M1NG
bdb4d944de feat(osal): add SDL2 based threading and OS support (#7457)
Co-authored-by: ming <sungod@cheemer.org>
2024-12-18 11:04:18 +01:00
Liam
bb54fc50c2 fix(examples): fix infinite scroll crash (#7459) 2024-12-18 09:28:18 +01:00
Victor Wheeler
64e01e5248 feat(anim): clarify reverse play in animation API (#7338) 2024-12-18 07:43:00 +01:00
Paul Vogel
e1f2b2e451 fix(draw_sw_img): avoid divide by zero (#7447) 2024-12-17 22:08:23 -03:00
Benign X
cd9c7e5b6b fix(vg_lite): fix path memory reallocation error (#7466) 2024-12-17 19:58:01 +08:00
VIFEX
6decbb7f77 chore(indev_gesture): add missing config and fix warning (#7461)
Signed-off-by: pengyiqiang <pengyiqiang@xiaomi.com>
Co-authored-by: pengyiqiang <pengyiqiang@xiaomi.com>
2024-12-16 20:03:17 +08:00
Fabian Blatz
33fc3175a0 fix(dma2d): Add return value to DMA2d conversion functions (#7456) 2024-12-16 13:01:22 +01:00
Attila Kiss
a7adce9d1a feat(draw): add layer memory allocation config support (#7038)
Co-authored-by: Gabor Kiss-Vamosi <kisvegabor@gmail.com>
Co-authored-by: liamHowatt <liamjmh0@gmail.com>
Co-authored-by: Liam <30486941+liamHowatt@users.noreply.github.com>
2024-12-16 08:51:01 +01:00
Paul Vogel
c022f0896a fix(draw_sw_arc): add ASSERT_MALLOC check (#7448) 2024-12-12 12:27:52 +01:00
Paul Vogel
915f9b88dc fix(draw_rect): refactor to insure header is initialized (#7446) 2024-12-12 12:10:24 +01:00
Paul Vogel
f284920b93 fix(draw_sw_triangle): add null check (#7449) 2024-12-12 12:03:21 +01:00
VIFEX
fdeb63fa2e fix(vg_lite): remove unnecessary grad image checks (#7443)
Signed-off-by: pengyiqiang <pengyiqiang@xiaomi.com>
Co-authored-by: pengyiqiang <pengyiqiang@xiaomi.com>
2024-12-11 12:00:09 -03:00
VIFEX
85402e806f fix(vg_lite): fix corner case of bar drawing (#7441)
Signed-off-by: pengyiqiang <pengyiqiang@xiaomi.com>
Co-authored-by: pengyiqiang <pengyiqiang@xiaomi.com>
2024-12-11 20:27:55 +08:00
Liam
d79fc5896c fix(osal/pthread): add missing pthread_attr_destroy call (#7434) 2024-12-10 16:42:15 -03:00
Ioannis Markopoulos
e53ada9605 feat(NemaGFX): add freetype vector font support (#7346) 2024-12-10 15:23:06 +01:00
VIFEX
2209e3a270 docs(profiler): remove tick unit (#7433)
Signed-off-by: pengyiqiang <pengyiqiang@xiaomi.com>
Co-authored-by: pengyiqiang <pengyiqiang@xiaomi.com>
2024-12-10 10:54:17 +01:00
VIFEX
99a785cdc6 feat(refr): improve performance measurement (#7430)
Signed-off-by: pengyiqiang <pengyiqiang@xiaomi.com>
Co-authored-by: pengyiqiang <pengyiqiang@xiaomi.com>
2024-12-10 16:29:22 +08:00
Fabian Blatz
c1b32017d4 feat(display): add draw buffer size getter (#7332) 2024-12-10 11:42:55 +08:00
Victor Wheeler
c9d35e1038 feat(docs): proofread/edit batch 9 (#7324)
Co-authored-by: Gabor Kiss-Vamosi <kisvegabor@gmail.com>
2024-12-09 09:43:20 +01:00
Victor Wheeler
7ecf7c2e52 feat(docs): widget proofread wrap-up (#7405)
Co-authored-by: Liam <30486941+liamHowatt@users.noreply.github.com>
2024-12-08 23:13:21 +01:00
VIFEX
39c3e23e06 perf(os): optimize OS API calls without OS mode (#7420)
Signed-off-by: pengyiqiang <pengyiqiang@xiaomi.com>
Co-authored-by: pengyiqiang <pengyiqiang@xiaomi.com>
2024-12-08 23:12:23 +01:00
VIFEX
4f2fd4b549 fix(vg_lite): fix stroke crash when update failed (#7399)
Signed-off-by: pengyiqiang <pengyiqiang@xiaomi.com>
Co-authored-by: pengyiqiang <pengyiqiang@xiaomi.com>
2024-12-07 00:04:30 +08:00
Victor Wheeler
65a52f2f2d feat(docs): update threading details in answer to #7313 (#7342) 2024-12-06 11:43:44 +01:00
VIFEX
58990cdb5b feat(profiler_builtin): support nanosecond accuracy (#7415)
Signed-off-by: pengyiqiang <pengyiqiang@xiaomi.com>
Co-authored-by: pengyiqiang <pengyiqiang@xiaomi.com>
2024-12-06 09:41:15 +08:00
Victor Wheeler
945064f6ea fix(docs): adjust colors to address accessibility issues (#7409) 2024-12-05 14:20:50 +01:00
Gabor Kiss-Vamosi
fc5939dcff feat(xml): add the basics of declarative XML support 2024-12-05 10:14:39 +01:00
Gabor Kiss-Vamosi
db11e7bae5 fix(label): use LV_LABEL_LONG_MODE_* instead of LV_LABEL_LONG_* 2024-12-05 10:14:39 +01:00
Gabor Kiss-Vamosi
f23b42be7f feat(slider): add orientation support (based on bar) 2024-12-05 10:14:39 +01:00
1809 changed files with 798392 additions and 15583 deletions

View File

@@ -1,4 +1,6 @@
A clear and concise description of what the bug or new feature is.
Fixes #xxxx <!-- E.g. Fixes #1234 to reference the fixed issue. Can be removed if there is no related issue -->
<!-- A clear and concise description of what the bug or new feature is.-->
### Notes
- Update the [Documentation](https://github.com/lvgl/lvgl/tree/master/docs) if needed.

View File

@@ -4,10 +4,17 @@ on:
branches: [ master, release/v8.* ]
pull_request:
branches: [ master, release/v8.* ]
# https://docs.github.com/en/actions/writing-workflows/workflow-syntax-for-github-actions#concurrency
# Ensure that only one commit will be running tests at a time on each PR
concurrency:
group: ${{ github.ref }}-${{ github.workflow }}
cancel-in-progress: true
jobs:
lint:
if: ${{ github.event_name != 'pull_request' || github.repository != github.event.pull_request.head.repo.full_name }}
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- uses: arduino/arduino-lint-action@v2

View File

@@ -4,17 +4,26 @@ on:
push:
pull_request:
# https://docs.github.com/en/actions/writing-workflows/workflow-syntax-for-github-actions#concurrency
# Ensure that only one commit will be running tests at a time on each PR
concurrency:
group: ${{ github.ref }}-${{ github.workflow }}
cancel-in-progress: true
jobs:
build:
if: ${{ github.event_name != 'pull_request' || github.repository != github.event.pull_request.head.repo.full_name }}
name: Build ${{ matrix.port }} port
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
continue-on-error: true
strategy:
matrix:
port: ['unix', 'esp32', 'stm32', 'rp2']
port: ['unix', 'stm32', 'rp2']
steps:
- uses: ammaraskar/gcc-problem-matcher@master
- uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Install Dependencies
run: |
sudo add-apt-repository -y "deb http://archive.ubuntu.com/ubuntu `lsb_release -sc` main universe restricted multiverse"
@@ -28,7 +37,7 @@ jobs:
- name: Initialize lv_bindings submodule
run: git submodule update --init --recursive lib/lv_bindings
- name: Update ${{ matrix.port }} port submodules
if: matrix.port != 'esp32' && matrix.port != 'rp2'
if: matrix.port != 'rp2'
run: make -C ports/${{ matrix.port }} DEBUG=1 USER_C_MODULES=../../lib/lv_bindings/bindings.cmake submodules
- name: Checkout LVGL submodule
working-directory: ./lib/lv_bindings/lvgl
@@ -40,20 +49,10 @@ jobs:
- name: Build mpy-cross
run: make -j $(nproc) -C mpy-cross
# ESP32 port
- name: Setup ESP-IDF
if: matrix.port == 'esp32'
run: |
source tools/ci.sh && ci_esp32_idf44_setup
- name: Build ESP32 port
if: matrix.port == 'esp32'
run: |
source tools/ci.sh && ci_esp32_build
# STM32 & RPi Pico port
- name: arm-none-eabi-gcc
if: matrix.port == 'stm32' || matrix.port == 'rp2'
uses: carlosperate/arm-none-eabi-gcc-action@v1.9.1
uses: carlosperate/arm-none-eabi-gcc-action@v1.10.0
with:
release: '9-2019-q4' # The arm-none-eabi-gcc release to use.
- name: Build STM32 port
@@ -83,3 +82,48 @@ jobs:
with:
name: test-artifacts
path: lib/lv_bindings/lvgl/tests/micropy_test/artifacts
build-esp32:
runs-on: ubuntu-22.04
name: Build esp32 port
continue-on-error: true
steps:
- uses: ammaraskar/gcc-problem-matcher@master
- name: Install Dependencies
run: |
sudo add-apt-repository -y "deb http://archive.ubuntu.com/ubuntu `lsb_release -sc` main universe restricted multiverse"
sudo apt-get update -y -qq
sudo apt-get install libsdl2-dev parallel libfreetype-dev librlottie-dev libavformat-dev libavcodec-dev libswscale-dev libavutil-dev doxygen
python3 -m pip install pycparser
- name: Clone lv_micropython
run: |
git clone https://github.com/lvgl/lv_micropython.git .
git checkout master
- name: Initialize lv_bindings submodule
run: git submodule update --init --recursive lib/lv_bindings
- name: Update ${{ matrix.port }} port submodules
run: make -C ports/esp32 DEBUG=1 USER_C_MODULES=../../lib/lv_bindings/bindings.cmake submodules
- name: Checkout LVGL submodule
working-directory: ./lib/lv_bindings/lvgl
run: |
git fetch --force ${{ github.event.repository.html_url }} "+refs/heads/*:refs/remotes/origin/*"
git fetch --force ${{ github.event.repository.html_url }} "+refs/pull/*:refs/remotes/origin/pr/*"
git checkout ${{ github.sha }} || git checkout ${{ github.event.pull_request.head.sha }}
git submodule update --init --recursive
- name: Build mpy-cross
run: make -j $(nproc) -C mpy-cross
- name: Setup ESP-IDF
run: |
source tools/ci.sh && ci_esp32_idf44_setup
- name: Build ESP32 port
run: |
source tools/ci.sh && ci_esp32_build
- name: Install requirements for the test
run: |
python3 -m pip install pillow
mkdir lib/lv_bindings/lvgl/tests/micropy_test/artifacts
- name: Upload Artifacts
uses: actions/upload-artifact@v4
with:
name: test-artifacts
path: lib/lv_bindings/lvgl/tests/micropy_test/artifacts

View File

@@ -6,64 +6,88 @@ on:
pull_request:
branches: [ master, release/v8.* ]
# https://docs.github.com/en/actions/writing-workflows/workflow-syntax-for-github-actions#concurrency
# Ensure that only one commit will be running tests at a time on each PR
concurrency:
group: ${{ github.ref }}-${{ github.workflow }}
cancel-in-progress: true
jobs:
build:
build-ubuntu:
if: ${{ github.event_name != 'pull_request' || github.repository != github.event.pull_request.head.repo.full_name }}
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
strategy:
fail-fast: false
matrix:
# A valid option parameter to the cmake file.
# See BUILD_OPTIONS in tests/CMakeLists.txt.
build_option: ['OPTIONS_NORMAL_8BIT',
'OPTIONS_16BIT',
'OPTIONS_24BIT',
'OPTIONS_FULL_32BIT',
'OPTIONS_VG_LITE',
'OPTIONS_SDL']
name: Build ${{ matrix.build_option }} - Ubuntu
steps:
- uses: actions/checkout@v4
- uses: ammaraskar/gcc-problem-matcher@master
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Install prerequisites
run: scripts/install-prerequisites.sh
- name: Install pngquant
run: scripts/install_pngquant.sh
- name: Building ${{ matrix.build_option }}
run: python tests/main.py --build-option=${{ matrix.build_option }} build --auto-clean
build-windows:
strategy:
fail-fast: false
matrix:
# A valid option parameter to the cmake file.
# See BUILD_OPTIONS in tests/CMakeLists.txt.
build_option: ['OPTIONS_16BIT',
'OPTIONS_24BIT',
'OPTIONS_FULL_32BIT',
'OPTIONS_VG_LITE',
'OPTIONS_SDL']
name: Build ${{ matrix.build_option }}
steps:
- uses: actions/checkout@v4
- uses: ammaraskar/gcc-problem-matcher@master
- name: Install prerequisites
run: scripts/install-prerequisites.sh
- name: Building ${{ matrix.build_option }}
run: python tests/main.py --build-option=${{ matrix.build_option }} build
'OPTIONS_VG_LITE']
compiler: [gcc, cl]
build-windows-GCC:
name: Build ${{ matrix.build_option }} - ${{matrix.compiler }} - Windows
runs-on: windows-2022
name: Build Windows GCC
steps:
- uses: actions/checkout@v4
- uses: ammaraskar/gcc-problem-matcher@master
- name: Install prerequisites
run: scripts\install-prerequisites.bat
- name: Build
run: python tests/main.py build
env:
CC: gcc
build-windows-MSVC:
runs-on: windows-2022
name: Build Windows MSVC
steps:
- uses: actions/checkout@v4
- name: Install prerequisites
run: scripts\install-prerequisites.bat
- uses: ilammy/msvc-dev-cmd@v1
- if: matrix.compiler == 'gcc'
uses: ammaraskar/gcc-problem-matcher@master
- if: matrix.compiler == 'cl'
uses: ilammy/msvc-dev-cmd@v1
with:
arch: x64
- uses: ruby/setup-ruby@v1
- if: matrix.compiler == 'cl'
uses: ruby/setup-ruby@v1
with:
ruby-version: 'mswin'
- name: Build
run: python tests/main.py build
run: python tests/main.py --build-option=${{ matrix.build_option }} build
env:
CC: cl
CC: ${{ matrix.compiler }}
build-esp32s3:
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
name: Build ESP IDF ESP32S3
container: espressif/idf:v5.3.1
steps:
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Clone LVGL as a Component
uses: actions/checkout@v4
with:
@@ -76,7 +100,7 @@ jobs:
run: . /opt/esp/idf/export.sh && idf.py build
test-native:
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
strategy:
matrix:
# A valid option parameter to the cmake file.
@@ -87,8 +111,14 @@ jobs:
steps:
- uses: actions/checkout@v4
- uses: ammaraskar/gcc-problem-matcher@master
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Install prerequisites
run: scripts/install-prerequisites.sh
- name: Install pngquant
run: scripts/install_pngquant.sh
- name: Fix kernel mmap rnd bits
# Asan in llvm 14 provided in ubuntu 22.04 is incompatible with
# high-entropy ASLR in much newer kernels that GitHub runners are
@@ -98,7 +128,7 @@ jobs:
if: matrix.build_config == '32bit build'
run: echo "NON_AMD64_BUILD=1" >> $GITHUB_ENV
- name: Run tests
run: python tests/main.py --report --update-image test
run: python tests/main.py --report --update-image test --auto-clean
- name: Archive screenshot errors
if: failure()
uses: actions/upload-artifact@v4

View File

@@ -4,10 +4,16 @@ on:
push:
pull_request:
# https://docs.github.com/en/actions/writing-workflows/workflow-syntax-for-github-actions#concurrency
# Ensure that only one commit will be running tests at a time on each PR
concurrency:
group: ${{ github.ref }}-${{ github.workflow }}
cancel-in-progress: true
jobs:
bom-check:
if: ${{ github.event_name != 'pull_request' || github.repository != github.event.pull_request.head.repo.full_name }}
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
steps:
- name: Checkout
uses: actions/checkout@v4

View File

@@ -3,10 +3,16 @@ on:
push:
pull_request:
# https://docs.github.com/en/actions/writing-workflows/workflow-syntax-for-github-actions#concurrency
# Ensure that only one commit will be running tests at a time on each PR
concurrency:
group: ${{ github.ref }}-${{ github.workflow }}
cancel-in-progress: true
jobs:
verify-conf-internal:
if: ${{ github.event_name != 'pull_request' || github.repository != github.event.pull_request.head.repo.full_name }}
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
steps:
- name: Checkout
uses: actions/checkout@v4
@@ -16,7 +22,7 @@ jobs:
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: 3.7
python-version: 3.12
- name: Generate lv_conf_internal.h
run: python lv_conf_internal_gen.py
working-directory: scripts

View File

@@ -2,11 +2,17 @@ name: Verify the widget property name
on:
push:
pull_request:
# https://docs.github.com/en/actions/writing-workflows/workflow-syntax-for-github-actions#concurrency
# Ensure that only one commit will be running tests at a time on each PR
concurrency:
group: ${{ github.ref }}-${{ github.workflow }}
cancel-in-progress: true
jobs:
verify-property-name:
if: ${{ github.event_name != 'pull_request' || github.repository != github.event.pull_request.head.repo.full_name }}
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
steps:
- name: Checkout
uses: actions/checkout@v4

View File

@@ -2,11 +2,17 @@ name: Verify code formatting
on:
push:
pull_request:
# https://docs.github.com/en/actions/writing-workflows/workflow-syntax-for-github-actions#concurrency
# Ensure that only one commit will be running tests at a time on each PR
concurrency:
group: ${{ github.ref }}-${{ github.workflow }}
cancel-in-progress: true
jobs:
verify-formatting:
if: ${{ github.event_name != 'pull_request' || github.repository != github.event.pull_request.head.repo.full_name }}
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
steps:
- name: Checkout
uses: actions/checkout@v4

View File

@@ -7,7 +7,7 @@ on:
jobs:
stale:
if: github.repository == 'lvgl/lvgl'
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
steps:
- uses: actions/stale@v9
with:

View File

@@ -4,13 +4,20 @@ on:
branches:
- master
- 'release/*'
# https://docs.github.com/en/actions/writing-workflows/workflow-syntax-for-github-actions#concurrency
# Ensure that only one commit will be running tests at a time on each PR
concurrency:
group: ${{ github.ref }}-${{ github.workflow }}
cancel-in-progress: true
env:
EM_VERSION: 2.0.4
EM_CACHE_FOLDER: 'emsdk-cache'
jobs:
build-and-deploy:
if: github.repository == 'lvgl/lvgl'
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
concurrency: docs-build-and-deploy
steps:
- name: Checkout
@@ -21,7 +28,7 @@ jobs:
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: '3.10'
python-version: '3.12'
- name: Cache Python packages
uses: actions/cache@v4
with:
@@ -57,32 +64,32 @@ jobs:
- name: Build examples (with cache)
run: scripts/build_html_examples.sh
- name: Build docs
run: docs/build.py skip_latex
run: docs/build.py html
- name: Remove .doctrees
run: rm -rf out_html/.doctrees
run: rm -rf docs/build/html/.doctrees
- name: Retrieve version
run: |
echo "::set-output name=VERSION_NAME::$(scripts/find_version.sh)"
id: version
- name: Deploy to subfolder
uses: JamesIves/github-pages-deploy-action@v4.7.1
uses: JamesIves/github-pages-deploy-action@v4.7.3
with:
token: ${{ secrets.LVGL_BOT_TOKEN }}
repository-name: lvgl/docs
branch: gh-pages # The branch the action should deploy to.
folder: out_html # The folder the action should deploy.
folder: docs/build/html # The folder the action should deploy.
target-folder: ${{ steps.version.outputs.VERSION_NAME }}
git-config-name: lvgl-bot
git-config-email: lvgl-bot@users.noreply.github.com
single-commit: true
- name: Deploy to master
if: github.ref == 'refs/heads/master'
uses: JamesIves/github-pages-deploy-action@v4.7.1
uses: JamesIves/github-pages-deploy-action@v4.7.3
with:
token: ${{ secrets.LVGL_BOT_TOKEN }}
repository-name: lvgl/docs
branch: gh-pages # The branch the action should deploy to.
folder: out_html # The folder the action should deploy.
folder: docs/build/html # The folder the action should deploy.
target-folder: master
git-config-name: lvgl-bot
git-config-email: lvgl-bot@users.noreply.github.com

View File

@@ -8,14 +8,14 @@ on:
jobs:
upload_components:
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
with:
submodules: "recursive"
- name: Upload component to component registry
uses: espressif/upload-components-ci-action@v1
uses: espressif/upload-components-ci-action@v2
with:
name: "lvgl"
version: ${{ github.ref_name }}

View File

@@ -3,10 +3,16 @@ on:
push:
pull_request:
# https://docs.github.com/en/actions/writing-workflows/workflow-syntax-for-github-actions#concurrency
# Ensure that only one commit will be running tests at a time on each PR
concurrency:
group: ${{ github.ref }}-${{ github.workflow }}
cancel-in-progress: true
jobs:
test_api_json:
if: github.repository == 'lvgl/lvgl'
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
name: Test API JSON
steps:
- uses: actions/checkout@v4
@@ -14,7 +20,7 @@ jobs:
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: '3.10'
python-version: '3.12'
- name: Install Doxygen and Latex dependencies
run: |

View File

@@ -4,7 +4,7 @@ on:
jobs:
auto_close_issues:
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
steps:
- name: Checkout
uses: actions/checkout@v4

View File

@@ -6,14 +6,24 @@ on:
pull_request:
branches: [ master, release/v8.* ]
# https://docs.github.com/en/actions/writing-workflows/workflow-syntax-for-github-actions#concurrency
# Ensure that only one commit will be running tests at a time on each push
concurrency:
group: ${{ github.ref }}-${{ github.workflow }}
cancel-in-progress: true
jobs:
build:
if: ${{ github.event_name != 'pull_request' || github.repository != github.event.pull_request.head.repo.full_name }}
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
name: Build using Makefile
steps:
- uses: actions/checkout@v4
- uses: ammaraskar/gcc-problem-matcher@master
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Install prerequisites
run: scripts/install-prerequisites.sh
- name: Build

View File

@@ -6,14 +6,24 @@ on:
pull_request:
branches: [ master ]
# https://docs.github.com/en/actions/writing-workflows/workflow-syntax-for-github-actions#concurrency
# Ensure that only one commit will be running tests at a time on each push
concurrency:
group: ${{ github.ref }}-${{ github.workflow }}
cancel-in-progress: true
jobs:
build:
if: ${{ github.event_name != 'pull_request' || github.repository != github.event.pull_request.head.repo.full_name }}
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
name: Build using Makefile for UEFI
steps:
- uses: actions/checkout@v4
- uses: ammaraskar/gcc-problem-matcher@master
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Install prerequisites
run: scripts/install-prerequisites.sh
- name: Install clang

View File

@@ -6,14 +6,14 @@ on:
name: PlatformIO Publish
jobs:
build:
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Install Python
uses: actions/setup-python@v5
with:
python-version: '3.9'
python-version: '3.12'
- name: Install PlatformIO Core
run: pip install --upgrade platformio
- name: Switch to the development version

View File

@@ -9,7 +9,7 @@ name: Create Release
jobs:
build:
name: Create Release
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
steps:
- name: Checkout code
uses: actions/checkout@v4

View File

@@ -0,0 +1,34 @@
name: Port repo release update
on:
push:
branches:
- master
- 'release/v*' # on release branches
workflow_dispatch: # allow manual triggering
# https://docs.github.com/en/actions/writing-workflows/workflow-syntax-for-github-actions#concurrency
# Ensure that only one commit will be running tests at a time on each push
concurrency:
group: ${{ github.workflow }}
cancel-in-progress: true
jobs:
run-release-branch-updater:
if: github.repository == 'lvgl/lvgl'
runs-on: ubuntu-24.04
steps:
- name: Checkout LVGL
uses: actions/checkout@v4
with:
path: lvgl
fetch-depth: 0 # fetch all
- name: set git credentials
run: |
git config --global user.name 'lvgl-bot'
git config --global user.email 'lvgl-bot@users.noreply.github.com'
- name: run the script
run: python3 lvgl/scripts/release_branch_updater.py --oldest-major 9

View File

@@ -3,10 +3,16 @@ on:
push:
pull_request:
# https://docs.github.com/en/actions/writing-workflows/workflow-syntax-for-github-actions#concurrency
# Ensure that only one commit will be running tests at a time on each push
concurrency:
group: ${{ github.ref }}-${{ github.workflow }}
cancel-in-progress: true
jobs:
verify-kconfig:
if: ${{ github.event_name != 'pull_request' || github.repository != github.event.pull_request.head.repo.full_name }}
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
steps:
- name: Checkout
uses: actions/checkout@v4
@@ -16,7 +22,7 @@ jobs:
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: 3.7
python-version: 3.12
- name: Check for leading spaces in Kconfig
working-directory: .
run: |

11
.gitignore vendored
View File

@@ -5,19 +5,8 @@
**/*.gcda
**/*.gcno
tags
docs/api_doc
scripts/cppcheck_res.txt
scripts/built_in_font/lv_font_*
docs/doxygen_html
docs/xml
docs/examples.md
docs/out_latex
docs/_static/built_lv_examples
docs/LVGL.pdf
docs/env
/docs/examples.rst
/docs/API/
out_html
__pycache__
/emscripten_builder
test_screenshot_error.h

View File

@@ -26,6 +26,7 @@ repos:
)
exclude: |
(?x)^(
demos/high_res/fonts/ |
src/libs/ |
src/lv_conf_internal.h |
tests/test_images

54
COPYRIGHTS.md Normal file
View File

@@ -0,0 +1,54 @@
LVGL uses the following third-party libraries.
For the licenses, see the corresponding `LICENSE.txt` file in each librarys folder.
**Barcode (Barcode generator)**
- Path: src/libs/barcode
- Source: https://github.com/fhunleth/code128
**Expat (XML parser)**
- Path: src/libs/expat
- Source: https://github.com/libexpat/libexpat
**FreeType (Font rendering library)**
- Path: src/libs/freetype
- Source: https://github.com/freetype/freetype
- Note: Only the interfaces are used; FreeType itself is not part of LVGL.
**GifDec (GIF decoder library)**
- Path: src/libs/gifdec
- Source: https://github.com/lecram/gifdec
**LodePNG (PNG decoder)**
- Path: src/libs/lodepng
- Source: https://github.com/lvandeve/lodepng
**LZ4 (Compression/Decompression)**
- Path: src/libs/lz4
- Source: https://github.com/lz4/lz4
**QR Code (QR code generator)**
- Path: src/libs/qrcode
- Source: https://github.com/nayuki/QR-Code-generator
**ThorVG (Vector graphics rendering)**
- Path: src/libs/thorvg
- Source: https://github.com/thorvg/thorvg
**TinyTTF**
- Path: src/libs/tiny_ttf
- Source:
- https://github.com/nothings/stb (*Only parts are integrated*)
- https://github.com/codewitch-honey-crisis/tiny_ttf (*Modified version of the original STB library*)
**TJPGD (JPEG decoder)**
- Path: src/libs/tjpgd
- Source: http://elm-chan.org/fsw/tjpgd/00index.html
**TLSF (Two-Level Segregate Fit memory allocator)**
- Path: src/stdlib/builtin
- Source: https://github.com/mattconte/tlsf
**Printf (Printf formatting library)**
- Path: src/stdlib/builtin
- Source: https://github.com/mpaland/printf

94
Kconfig
View File

@@ -202,6 +202,15 @@ menu "LVGL configuration"
it is buffered into a "simple" layer before rendering. The widget can be buffered in smaller chunks.
"Transformed layers" (if `transform_angle/zoom` are set) use larger buffers and can't be drawn in chunks.
config LV_DRAW_LAYER_MAX_MEMORY
int "The maximum amount of memory that can be used for layers"
default 0
help
Limit the max allocated memory for simple and transformed layers.
It should be at least `LV_DRAW_LAYER_SIMPLE_BUF_SIZE` sized but if transformed layers are also used
it should be enough to store the largest widget too (width x height x 4 area).
Set it to 0 to have no limit.
config LV_DRAW_THREAD_STACK_SIZE
int "Stack size of draw thread in bytes"
default 8192
@@ -260,6 +269,12 @@ menu "LVGL configuration"
default y
depends on LV_USE_DRAW_SW
config LV_DRAW_SW_I1_LUM_THRESHOLD
int "Luminance threshold for a pixel to be active"
default 127
range 0 254
depends on LV_DRAW_SW_SUPPORT_I1
config LV_DRAW_SW_DRAW_UNIT_CNT
int "Number of draw units"
default 1
@@ -394,6 +409,26 @@ menu "LVGL configuration"
config LV_USE_PXP_ASSERT
bool "Enable PXP asserts"
depends on LV_USE_DRAW_PXP
config LV_USE_DRAW_G2D
bool "Use NXP's G2D on MPU platforms"
default n
config LV_G2D_HASH_TABLE_SIZE
bool "Maximum number of buffers that can be stored for G2D draw unit."
default 50
depends on LV_USE_DRAW_G2D
help
Includes the frame buffers and assets.
config LV_USE_G2D_DRAW_THREAD
bool "Use additional draw thread for G2D processing"
depends on LV_USE_DRAW_G2D && LV_USE_OS > 0
default y
config LV_USE_G2D_ASSERT
bool "Enable G2D asserts"
depends on LV_USE_DRAW_G2D
default n
config LV_USE_DRAW_DAVE2D
@@ -681,6 +716,10 @@ menu "LVGL configuration"
bool "Add id field to obj"
default n
config LV_USE_OBJ_NAME
bool "Enable support widget names"
default n
config LV_OBJ_ID_AUTO_ASSIGN
bool "Automatically assign an ID when obj is created"
default y
@@ -741,6 +780,11 @@ menu "LVGL configuration"
bool "Enable multi-thread render"
default n
depends on LV_USE_VG_LITE_THORVG
config LV_USE_GESTURE_RECOGNITION
bool "Enable the multi-touch gesture recognition feature"
depends on LV_USE_FLOAT
default n
endmenu
endmenu
@@ -1186,7 +1230,7 @@ menu "LVGL configuration"
endmenu
menu "3rd Party Libraries"
config LV_FS_DEFAULT_DRIVE_LETTER
config LV_FS_DEFAULT_DRIVER_LETTER
int "Default drive letter (e.g. 65 for 'A')"
default 0
help
@@ -1285,6 +1329,13 @@ menu "LVGL configuration"
string "Set the working directory"
depends on LV_USE_FS_ARDUINO_SD
config LV_USE_FS_UEFI
bool "File system on top of the UEFI EFI_SIMPLE_FILE_SYSTEM_PROTOCOL"
config LV_USE_FS_UEFI_LETTER
int "Set an upper cased letter on which the drive will accessible (e.g. 65 for 'A')"
default 0
depends on LV_USE_FS_UEFI
config LV_USE_LODEPNG
bool "PNG decoder library"
@@ -1390,7 +1441,7 @@ menu "LVGL configuration"
default n
help
You won't be able to open URLs after enabling this feature.
Note that FFmpeg image decoder will always use lvgl file system.
Note that FFmpeg image decoder will always use lvgl file system.
endmenu
menu "Others"
@@ -1522,6 +1573,10 @@ menu "LVGL configuration"
bool "Enable cache profiler"
default y
config LV_PROFILER_EVENT
bool "Enable event profiler"
default y
endif # LV_USE_PROFILER
config LV_USE_MONKEY
@@ -1591,7 +1646,13 @@ menu "LVGL configuration"
int "Font manager name max length"
depends on LV_USE_FONT_MANAGER
default 32
config LV_USE_TEST
bool "Enable emulated input devices, time emulation, and screenshot compares."
config LV_USE_TEST_SCREENSHOT_COMPARE
bool "Enable `lv_test_screenshot_compare`. Requires libpng and a few MB of extra RAM."
depends on LV_USE_TEST
config LV_USE_XML
bool "Enable loading XML UIs runtime"
config LVGL_VERSION_MAJOR
int
default 9 # LVGL_VERSION_MAJOR
@@ -1800,9 +1861,14 @@ menu "LVGL configuration"
depends on LV_USE_NUTTX
default n
config LV_NUTTX_DEFAULT_DRAW_BUF_USE_INDEPENDENT_IMAGE_HEAP
bool "Use independent image heap for default draw buffer"
depends on LV_USE_NUTTX_INDEPENDENT_IMAGE_HEAP
default n
config LV_USE_NUTTX_LIBUV
bool "Use uv loop to replace default timer loop and other fb/indev timers"
depends on LV_USE_NUTTX
depends on LV_USE_NUTTX && LIBUV
default n
config LV_USE_NUTTX_CUSTOM_INIT
@@ -1919,6 +1985,20 @@ menu "LVGL configuration"
depends on LV_OS_WINDOWS
default n
config LV_USE_UEFI
bool "Use LVGL UEFI backend"
default n
config LV_USE_UEFI_INCLUDE
string "Header that hides the actual framework (EDK2, gnu-efi, ...)"
depends on LV_USE_UEFI
default "myefi.h"
config LV_UEFI_USE_MEMORY_SERVICES
bool "Use the memory services from the boot services table"
depends on LV_USE_UEFI
default n
config LV_USE_OPENGLES
bool "Use GLFW and OpenGL to open window on PC and handle mouse and keyboard"
default n
@@ -2012,6 +2092,12 @@ menu "LVGL configuration"
bool "vector graphic demo"
default n
depends on LV_USE_VECTOR_GRAPHIC
config LV_USE_DEMO_SMARTWATCH
bool "Smartwatch demo"
config LV_USE_DEMO_EBIKE
bool "Ebike demo"
config LV_USE_DEMO_HIGH_RES
bool "High resolution demo"
endmenu
endmenu

View File

@@ -1,5 +1,5 @@
MIT licence
Copyright (c) 2021 LVGL Kft
Copyright (c) 2025 LVGL Kft
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

View File

@@ -2,7 +2,7 @@
<a href="https://github.com/sponsors/lvgl" target="_blank"><img align="left" src="https://lvgl.io/github-assets/sponsor.png" height="32px"></a>
<p align="right">
<b>English</b> | <a href="./docs/README_zh.rst">中文</a> | <a href="./docs/README_pt_BR.rst">Português do Brasil</a> | <a href="./docs/README_jp.rst">日本語</a>
<b>English</b> | <a href="./docs/README_zh.md">中文</a> | <a href="./docs/README_pt_BR.md">Português do Brasil</a> | <a href="./docs/README_jp.md">日本語</a>
</p>
<br>

View File

@@ -39,7 +39,11 @@
/**********************
* DEFINES
**********************/
#define HEADER_HEIGHT 48
#if LV_USE_PERF_MONITOR_LOG_MODE == 1
#define HEADER_HEIGHT 0
#else
#define HEADER_HEIGHT 48
#endif
#define FALL_HEIGHT 80
#define PAD_BASIC 8
@@ -47,16 +51,6 @@
* TYPEDEFS
**********************/
typedef struct {
const char * name;
void (*create_cb)(void);
uint32_t scene_time;
uint32_t cpu_avg_usage;
uint32_t fps_avg;
uint32_t render_avg_time;
uint32_t flush_avg_time;
uint32_t measurement_cnt;
} scene_dsc_t;
/**********************
* STATIC PROTOTYPES
@@ -69,8 +63,11 @@ static void next_scene_timer_cb(lv_timer_t * timer);
static void sysmon_perf_observer_cb(lv_observer_t * observer, lv_subject_t * subject);
#endif
static void summary_create(void);
static void summary_create(lv_demo_benchmark_summary_t * summary);
static void table_draw_task_event_cb(lv_event_t * e);
static void rnd_reset(void);
static int32_t rnd_next(int32_t min, int32_t max);
static lv_color_t rnd_color(void);
@@ -452,7 +449,7 @@ static void widgets_demo_cb(void)
* STATIC VARIABLES
**********************/
static scene_dsc_t scenes[] = {
static lv_demo_benchmark_scene_dsc_t scenes[] = {
{.name = "Empty screen", .scene_time = 3000, .create_cb = empty_screen_cb},
{.name = "Moving wallpaper", .scene_time = 3000, .create_cb = moving_wallpaper_cb},
{.name = "Single rectangle", .scene_time = 3000, .create_cb = single_rectangle_cb},
@@ -477,6 +474,7 @@ static scene_dsc_t scenes[] = {
static uint32_t scene_act;
static uint32_t rnd_act;
static lv_demo_benchmark_on_end_cb_t on_demo_end_cb;
/**********************
* MACROS
@@ -512,11 +510,106 @@ void lv_demo_benchmark(void)
#if LV_USE_PERF_MONITOR
lv_display_t * disp = lv_display_get_default();
lv_subject_add_observer_obj(&disp->perf_sysmon_backend.subject, sysmon_perf_observer_cb, title, NULL);
#if LV_USE_PERF_MONITOR_LOG_MODE
lv_obj_add_flag(title, LV_OBJ_FLAG_HIDDEN);
#endif
#else
lv_label_set_text(title, "LV_USE_PERF_MONITOR is not enabled");
#endif
}
void lv_demo_benchmark_set_end_cb(lv_demo_benchmark_on_end_cb_t cb)
{
on_demo_end_cb = cb;
}
void lv_demo_benchmark_summary_display(const lv_demo_benchmark_summary_t * summary)
{
LV_ASSERT_NULL(summary)
lv_obj_clean(lv_screen_active());
lv_obj_set_style_pad_hor(lv_screen_active(), 0, 0);
lv_obj_t * table = lv_table_create(lv_screen_active());
lv_obj_set_width(table, lv_pct(100));
lv_obj_set_style_max_height(table, lv_pct(100), 0);
lv_obj_add_flag(table, LV_OBJ_FLAG_SEND_DRAW_TASK_EVENTS);
lv_obj_set_style_text_color(table, lv_palette_darken(LV_PALETTE_BLUE_GREY, 2), LV_PART_ITEMS);
lv_obj_set_style_border_color(table, lv_palette_darken(LV_PALETTE_BLUE_GREY, 2), LV_PART_ITEMS);
lv_obj_add_event_cb(table, table_draw_task_event_cb, LV_EVENT_DRAW_TASK_ADDED, NULL);
lv_table_set_cell_value(table, 0, 0, "Name");
lv_table_set_cell_value(table, 0, 1, "Avg. CPU");
lv_table_set_cell_value(table, 0, 2, "Avg. FPS");
lv_table_set_cell_value(table, 0, 3, "Avg. time (render + flush)");
/* csv log */
LV_LOG("Benchmark Summary (%d.%d.%d %s)\r\n",
LVGL_VERSION_MAJOR,
LVGL_VERSION_MINOR,
LVGL_VERSION_PATCH,
LVGL_VERSION_INFO);
LV_LOG("Name, Avg. CPU, Avg. FPS, Avg. time, render time, flush time\r\n");
lv_obj_update_layout(table);
const int32_t col_w = lv_obj_get_content_width(table) / 4;
lv_table_set_column_width(table, 0, col_w);
lv_table_set_column_width(table, 1, col_w);
lv_table_set_column_width(table, 2, col_w);
lv_table_set_column_width(table, 3, col_w);
for(size_t i = 0; scenes[i].create_cb; i++) {
lv_table_set_cell_value(table, i + 2, 0, scenes[i].name);
if(scenes[i].measurement_cnt == 0) {
lv_table_set_cell_value(table, i + 2, 1, "N/A");
lv_table_set_cell_value(table, i + 2, 2, "N/A");
lv_table_set_cell_value(table, i + 2, 3, "N/A");
}
else {
const int32_t cnt = scenes[i].measurement_cnt;
lv_table_set_cell_value_fmt(table, i + 2, 1, "%"LV_PRIu32" %%", scenes[i].cpu_avg_usage / cnt);
lv_table_set_cell_value_fmt(table, i + 2, 2, "%"LV_PRIu32" FPS", scenes[i].fps_avg / cnt);
const uint32_t render_time = scenes[i].render_avg_time / cnt;
const uint32_t flush_time = scenes[i].flush_avg_time / cnt;
const uint32_t total_time = render_time + flush_time;
lv_table_set_cell_value_fmt(table, i + 2, 3, "%"LV_PRIu32" ms (%"LV_PRIu32" + %"LV_PRIu32")",
total_time, render_time, flush_time);
/* csv log */
LV_LOG("%s, %"LV_PRIu32"%%, %"LV_PRIu32", %"LV_PRIu32", %"LV_PRIu32", %"LV_PRIu32"\r\n",
scenes[i].name,
scenes[i].cpu_avg_usage / cnt,
scenes[i].fps_avg / cnt,
render_time + flush_time,
render_time,
flush_time);
}
}
lv_table_set_cell_value(table, 1, 0, "All scenes avg.");
if(summary->valid_scene_cnt < 1) {
lv_table_set_cell_value(table, 1, 1, "N/A");
lv_table_set_cell_value(table, 1, 2, "N/A");
lv_table_set_cell_value(table, 1, 3, "N/A");
}
else {
lv_table_set_cell_value_fmt(table, 1, 1, "%"LV_PRIu32" %%", summary->total_avg_cpu / summary->valid_scene_cnt);
lv_table_set_cell_value_fmt(table, 1, 2, "%"LV_PRIu32" FPS", summary->total_avg_fps / summary->valid_scene_cnt);
const uint32_t render_time = summary->total_avg_render_time / summary->valid_scene_cnt;
const uint32_t flush_time = summary->total_avg_flush_time / summary->valid_scene_cnt;
const uint32_t total_time = render_time + flush_time;
lv_table_set_cell_value_fmt(table, 1, 3, "%"LV_PRIu32" ms (%"LV_PRIu32" + %"LV_PRIu32")",
total_time, render_time, flush_time);
/* csv log */
LV_LOG("All scenes avg.,%"LV_PRIu32"%%, %"LV_PRIu32", %"LV_PRIu32", %"LV_PRIu32", %"LV_PRIu32"\r\n",
summary->total_avg_cpu / summary->valid_scene_cnt,
summary->total_avg_fps / summary->valid_scene_cnt,
total_time,
render_time, flush_time);
}
}
/**********************
* STATIC FUNCTIONS
**********************/
@@ -553,8 +646,21 @@ static void next_scene_timer_cb(lv_timer_t * timer)
load_scene(scene_act);
if(scenes[scene_act].scene_time == 0) {
lv_demo_benchmark_summary_t summary;
lv_timer_delete(timer);
summary_create();
summary_create(&summary);
/*
* Don't display the summary if the user sets a callback function
* He can always call this function himself inside the callback
*/
if(on_demo_end_cb) {
on_demo_end_cb(&summary);
}
else {
lv_demo_benchmark_summary_display(&summary);
}
}
else {
lv_timer_set_period(timer, scenes[scene_act].scene_time);
@@ -565,9 +671,8 @@ static void next_scene_timer_cb(lv_timer_t * timer)
static void sysmon_perf_observer_cb(lv_observer_t * observer, lv_subject_t * subject)
{
const lv_sysmon_perf_info_t * info = lv_subject_get_pointer(subject);
lv_obj_t * label = lv_observer_get_target(observer);
char scene_name[64];
if(scenes[scene_act].name[0] != '\0') {
lv_snprintf(scene_name, sizeof(scene_name), "%s: ", scenes[scene_act].name);
}
@@ -575,6 +680,8 @@ static void sysmon_perf_observer_cb(lv_observer_t * observer, lv_subject_t * sub
scene_name[0] = '\0';
}
#if !LV_USE_PERF_MONITOR_LOG_MODE
lv_obj_t * label = lv_observer_get_target(observer);
lv_label_set_text_fmt(label,
"%s"
"%" LV_PRIu32" FPS, %" LV_PRIu32 "%% CPU\n"
@@ -583,6 +690,9 @@ static void sysmon_perf_observer_cb(lv_observer_t * observer, lv_subject_t * sub
info->calculated.fps, info->calculated.cpu,
info->calculated.render_avg_time + info->calculated.flush_avg_time,
info->calculated.render_avg_time, info->calculated.flush_avg_time);
#else
LV_UNUSED(observer);
#endif
/*Ignore the first call as it contains data from the previous scene*/
if(scenes[scene_act].measurement_cnt != 0) {
@@ -628,106 +738,27 @@ static void table_draw_task_event_cb(lv_event_t * e)
}
static void summary_create(void)
static void summary_create(lv_demo_benchmark_summary_t * summary)
{
lv_obj_clean(lv_screen_active());
lv_obj_set_style_pad_hor(lv_screen_active(), 0, 0);
lv_obj_t * table = lv_table_create(lv_screen_active());
lv_obj_set_width(table, lv_pct(100));
lv_obj_set_style_max_height(table, lv_pct(100), 0);
lv_obj_add_flag(table, LV_OBJ_FLAG_SEND_DRAW_TASK_EVENTS);
lv_obj_set_style_text_color(table, lv_palette_darken(LV_PALETTE_BLUE_GREY, 2), LV_PART_ITEMS);
lv_obj_set_style_border_color(table, lv_palette_darken(LV_PALETTE_BLUE_GREY, 2), LV_PART_ITEMS);
lv_obj_add_event_cb(table, table_draw_task_event_cb, LV_EVENT_DRAW_TASK_ADDED, NULL);
lv_memset(summary, 0, sizeof(*summary));
lv_table_set_cell_value(table, 0, 0, "Name");
lv_table_set_cell_value(table, 0, 1, "Avg. CPU");
lv_table_set_cell_value(table, 0, 2, "Avg. FPS");
lv_table_set_cell_value(table, 0, 3, "Avg. time (render + flush)");
/* csv log */
LV_LOG("Benchmark Summary (%d.%d.%d %s)\r\n",
LVGL_VERSION_MAJOR,
LVGL_VERSION_MINOR,
LVGL_VERSION_PATCH,
LVGL_VERSION_INFO);
LV_LOG("Name, Avg. CPU, Avg. FPS, Avg. time, render time, flush time\r\n");
lv_obj_update_layout(table);
int32_t col_w = lv_obj_get_content_width(table) / 4;
lv_table_set_column_width(table, 0, col_w);
lv_table_set_column_width(table, 1, col_w);
lv_table_set_column_width(table, 2, col_w);
lv_table_set_column_width(table, 3, col_w);
uint32_t i;
int32_t total_avg_fps = 0;
int32_t total_avg_cpu = 0;
int32_t total_avg_render_time = 0;
int32_t total_avg_flush_time = 0;
int32_t valid_scene_cnt = 0;
for(i = 0; scenes[i].create_cb; i++) {
lv_table_set_cell_value(table, i + 2, 0, scenes[i].name);
summary->scenes = scenes;
for(size_t i = 0; scenes[i].create_cb; i++) {
/*the first measurement was ignored as it contains data from the previous scene*/
if(scenes[i].measurement_cnt <= 1) {
lv_table_set_cell_value(table, i + 2, 1, "N/A");
lv_table_set_cell_value(table, i + 2, 2, "N/A");
lv_table_set_cell_value(table, i + 2, 3, "N/A");
if(scenes[i].measurement_cnt > 1) {
const int32_t cnt = --scenes[i].measurement_cnt;
summary->valid_scene_cnt++;
summary->total_avg_cpu += scenes[i].cpu_avg_usage / cnt;
summary->total_avg_fps += scenes[i].fps_avg / cnt;
summary->total_avg_render_time += scenes[i].render_avg_time / cnt;
summary->total_avg_flush_time += scenes[i].flush_avg_time / cnt;
}
else {
int32_t cnt = scenes[i].measurement_cnt - 1;
lv_table_set_cell_value_fmt(table, i + 2, 1, "%"LV_PRIu32" %%", scenes[i].cpu_avg_usage / cnt);
lv_table_set_cell_value_fmt(table, i + 2, 2, "%"LV_PRIu32" FPS", scenes[i].fps_avg / cnt);
uint32_t render_time = scenes[i].render_avg_time / cnt;
uint32_t flush_time = scenes[i].flush_avg_time / cnt;
lv_table_set_cell_value_fmt(table, i + 2, 3, "%"LV_PRIu32" ms (%"LV_PRIu32" + %"LV_PRIu32")",
render_time + flush_time, render_time, flush_time);
/* csv log */
LV_LOG("%s, %"LV_PRIu32"%%, %"LV_PRIu32", %"LV_PRIu32", %"LV_PRIu32", %"LV_PRIu32"\r\n",
scenes[i].name,
scenes[i].cpu_avg_usage / cnt,
scenes[i].fps_avg / cnt,
render_time + flush_time,
render_time,
flush_time);
valid_scene_cnt++;
total_avg_cpu += scenes[i].cpu_avg_usage / cnt;
total_avg_fps += scenes[i].fps_avg / cnt;
total_avg_render_time += scenes[i].render_avg_time / cnt;
total_avg_flush_time += scenes[i].flush_avg_time / cnt;
}
}
/*Add the average*/
lv_table_set_cell_value(table, 1, 0, "All scenes avg.");
if(valid_scene_cnt < 1) {
lv_table_set_cell_value(table, 1, 1, "N/A");
lv_table_set_cell_value(table, 1, 2, "N/A");
lv_table_set_cell_value(table, 1, 3, "N/A");
}
else {
lv_table_set_cell_value_fmt(table, 1, 1, "%"LV_PRIu32" %%", total_avg_cpu / valid_scene_cnt);
lv_table_set_cell_value_fmt(table, 1, 2, "%"LV_PRIu32" FPS", total_avg_fps / valid_scene_cnt);
uint32_t render_time = total_avg_render_time / valid_scene_cnt;
uint32_t flush_time = total_avg_flush_time / valid_scene_cnt;
lv_table_set_cell_value_fmt(table, 1, 3, "%"LV_PRIu32" ms (%"LV_PRIu32" + %"LV_PRIu32")",
render_time + flush_time, render_time, flush_time);
/* csv log */
LV_LOG("All scenes avg.,%"LV_PRIu32"%%, %"LV_PRIu32", %"LV_PRIu32", %"LV_PRIu32", %"LV_PRIu32"\r\n",
total_avg_cpu / valid_scene_cnt,
total_avg_fps / valid_scene_cnt,
render_time + flush_time,
render_time,
flush_time);
}
}
/*----------------
* SCENE HELPERS
*----------------*/
@@ -766,7 +797,7 @@ static void arc_anim(lv_obj_t * obj)
lv_anim_set_exec_cb(&a, arc_anim_cb);
lv_anim_set_values(&a, 0, 100);
lv_anim_set_duration(&a, t1);
lv_anim_set_playback_duration(&a, t2);
lv_anim_set_reverse_duration(&a, t2);
lv_anim_set_var(&a, obj);
lv_anim_set_repeat_count(&a, LV_ANIM_REPEAT_INFINITE);
lv_anim_start(&a);
@@ -787,7 +818,7 @@ static void scroll_anim(lv_obj_t * obj, int32_t y_max)
lv_anim_set_exec_cb(&a, scroll_anim_y_cb);
lv_anim_set_values(&a, 0, y_max);
lv_anim_set_duration(&a, t);
lv_anim_set_playback_duration(&a, t);
lv_anim_set_reverse_duration(&a, t);
lv_anim_set_repeat_count(&a, LV_ANIM_REPEAT_INFINITE);
lv_anim_start(&a);
@@ -808,7 +839,7 @@ static void fall_anim(lv_obj_t * obj, int32_t y_max)
lv_anim_set_exec_cb(&a, shake_anim_y_cb);
lv_anim_set_values(&a, 0, y_max);
lv_anim_set_duration(&a, t1);
lv_anim_set_playback_duration(&a, t2);
lv_anim_set_reverse_duration(&a, t2);
lv_anim_set_repeat_count(&a, LV_ANIM_REPEAT_INFINITE);
lv_anim_start(&a);
}

View File

@@ -25,6 +25,35 @@ extern "C" {
* TYPEDEFS
**********************/
typedef struct {
const char * name;
void (*create_cb)(void);
uint32_t scene_time;
uint32_t cpu_avg_usage;
uint32_t fps_avg;
uint32_t render_avg_time;
uint32_t flush_avg_time;
uint32_t measurement_cnt;
} lv_demo_benchmark_scene_dsc_t;
typedef struct {
/*
* List of scenes
* The last scne in this array of scenes is terminated
* by a sentinel scene that has `create_cb` == NULL
* Must not be free'd
*/
lv_demo_benchmark_scene_dsc_t * scenes;
int32_t total_avg_fps;
int32_t total_avg_cpu;
int32_t total_avg_render_time;
int32_t total_avg_flush_time;
int32_t valid_scene_cnt; /* Number of scenes in `scenes` with a `measurement_cnt` greater than 0 */
} lv_demo_benchmark_summary_t;
typedef void (*lv_demo_benchmark_on_end_cb_t)(const lv_demo_benchmark_summary_t *);
/**********************
* GLOBAL PROTOTYPES
**********************/
@@ -32,7 +61,7 @@ extern "C" {
/**
* Run all benchmark scenes.
*
* On the summary end screen the values shall be interpreted according to the followings:
* On the summary end screen the values shall be interpreted according to the following:
* - CPU usage:
* - If `LV_SYSMON_GET_IDLE` is not modified it's measured based on the time spent in
* `lv_timer_handler`.
@@ -50,6 +79,20 @@ extern "C" {
*/
void lv_demo_benchmark(void);
/*
* Register a function to call when the benchmark demo is over
* @param cb function to call when the demo is over
*/
void lv_demo_benchmark_set_end_cb(lv_demo_benchmark_on_end_cb_t cb);
/*
* Display and log the summary
* This function is called automatically if `lv_on_benchmark_end_cb` is not set
* @param summary summary of the benchmark results
*/
void lv_demo_benchmark_summary_display(const lv_demo_benchmark_summary_t * summary);
/**********************
* MACROS
**********************/

View File

@@ -435,16 +435,16 @@ static void chart_mode_observer_cb(lv_observer_t * observer, lv_subject_t * subj
switch(lv_subject_get_int(&subject_mode)) {
case MODE_AVG_SPEED:
lv_chart_set_range(chart, LV_CHART_AXIS_PRIMARY_Y, 0, 30);
lv_chart_set_ext_y_array(chart, ser, avg_speed_values);
lv_chart_set_axis_range(chart, LV_CHART_AXIS_PRIMARY_Y, 0, 30);
lv_chart_set_series_ext_y_array(chart, ser, avg_speed_values);
break;
case MODE_TOP_SPEED:
lv_chart_set_range(chart, LV_CHART_AXIS_PRIMARY_Y, 0, 50);
lv_chart_set_ext_y_array(chart, ser, top_speed_values);
lv_chart_set_axis_range(chart, LV_CHART_AXIS_PRIMARY_Y, 0, 50);
lv_chart_set_series_ext_y_array(chart, ser, top_speed_values);
break;
case MODE_DISTANCE:
lv_chart_set_range(chart, LV_CHART_AXIS_PRIMARY_Y, 0, 90);
lv_chart_set_ext_y_array(chart, ser, distance_values);
lv_chart_set_axis_range(chart, LV_CHART_AXIS_PRIMARY_Y, 0, 90);
lv_chart_set_series_ext_y_array(chart, ser, distance_values);
break;
default:
break;

View File

@@ -33,7 +33,7 @@
for (i = 0; i < ARRAY_SIZE(flex_align_map); i++) { \
if (flex_align == flex_align_map[i]) { \
lv_dropdown_set_selected(ui->ctrl_pad.tab.align.ddlist_align_##item, \
i); \
i, LV_ANIM_OFF); \
break; \
} \
} \
@@ -114,7 +114,7 @@ void flex_loader_obj_update(lv_obj_t * obj, view_t * ui)
uint32_t i;
for(i = 0; i < ARRAY_SIZE(flex_flow_map); i++) {
if(flex_flow == flex_flow_map[i]) {
lv_dropdown_set_selected(ui->ctrl_pad.tab.flex.ddlist_flow, i);
lv_dropdown_set_selected(ui->ctrl_pad.tab.flex.ddlist_flow, i, LV_ANIM_OFF);
break;
}
}

View File

@@ -58,7 +58,7 @@ void view_create(lv_obj_t * par, view_t * ui)
ui->root = obj_child_node_create(par, ui);
lv_obj_set_size(ui->root, lv_pct(50), lv_pct(80));
/* mian ctrl_pad */
/* main ctrl_pad */
lv_obj_t * obj = lv_obj_create(par);
lv_obj_set_size(obj, lv_pct(40), lv_pct(80));
lv_obj_set_style_pad_all(obj, 0, 0);

Binary file not shown.

After

Width:  |  Height:  |  Size: 827 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 568 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 439 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 507 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 407 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 320 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 429 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 350 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 201 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 482 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 372 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 267 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 604 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 352 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 154 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 573 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 277 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 116 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 514 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 233 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 580 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 265 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 601 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 277 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 595 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 274 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 943 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 956 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 113 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 611 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 431 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 364 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 369 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 224 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 233 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 536 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 404 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 288 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 352 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 253 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 213 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 608 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 478 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 359 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 451 KiB

Some files were not shown because too many files have changed in this diff Show More