在LG手机上面的IBitmap_BltIn()问题
大家好,我在LG VX9700上面开发一个Camera程序。在LG系列很多手机上面都有IBitmap_BltIn()造成屏幕闪烁的问题,高通的官方论坛上面有类似帖子:
http://brewforums.qualcomm.com/showthread.php?t=16157&highlight=ibitmap_bltin
这是代码片段
ICAMERA_GetFrame(pMe->m_pcamera, &pFrame);
IBITMAP_GetInfo(pFrame, &pFrameInfo, sizeof(AEEBitmapInfo));
cx = pFrameInfo.cx;
cy = pFrameInfo.cy;
IDISPLAY_BitBlt(pMe->a.m_pIDisplay, x0, y0, cx, cy, pFrame, 0, 0, AEE_RO_COPY);
IDISPLAY_GetDeviceBitmap(pMe->a.m_pIDisplay, &pIBitmap);
IBITMAP_QueryInterface(pIBitmap, AEECLSID_DIB, (void**)&pDIB);
<modify data in-place in pDIB->nBmp here based on pDIB->nDepth, pDIB->nColorScheme, etc>
IDISPLAY_Update(pMe->a.m_pIDisplay);
这段代码在模拟器上面没有任何问题,但是在LG VX8700或者VX9700上面则在IDIB的buf里面得不到数据。
造成问题的主要原因是IBitmap_BltIn()函数在设备上会把Frame直接显示到屏幕上,而且在后面的QueryInterface函数以后会发现IDIB的buf中数据为全0。
我试过很多办法,试图在IBitmap_BltIn()的时候阻止屏幕显示,但是没有成功。
我也想过用其他函数来替代IBitmap_BltIn(),但是跟Blt有关的函数都存在同样问题,包括IBitmap_BltOut和Idisplay_BitBlt。
不知道有没有人碰到同样的问题。
希望高手解答。