frame buffer 관련되 문의 드립니다.
글쓴이: leesunghee47 / 작성시간: 수, 2007/12/12 - 11:39오전
현재 frame buffer로 그림을 화면에 띄우는 작업을 하고 있습니다.
마우스로 선택시 그림이 계속 바뀌는 작업을 하고 있는데.
처음에는 정상적으로 그림을 뿌려주는데. 계속 하다보면 그림의 일부분이 뿌려지지 않는 문제가 발생합니다.
혹시 그림을 잘못 불러온건가 해서.. 확인해 보았는데.. 문제가 없는듯 하고요..
그림 size가 300 X 200이라고 하면 앞부분이나 뒷부분이 안 뿌려지는것이 아니라 그림 중간쯤 사각형 모양으로 그림이 안 뿌려질때도 있고... 일정하기 않게.. 그림이 뿌려지지 않는데요..
혹시 어떤 문제일지.. 위 설명만 가지고 알수 있을가요?
Forums:
..
flush 문제가 아닐까요?
akudoku.net
life is only one time
flush.. 문제라면..
어떤 부분이 문제일까요?
ㅜㅡ.. 감이.. 안잡혀요..
mmap() 으로
mmap() 으로 사용하시는 거라면... open() 때 O_SYNC 추가해보시고.
그래도 안되면... 그리기 전에 open(), 그리고 난 후에 close() 방식으로 바꿔서 테스트.
이 방식으로 증상이 없어진다면 fb 드라이버 수정해야 합니다. page remap 때 cache 플래그를 빼도록.
OTL
open() 할때..
답변 감사합니다..
O_SYNC를 추가해 보았지만.. 역시 그림이 깨집니다 ㅜㅡ..
그리고 지금 전 처음에 open()하고 그것으로 계속 그림을 뿌리거든요.. close 안하고요..
그래서 그림 불로오기전에 open()하고.. 그림 불러오고 flush 하고 close 해봤는데.. 역시나.. 그림이 깨지네요..
mmap(NULL, line_length * fbvar.yres, (PROT_READ | PROT_WRITE), MAP_SHARED, fd, 0);
mmap는 이케 불러고요..
근데 끝부분에 page remap때. cache플래그를. 빼라고 하셨는데.. .. 제가.. 워낙.. 잘 몰라서.
자세하게 좀 설명 부탁 드립니다..
close() 하기 전에
close() 하기 전에 munmap() 도 하셔야 합니다.
이 과정을 거쳐도 계속 깨진다면 제가 말씀드린 것과는 무관한 다른 문제입니다.
cache 와 관계가 없다는 뜻입니다.
OTL
예.. 감사합니다..
munmap()은 하고 있습니다.. ㅜㅡ..
아.. 어디가 잘못 된것인지.....
아참 글을 새로 올리기는 했는데요.
제가 지금 그림을 뿌릴때마다 fopen()으로 그림을 불러오고 있는데요..
이럴경우 문제가 될수 있나요?
어디선가.. 부하가 걸릴수 있다고 하는거 같은데요..
혹시 아시는 내용인가요??
아무
아무 상관없습니다.
프레임버퍼는 잠시 미뤄두고.
일련의 파일들로 출력한 뒤, 그 raw 파일들을 gimp 등에서 열어보시는 방법으로 작성하신 프로그램의 무결성부터 검증해 보세요.
OTL
답변 감사합니다.
무결성을 검증해 보라고 하셨는데요..
어떤 방법으로 해야 하는것인지...
불러온 BMP 파일은 저정해서 그 그림을 읽어와서 확인을 해 보라는것이라면...
어케 해야 하는것인지...
초보라 막막하네요...
방법좀!! 부탁드립니다..
프레임버퍼 장치를
프레임버퍼 장치를 open(), mmap() 하는 대신 파일을 open(O_CREAT), mmap() 하시면 결과물이 모니터가 아니라 파일로 출력됩니다.
RGB raw 포맷이라 보통의 그림보기 프로그램에선 보지 못하지요.
gimp 용의 플러그인 중에 RGB 플러그인을 어떻게든 구하셔서 저장된 파일을 gimp로 열어보면,
작성하신 프로그램의 버그인지 프레임버퍼 장치 드라이버의 버그인지가 눈에 보이겠지요.
OTL
깨지는 현상의 화면을 봤으면 좋겠는데여...
SDL이나 DirectFB를 라이브러리를 사용하지 않고 직접 프레임버퍼랑 마우스랑 핸들링하시는 것 같은데...
질문 중에 보면, 화면 중간에 사각형 모양으로 안 그려질때가 있다고 하시니
혹시 마우스커서나 커서가 지나간 자리에 그림이 안그려지거나 한게 아닌 생각을 해봅니다.
허접한 추측이었는지도 모르겠습니다.
저도 처음에는..
그 문제인줄 알았는데요..
마우스로 안하고 키보드 입력으로 해서 그림을 계속 뿌려도 똑같은 현상이 일어납니다.. ㅜㅡ..
아무튼.. 감사합니다!!
댓글 달기