March 29th, 2008
GTK에서 SWT/Swing bridge 사용시 유의점

Sun에서 나온 Java 6나 Java 5최신 업데이트 버젼은 GtkLookAndFeel에서 최대한 네이티브 환경과 유사하게 보이기 위해 Gtk 렌더링 코드를 직접 사용한다.
그냥 Swing만 사용할 때는 만족스러운 결과를 내는데
SWT_AWT 클래스를 사용하는 경우는 'unexprected async reply'라는 메시지가 나타난다.
SWT_AWT는 SWT 3.0 이후부터 들어간 클래스인데 SWT 컴포넌트에 AWT/Swing 컴포넌트를 넣거나 그 반대를 가능케 하는 유틸리티 클래스이다.
위의 오류는 X call이 여러 thread에 동시에 발생할때 나타난다.
SWT_AWT를 사용하면 SWT event thread와 AWT event thread가 동시에 수행되기 때문이다.
동시에 수행되지 않도록 다음과 같은 코드를 처음에 실행하면 얼추 된다.
JAVA:
-
public void paintDirtyRegions() {
-
Platform.lock.lock();
-
super.paintDirtyRegions();
-
Platform.lock.unlock();
-
}
-
};
'이런팁은 사내 기밀 아닌가요?' 라고 물으신다면
'이정도는 삽질에 끼지도 못해요' 라고 답해 드리겠습니다.