找回密码
 注册
搜索
查看: 1521|回复: 10

[讨论] gui_lock_double_buffer()问题

[复制链接]
发表于 2009-2-15 23:05:24 | 显示全部楼层 |阅读模式
请教高手们个问题,gui_lock_double_buffer();和 gui_unlock_double_buffer();这两个函数是实现什么功能,如在画界面时不加这两个函数,gui_BLT_double_buffer(0, 0, UI_device_width - 1, UI_device_height - 1);可以吗?谢谢了!
发表于 2009-2-18 09:27:25 | 显示全部楼层

看下面

可以, 不过为效率考虑, 需要加上.  看下面代码

gui_lock_double_buffer(); 实际调用代码应该是如下函数(各平台可能不同)

void gdi_layer_lock_frame_buffer(void)
{
    GDI_LOCK;
    GDI_LCD->blt_lock++;
}

// 看应用, 如下

void mmi_redraw_xxx(void)
{
    gui_lock_double_buffer();

    gui_push_clip();
    gui_set_clip(x1, y1, x2, y2);

    gui_show_image(x1, y1, audply_main_playlisticon.list_icon[playlist]);
   
    gui_pop_clip();

    gui_unlock_double_buffer();
    gui_BLT_double_buffer(x1, y1, x2, y2);
}

//以上代码, 如果gui_show_image 换成诸如 mmi_redraw_xxx 这样结构的代码, 如下面的mmi_show_yyy, 那么执行 mmi_redraw_xxx 此时只会刷屏一次, 而如果不加锁屏操作, 将每有一次 gui_BLT_double_buffer(0, 0, UI_device_width - 1, UI_device_height - 1); 系统就会刷屏一次, 太多时是不允许的

void mmi_show_yyy(void)
{
    gui_lock_double_buffer();

    gui_push_clip();
    gui_set_clip(x1, y1, x2, y2);

    ... ...
   
    gui_pop_clip();

    gui_unlock_double_buffer();
    gui_BLT_double_buffer(x1, y1, x2, y2);
}
点评回复

使用道具 举报

 楼主| 发表于 2009-2-23 00:05:47 | 显示全部楼层
谢谢楼上的大哥指点!
点评回复

使用道具 举报

发表于 2009-3-9 12:41:43 | 显示全部楼层
[em01]
点评回复

使用道具 举报

发表于 2009-7-20 20:44:02 | 显示全部楼层
[em01]
点评回复

使用道具 举报

发表于 2009-7-21 14:41:13 | 显示全部楼层
1.复杂的绘屏一次显示完整
2.避免在你绘屏的时候被其它事件影响,导致绘制不完整或分次显示。
点评回复

使用道具 举报

发表于 2009-7-22 16:17:40 | 显示全部楼层
[em01][em01][em01]
点评回复

使用道具 举报

发表于 2009-12-20 12:48:25 | 显示全部楼层
see see
点评回复

使用道具 举报

发表于 2009-12-25 16:26:54 | 显示全部楼层
顶!!!!!!!!!!!!!
点评回复

使用道具 举报

发表于 2009-12-25 17:31:58 | 显示全部楼层
不错,顶!!!!!!!!
点评回复

使用道具 举报

发表于 2009-12-27 12:24:22 | 显示全部楼层
谢谢高手.谢谢高手.
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

Archiver|手机版|小黑屋|52RD我爱研发网 ( 沪ICP备2022007804号-2 )

GMT+8, 2025-1-6 20:54 , Processed in 0.051723 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表