找回密码
 注册
搜索
查看: 1949|回复: 4

[讨论] 展讯6800平台MMK问题(三)

[复制链接]
发表于 2012-1-6 20:39:16 | 显示全部楼层 |阅读模式
最近做展讯6800,发现MMK存在几个问题,邮件问展讯同事,展讯答复说没问题。但我还是觉得有问题,所以发到论坛来,请各位大侠帮忙分析。

问题三:

        文件:mmk_window.c
        函数:MMK_GetFocusWinId()
        问题:当窗口马上就要关闭时,不应将其再作为焦点窗口

        PUBLIC MMI_WIN_ID_T MMK_GetFocusWinId(void)
        {
                uint32                        win_id = 0;

                ......
                if (PNULL != win_node_ptr)
                {
                        win_id = win_node_ptr->win_id;
                }
               
                return (win_id);
        }

        应该修改为
        PUBLIC MMI_WIN_ID_T MMK_GetFocusWinId(void)
        {
                uint32                        win_id = 0;

                ......
                if (PNULL != win_node_ptr && !win_node_ptr->win_ptr->is_will_close[/COLOR])
                {
                        win_id = win_node_ptr->win_id;
                }
               
                return (win_id);
        }

        分析:如果在某窗口的MSG_CLOSE_WINDOW消息中,通过层层调用,最后要刷新当前焦点窗口,而当前的焦点窗口就是正要关闭的这个窗口,它执行MSG_CLOSE_WINDOW消息时已将资源释放,现在再执行MSG_FULL_PAINT消息就必然出问题。所以,将要关闭的窗口不能再是焦点窗口,需要加上win_node_ptr->win_ptr->is_will_close来判断。
        实例:锁屏方式为多点滑动(即锁屏界面有四个应用的图标,将其中一个拖到下方的圆形区域即解锁并进入相应的应用)。短信列表界面,有未读短信,查看未读短信,查看界面锁屏,此时拖动锁屏窗口上的短信图标,执行解锁进并入短信应用。是这样进入短信应用的:在锁屏窗口的MSG_CLOSE_WINDOW消息中,先MMK_CloseMiddleWin()关掉短信相关的窗口,再进入短信应用窗口。在关短信查看窗口时,会更新状态栏(GUIWIN_UpdateStb),该函数是更新当前焦点窗口的状态栏,状态栏又会给焦点窗口Send一个FULL PAINT消息。而当前焦点窗口还是锁屏窗口,执行FULLPAINT消息时,资源已经释放了,从而引起死机等问题。
发表于 2012-1-7 15:00:33 | 显示全部楼层
不同专业   看不懂
点评回复

使用道具 举报

发表于 2012-2-11 10:51:01 | 显示全部楼层
理解得还不深刻,不能帮楼主。
不用完全相信展讯,用事实说话!
mtk也经常搞错。
点评回复

使用道具 举报

发表于 2012-3-21 10:31:59 | 显示全部楼层
它执行MSG_CLOSE_WINDOW消息时已将资源释放???
看看窗口节点的析构函数:MMK_WindowTreeNodeDestruct中发送CLOSE消息、窗口资源释放及窗口节点DESTORY顺序。
点评回复

使用道具 举报

发表于 2013-1-10 18:06:36 | 显示全部楼层
学习了。。但是刚接触平台。不太熟悉
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

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

GMT+8, 2024-6-7 02:03 , Processed in 0.047566 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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