微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 手机设计讨论 > 展讯手机平台交流 > 展讯6800平台MMK问题(三)

展讯6800平台MMK问题(三)

时间:10-02 整理:3721RD 点击:
最近做展讯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消息时,资源已经释放了,从而引起死机等问题。

不同专业   看不懂

理解得还不深刻,不能帮小编。
不用完全相信展讯,用事实说话!
mtk也经常搞错。

它执行MSG_CLOSE_WINDOW消息时已将资源释放?
看看窗口节点的析构函数:MMK_WindowTreeNodeDestruct中发送CLOSE消息、窗口资源释放及窗口节点DESTORY顺序。

学习了。但是刚接触平台。不太熟悉

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top