본문 바로가기

REDRAW

(2)
[FLTK] X11/nano-X 에서 FLTK 화면 flushing FLTK 를 X11 이나 nano-X 에서 그리는 경우 화면 갱신을 Fl::check(); 또는 Fl::wait(); 등으로 갱신 시키지 않는 방법으로 이전의 글을 posting 했습니다만, 실제 nano-X 에서는 XFlush() 를 쓰지 않고 갱신 하는 것이 좀 더 안정이 있는 것으로 판단 되어 수정된 코드를 올립니다. 특히 XFlush() 는 thread-unsafe 이므로 중복으로 호출 되는 경우가 없어야 하는 것을 고려 해야 하므로 static bool 변수를 하나 사용하여 중복 호출의 위험을 줄였습니다. #ifdef _WIN32 #include #else #include #endif static bool isRedrawingFLTK = false; void RedrawFLTK() { if ( ..
[FLTK] Win32/X11 에서 FLTK 고속 rednering (또는 redraw) FLTK 에서는 사실상 Fl::check(); 나 Fl::wait(); 등으로 화면을 갱신 하는 방법이 있습니다. 하지만 이 방법을 사용할 경우 잘못된 화면 출력이나 프로그램 자체가 멈추는 문제가 발생되는 단점이 있습니다. 실질적으로 FLTK 는 강제적인 redraw 를 할수 있는 조건을 FLTK 자체가 결정 하는 구조이며, Windows 에서는 비활성화 된 Window 에서는 1초에 한번 그리는 경악적인 상태로 바뀝니다. 문제는 활성화 된 상태 이더라도 Fl_Window 객체를 아무리 redraw(); 하더라도 갱신은 "니 맘대로 되는것이 아니란다" 라는 단점이 있습니다. 이를 해결 하기 위해 여러 방법을 찾다가 문듯, 활성화된 FLTK Window 위에서 마우스를 계속 움직이면 고속으로 화면이 갱신 ..