1. 刷新疑问

前面在将 lvgl 对接到屏幕驱动时可以知道 lvgl 可以支持局部刷新,所谓的局部刷新就是比如屏幕中显示了多个组件,比如有按钮,有标签,还有进度条,这时如果仅仅标签的内容发生变化那么 lvgl 只会将标签所在的屏幕位置内容重新刷新,所谓重新刷新就是将更新后的显存内容(内容即颜色数据)通过屏幕数据线重新传递给屏幕进行显示。

这时就会产生疑问,lvgl 并没有给用户提供通知刷新的函数接口,lvgl 又是怎么知道标签的内容被改变了呢,lvgl 又怎么知道需要刷新位置具体的坐标呢

2. lvgl 线程

lvgl 共有三个线程,其中主线程一个,和在主线程的 hal_init 函数中创建的另两个 sdl 线程。
主线程完成一系列初始化工作后,循环每 10ms 调用在 lv_init 函数中注册的三个任务,indev_proc_task(输入设备处理函数,procprocess 缩写),lv_refr_task(图形刷新任务,referrefresh 缩写),anim_task(动画任务),这三个任务中需要注意的是每 50ms 处理一次的输入处理 indev_proc_task 任务和每 30ms 处理一次的画面刷新 lv_refr_task 任务。

monitor_sdl_refr_thread 线程负责输出图像和鼠标键盘的输入处理,每次处理后 sleep 50ms。tick_thread 线程每 5ms 增加计时变量一次,用来为全局提供时间参考。

3. 输入检测

monitor_sdl_refr_thread 线程:当鼠标按下,记录鼠标位置数据。

主线程:在 indev_proc_task 中读取鼠标位置数据,和控件位置比较,得到控件指针,调用控件 signal_func 函数,此函数再调用 lv_btn_set_state(btn, LV_BTN_STATE_PR) 设置按钮状态为按下状态,此时画面并没有实际更新,可以看成是发出了画面更新请求。

lv_refr_task:任务处理收到的画面更新请求,实际上是修改了画面变量 tft_fb

monitor_sdl_refr_thread 线程:根据变量 tft_fb 的值更新画面。

4. 画面刷新

lv_refr_task(30ms调用一次)lv_refr_areaslv_refr_area_with_vdblv_refr_area_part_vdblv_vdb_flushlv_disp_flush(vdb_act->area.x1, vdb_act->area.y1, vdb_act->area.x2, vdb_act->area.y2, vdb_act->buf);active->driver.disp_flush(x1, y1, x2, y2, color_p);实现画面刷新active->driver.disp_flush:在初始化的时候进行注册,如下:lv_disp_drv_t disp_drv;                         /*Descriptor of a display driver*/lv_disp_drv_init(&disp_drv);                    /*Basic initialization*//*Set up the functions to access to your display*/disp_drv.disp_flush = ex_disp_flush;

从上方程序中的层层调用中可以发现最终调用了 driver.disp_flush(x1, y1, x2, y2, color_p) 函数,该函数就是移植时我们对接给 lvgl 对接屏幕驱动的函数,到这里屏幕才真正的更新内容。

