Camera Preview orientation problems in WM6.5+

WM6.5 introduced some new layering/compositing technologies that have the potential to break some display driver assumptions. If your display driver is vulnerable to this problem, it will likely break in LTK test #4040 during camera preview orientation. If your display driver is not failing #4040, your driver is robust enough to accommodate the latest design and no further change is required.


In pre-6.5 versions of Windows Mobile, the primary surface was responsible for all compositing which is no longer the case. The new compositing surface does not carry the orientation information of the primary surface so when processing the BMF_SRCPREROTATE flag we end up rotating the wrong surface. This results in camera preview incorrectly oriented and ultimately failing the test.


The fix for the problem can be found inside of AnyBlt() where you need to specify the assignment of pGPEDst while handling the BMF_SRCPREROTATE flag - specify your primary surface as:


            GPESurf * pGPEDst = pGPE->PrimarySurface();


Instead of what is was previously assigned to. The location of the exact change will depend on if your driver implements a private copy of the function. It is also possible that your driver has undergone significant changes from the public copy, in which case I recommend understanding the change in regards to the public driver before integrating to your private one.


If you are using the default, public copy of this routine, then you should only need to re-link with a recent AK since it has been fixed in the public tree. Good Luck and happy hunting!