frame buffer 관련되 문의 드립니다.

leesunghee47의 이미지

현재 frame buffer로 그림을 화면에 띄우는 작업을 하고 있습니다.

마우스로 선택시 그림이 계속 바뀌는 작업을 하고 있는데.

처음에는 정상적으로 그림을 뿌려주는데. 계속 하다보면 그림의 일부분이 뿌려지지 않는 문제가 발생합니다.

혹시 그림을 잘못 불러온건가 해서.. 확인해 보았는데.. 문제가 없는듯 하고요..

그림 size가 300 X 200이라고 하면 앞부분이나 뒷부분이 안 뿌려지는것이 아니라 그림 중간쯤 사각형 모양으로 그림이 안 뿌려질때도 있고... 일정하기 않게.. 그림이 뿌려지지 않는데요..

혹시 어떤 문제일지.. 위 설명만 가지고 알수 있을가요?

bus710의 이미지

flush 문제가 아닐까요?

akudoku.net

life is only one time

leesunghee47의 이미지

어떤 부분이 문제일까요?

ㅜㅡ.. 감이.. 안잡혀요..

bushi의 이미지

mmap() 으로 사용하시는 거라면... open() 때 O_SYNC 추가해보시고.
그래도 안되면... 그리기 전에 open(), 그리고 난 후에 close() 방식으로 바꿔서 테스트.
이 방식으로 증상이 없어진다면 fb 드라이버 수정해야 합니다. page remap 때 cache 플래그를 빼도록.

OTL

leesunghee47의 이미지

답변 감사합니다..

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플래그를. 빼라고 하셨는데.. .. 제가.. 워낙.. 잘 몰라서.

자세하게 좀 설명 부탁 드립니다..

bushi의 이미지

close() 하기 전에 munmap() 도 하셔야 합니다.
이 과정을 거쳐도 계속 깨진다면 제가 말씀드린 것과는 무관한 다른 문제입니다.
cache 와 관계가 없다는 뜻입니다.

OTL

leesunghee47의 이미지

munmap()은 하고 있습니다.. ㅜㅡ..

아.. 어디가 잘못 된것인지.....

아참 글을 새로 올리기는 했는데요.

제가 지금 그림을 뿌릴때마다 fopen()으로 그림을 불러오고 있는데요..

이럴경우 문제가 될수 있나요?

어디선가.. 부하가 걸릴수 있다고 하는거 같은데요..

혹시 아시는 내용인가요??

bushi의 이미지

아무 상관없습니다.

프레임버퍼는 잠시 미뤄두고.
일련의 파일들로 출력한 뒤, 그 raw 파일들을 gimp 등에서 열어보시는 방법으로 작성하신 프로그램의 무결성부터 검증해 보세요.

OTL

leesunghee47의 이미지

무결성을 검증해 보라고 하셨는데요..

어떤 방법으로 해야 하는것인지...

불러온 BMP 파일은 저정해서 그 그림을 읽어와서 확인을 해 보라는것이라면...

어케 해야 하는것인지...

초보라 막막하네요...

방법좀!! 부탁드립니다..

bushi의 이미지

프레임버퍼 장치를 open(), mmap() 하는 대신 파일을 open(O_CREAT), mmap() 하시면 결과물이 모니터가 아니라 파일로 출력됩니다.
RGB raw 포맷이라 보통의 그림보기 프로그램에선 보지 못하지요.

gimp 용의 플러그인 중에 RGB 플러그인을 어떻게든 구하셔서 저장된 파일을 gimp로 열어보면,
작성하신 프로그램의 버그인지 프레임버퍼 장치 드라이버의 버그인지가 눈에 보이겠지요.

OTL

tobetter의 이미지

SDL이나 DirectFB를 라이브러리를 사용하지 않고 직접 프레임버퍼랑 마우스랑 핸들링하시는 것 같은데...
질문 중에 보면, 화면 중간에 사각형 모양으로 안 그려질때가 있다고 하시니
혹시 마우스커서나 커서가 지나간 자리에 그림이 안그려지거나 한게 아닌 생각을 해봅니다.

허접한 추측이었는지도 모르겠습니다.

leesunghee47의 이미지

그 문제인줄 알았는데요..

마우스로 안하고 키보드 입력으로 해서 그림을 계속 뿌려도 똑같은 현상이 일어납니다.. ㅜㅡ..

아무튼.. 감사합니다!!

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.