Android 2.1闪屏问题

北大众志小本(MPRC)Android 2.1移植

 

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

 

include $(CLEAR_VARS) 21 LOCAL_PRELINK_MODULE := false 22 LOCAL_MODULE_PATH := $(TARGET_OUT_SHARED_LIBRARIES)/hw 23 LOCAL_SHARED_LIBRARIES := liblog libcutils 24 25 LOCAL_SRC_FILES := / 26 gralloc.cpp / 27 framebuffer.cpp / 28 mapper.cpp 29 30 LOCAL_MODULE := gralloc.default 31 LOCAL_CFLAGS:= -DLOG_TAG=/"gralloc/" 32 ifeq ($(BOARD_NO_PAGE_FLIPPING),true) 33 LOCAL_CFLAGS += -DNO_PAGE_FLIPPING 34 endif 35 36 include $(BUILD_SHARED_LIBRARY) 

 

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

 

// numbers of buffers for page flipping 46 #if defined(NO_PAGE_FLIPPING) 47 // page-flipping is buggy on some devices 48 #define NUM_BUFFERS 1 49 #else 50 #define NUM_BUFFERS 2 51 #endif 

 

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

 

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

通过了 ,没有任何问题。

 

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

 

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

 

你可能感兴趣的:(android,Module,Build,include,library,Numbers)