|
wince 驱动中,实现动态修改显示分辨率和颜色深度
[复制链接]
WINCE 5.0 + 三星S3C2450平台
因为所使用的LCD支持24位,S3C2450的LCD控制器又支持16位和24位,32位等,所以,有以下需求:
上层应用可以在不重启系统的情况下设置系统显示在16位与24位之间切换,这样的好处是,在查看图片
显示UI等对CPU运算要求不高的情况下,使用24bit的颜色深度,得到更好的显示效果,而在播放电视等
要求实时性高的应用中,如使用24位的话,系统处理不过来,这时切换到16BIT显示模式,
我现在通过display驱动的DrvEscape()函数,提供接口给应用,在相应的CASE里面进行LCD控制器的重新
初始化,如上层应用想由24bit改设为16bit时,那就初始LCD控制器为16位模式,
问题:1虽然控制器的数据改变了,但是系统发下来的数据还是24位的,造成显示不正常!
当LCD控制器设好后,应该要告知系统新的分辩率和像素点颜色深度,还有数据格式等信息,就如开机
初始Display驱动时给回调函数的那些信息,现在要如何才能让系统重新获得这些信息呢?
2 初始化显示驱动时,使用的那些回调函数是由系统来调用的,我们自已又没有办法去调用它,有没有什么机制,
使得系统再初始化一次显示驱动?比如有没有这样一个标志消息?
3 我尝试过,在buildDDHALInfo()函数里面,用一个全局变量记下了第一次初始化时系统传过来的结构地址,
然后在DrvEscape() 的相应CASE里。初始化LCD控制器后,再调用一次buildDDHALInfo(),传入相同的地址,但是GWES
异常了,没有成功告知系统新的显示参数!
4 请各位大侠指点,要实现我要的功能,要怎么办?或是有什么其它的方法吗?谢谢。
E-mail:yplai@smit.com.cn
|
|