Android 2.1 闪屏

 

移植过程中,小本的内核不支持double framebuffer,导致屏幕不断在刷。最后通过师兄的方法:

http://hi.baidu.com/aokikyon/blog/item/609ea74530b8f533879473be.html

刷屏的现象会好很多,但是打开程序的时候屏幕还是会闪。

后来在gingerbread的hardware/libhardware/modules/gralloc/Android.mk发现了一个新定义的宏:BOARD_NO_PAGE_FLIPPING

[c-sharp] view plain copy print ?
  1. include $(CLEAR_VARS) 
  2. 21 LOCAL_PRELINK_MODULE := false 
  3. 22 LOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)/hw 
  4. 23 LOCAL_SHARED_LIBRARIES := liblog libcutils 
  5. 24  
  6. 25 LOCAL_SRC_FILES :=  / 
  7. 26     gralloc.cpp     / 
  8. 27     framebuffer.cpp / 
  9. 28     mapper.cpp 
  10. 29  
  11. 30 LOCAL_MODULE := gralloc.default 
  12. 31 LOCAL_CFLAGS:= -DLOG_TAG=/"gralloc/" 
  13. 32 ifeq ($(BOARD_NO_PAGE_FLIPPING),true
  14. 33 LOCAL_CFLAGS += -DNO_PAGE_FLIPPING 
  15. 34 endif 
  16. 35  
  17. 36 include $(BUILD_SHARED_LIBRARY) 

然后就去找源码中这个宏的调用,在framebuffer.cpp中:

[c-sharp] view plain copy print ?
  1. // numbers of buffers for page flipping 
  2. 46 #if defined(NO_PAGE_FLIPPING) 
  3. 47 // page-flipping is buggy on some devices 
  4. 48 #define NUM_BUFFERS 1 
  5. 49 #else 
  6. 50 #define NUM_BUFFERS 2 
  7. 51 #endif 

原来2.3中更好的支持了single framebuffer,可以不使用page flipping。

最终,我没有对2.1的代码作任何修改,直接把gingerbread的gralloc代码放到2.1的源码中去编译。

通过了 ,没有任何问题。

再把生成的gralloc.default.so放到小本上。果然,闪屏现象完全没了。

有空研究下gingerbread究竟做了那些具体的改进。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值