기존 이솝 임베디드 포럼의 지식인 서비스가 게시판 형태로 변경되었습니다.
GB에서는 경험하지 못했던 문제 였는데,
ICS에서 작업중에, LCD 화면에 보이는 pop-up window의 몇몇 라인이 사라지는 문제가 있어, DDMS를 통해서 화면 Screenshot을 시도 했습니다.
그랬더니, DDMS에서 dump한 이미지와 실제 LCD 이미지(framebuffer)가 다르게 보이고 있습니다. (문제가 나타니지 않고 있다는 뜻)
DDMS가 framebuffer를 가지고 오는 것이 아니라면, ICS에서는 어느 포인트에서 어떠한 원리로 screen shot dump를 뜨는 것인가요?
이 mechanism이 GB이후에 뭔가 바뀐것인가요?
네. 바뀌었습니다.
GB까지는 framebuffer_service에서 직접 fb0를 읽어서 read했지만,
그럴 경우, 캡쳐되지 않는 화면(OverlaySource를 쓰는 Layer - ex. Camera Preview)가 있어,
HC부터는 (ICS도 마찬가지) screenshot API를 사용합니다.
SurfaceFlinger의 captureScreen()이라는 API로 캡쳐한 결과물을 DDMS에서 뿌려주는 것이고,
이럴 경우, 실제 fb0와 다르게 보이는 경우도 생길 수 있죠(문제가 있다면)
참고로 이렇게하면 캡쳐가 지금 화면 그대로 되며,
간단한 캡쳐 원리는 따로 잡은 버퍼에 다시 한번 모든 layer들을 draw해줍니다.