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

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

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

问题二:

        文件:window_parse.c
        函数:CreateSoftkeyCtrl()
        问题:没有判断softkey是否创建成功,就给窗口设置了ctrl_id

        LOCAL BOOLEAN CreateSoftkeyCtrl(
                                        MMI_HANDLE_T win_handle,
                                        uint32**      value_pptr
                                        )
        {
                ......
                ctrl_ptr = MMK_CreateControl( &create );
                MMK_SetWinSoftkeyCtrlId(win_handle, ctrl_id);
                ......
        }

        应该修改为
        LOCAL BOOLEAN CreateSoftkeyCtrl(
                                        MMI_HANDLE_T win_handle,
                                        uint32**      value_pptr
                                        )
        {
                ......
                ctrl_ptr = MMK_CreateControl( &create );
                if (ctrl_ptr != NULL)
                {
                        MMK_SetWinSoftkeyCtrlId(win_handle, ctrl_id);
                }
                ......
        }


        分析:当ctrl_ptr==NULL时却强行给窗口设了ctrl_id,则在该窗口调用MMK_DestroyControl(MMITHEME_GetSoftkeyCtrlId())时,会删掉别的真正拥有softkey的窗口的softkey,造成回到有softkey的窗口时,这个窗口的softkey消失了。即使在调用MMK_DestroyControl()的窗口调用MMK_GetWinSoftkeyCtrlId(win_id)来判断窗口是否包含softkey也判断不出来,因为它会返回有效的softkey_id
发表于 2012-2-3 15:09:50 | 显示全部楼层
[em04]很想试试LZ所说的问题...[em11]可惜力有不逮
怎么才能人为的让ctrl_ptr==NULL呢[em10]
点评回复

使用道具 举报

发表于 2012-3-21 10:34:00 | 显示全部楼层
tonystreets正解。
点评回复

使用道具 举报

发表于 2012-3-16 21:20:43 | 显示全部楼层
mmk在关闭窗口时会释放控件,控件是挂在窗口下的(有个树和子树的关系),即使为空,也不会释放别的窗口下的控件!~希望能帮到你
点评回复

使用道具 举报

发表于 2013-1-10 18:04:19 | 显示全部楼层
楼主的代码更加规范。但是tonystreets的解释来说就是盘不判断都没必要。所以也没错。
点评回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies

本版积分规则

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

GMT+8, 2024-6-7 09:49 , Processed in 0.047348 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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