Search Results for '마우스'

1 POSTS

  1. 2008.02.01 마우스 이벤트

마우스 이벤트

Posted 2008. 2. 1. 02:18
GTK+, QT를 비롯한 대부분의 GUI 라이브러리(툴킷)는 마우스 이벤트를 받을 수 있는 방법을 제공합니다. 마우스를 누르고(press), 떼는(release) 이벤트뿐만 아니라 마우스를 움직일 때도 지속적으로 이벤트를 날려줍니다. GTK+는 motion-notify-event 시그널을 정의하고 있습니다.

GUI 프로그램에 익숙하지 않은 사람이 마우스 이벤트 관련해서 흔히 저지르는 실수 중에 하나가 마우스가 움직일 때마다 계산량이 많은 일을 반복적으로 하는 경우입니다. 혹은 마우스가 움직일 때마다 UI를 새로 그리는 명령을 내리는 경우도 많습니다. 이렇게 코딩하면 별로 하는 일도 없는 프로그램인데 간단히 CPU 100%에 도달하게 되지요.

근데 이런 실수가 자주 나오는 이유를 반드시 초보 개발자의 미숙함만으로 돌릴 수는 없는 것 같습니다. GTK+의 motion-notify-event만 보더라도 마우스가 움직이면 불린다는 설명만 있을 뿐 얼마나 자주 불리는지 전혀 내용이 없습니다.

참고로  Limiting your repaint rate라는 제목의 블로그를 보면 거의 초당 110번 불린다는 내용이 있군요 이때마다 새로 그림을 했으면 110 FPS로 화면을 갱신하면서(갱신이 된다면) CPU를 낭비하게 됩니다.

시스템마다 달라질 수는 있겠지만 만약 API 문서에 마우스 이벤트가 어느 정도 간격으로 불리는지 대략적인 가이드라인이라도 줬다면 이런 실수는 없었을지도 모릅니다. 조금 더 친절한 API라면 마우스 이벤트를 받되 초당 몇 번까지 받을지 지정할 수 있게 했을지도 모르겠습니다.