lvgl8.2 分析画面刷新相关推荐

  1. lvgl的区别 qt_LVGL分析-画面刷新

    LVGL分析 1 littlevgl线程 littlevgl有几个线程,作用是什么? 三个,主线程一个,和在主线程的hal_init函数中创建的另两个sdl线程. 主线程完成一系列初始化工作后,循环每 ...

  2. Alian解读SpringBoot 2.6.0 源码(八):启动流程分析之刷新应用上下文(下)

    目录 一.背景 1.1.刷新的整体调用流程 1.2.本文解读范围 二.初始化特定上下文子类中的其他特殊bean 2.1.初始化主体资源 2.2.创建web服务 三.检查监听器bean并注册它们 四.实 ...

  3. Alian解读SpringBoot 2.6.0 源码(八):启动流程分析之刷新应用上下文(中)

    目录 一.背景 1.1.刷新的整体调用流程 1.2.本文解读范围 二.调用后处理器 2.1.调用在上下文中注册为beanFactory的后置处理器 2.2.invokeBeanFactoryPostP ...

  4. Alian解读SpringBoot 2.6.0 源码(八):启动流程分析之刷新应用上下文(上)

    目录 一.背景 1.1.run方法整体流程 1.2.刷新的整体调用流程 1.3.本文解读范围 二.准备刷新 2.1.准备刷新的流程 2.2.初始化上下文环境中servlet相关属性源 2.3.校验re ...

  5. 为什么游戏画面会产生撕裂?垂直同步与防撕裂技术分析

    很多朋友在玩游戏的时候都可能遇到过下图这种画面撕裂的情况.尤其是对于FPS玩家,这种撕裂在迅速转动镜头时非常明显. 不过通常游戏设置里面都会有相应的选项来进行调整,比如是否开启垂直同步,是否启用三级缓 ...

  6. 电脑服务器修改穿越火线不卡,windows10玩穿越火线画面不流畅怎么办

    笔记本玩穿越火线,画面不流畅有以下原因以及解决方法: 1.网络连接延迟过高,导致无法流畅运行穿越火线: 解决方法:尽量使用网线连接网络,提高网络速度. 2.电脑配置不足,导致画面数据处理较慢,从而游戏 ...

  7. Android 音量控制流程分析

    在Android平台上,音量键,主页键(home),都是全局按键,但是主页键是个例外不能被应用所捕获.下面分析一下音量按键的流程,主要从framework层处理开始,至于 EventHub 从驱动的/ ...

  8. 《暗黑2》经典数值公式分析总结(一)

    公式会完全还原原著的设计模式,比如伤害实际计算会有各种方面可能存在的加成,这些加成会都保留,所有看起来有的公式可能会稍长.在写出原公式之后,会花点文字解析并最后做个简单的总结.基本上优先从能用可参考的 ...

  9. Java版坦克大战游戏的分析与实现

    技术:Java等 摘要: J2SE (Java 2 Standard Edition)就是Java2的标准版,主要用于桌面应用软件的编程,是伴随着计算机技术的飞速发展而诞生的一项新的开发技术.随着个人 ...

  10. 宏碁发布两款掠夺者电竞显示器:275Hz刷新率,0.5ms响应

    内容由鼎丰下载站http://www.dingfenghn.com/发布:Acer 宏碁今日发布了两款 Predator 掠夺者电竞显示器,均具备 90% 以上 DCI-P3 广色域. Predato ...

最新文章

  1. Linux下getsockopt/setsockopt 函数说明
  2. 使用valgrind检测ATS插件中的内存泄露
  3. python六十一: __module__属性
  4. Python2 Python3 爬取赶集网租房信息,带源码分析
  5. 使用百度UEditor
  6. 3d数学基础图形与游戏开发 英文版_1850款文字标题字幕条,AE图形预设包,logo生成神器...
  7. 怎么在谷歌浏览器中安装.crx扩展名的离线Chrome插件?
  8. 83年的我刚好今年遇到了失业
  9. 新上手jupyterlab安装及问题解决
  10. UEditor 百度Web编辑器 - JSP版本的使用
  11. c语言music算法,PROJECT:以music算法为基础的几种DOA算法的研究及性能分析
  12. linux驱动开发详解——宋宝华 笔记
  13. 地理坐标系转换工具,支持WGS84/GCJ02/BD09等常用坐标系互转
  14. 习题:一圆型游泳池如图所示,现在需在其周围建一圆型过道,并在其四周围上栅栏。栅栏价格为35元/米,过道造价为20元/平方米。过道宽度为3米,游泳池半径由键盘输入。要求编程计算并输出过道和栅栏的造价。
  15. java毕业生设计房屋租赁平台计算机源码+系统+mysql+调试部署+lw
  16. 联发科与晨星合并诞生新寨主
  17. [学习笔记]数据与科学训练营之三:统计学
  18. 爬虫实战——豆瓣电影Top250
  19. android 清理软件,Android 5.0下哪个清理软件最好用?
  20. 破解智慧零售密码 苏宁易购818引爆全民消费狂欢

热门文章

  1. 高通android7.0刷机工具使用介绍
  2. 微信小程序最新富文本编辑器使用功能实例教程
  3. Java操作Excel完成导入导出
  4. android 数据存储之SQLite
  5. 微软放大招,惊现杨超越鼓励师编程插件!
  6. 毕设+电路板(BTN7960驱动电路+LM2596/AMS117稳压电路+蜂鸣器+STM32F103C8T6最小系统电路)
  7. lua脚本的加密和解密(GG游戏脚本)
  8. 管网平差c语言编程,哈工大给水管网平差软件
  9. python直方图规定化_OpenCV python 彩色图像的直方图规定化
  10. 2022.03.15 Arcmap栅格数据无法按照拟定范围进行重分类的解决方案