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

swt

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:
  1.     public void paintDirtyRegions() {
  2.         Platform.lock.lock();
  3.         super.paintDirtyRegions();
  4.         Platform.lock.unlock();
  5.     }
  6. };
  7. RepaintManager.setCurrentManager(rm);

'이런팁은 사내 기밀 아닌가요?' 라고 물으신다면
'이정도는 삽질에 끼지도 못해요' 라고 답해 드리겠습니다.

July 25th, 2007
eclipsec.exe

윈도우용 Eclipse launcher 이야기다.
Eclipse 3.2.x 이하 버젼에서는 eclipse.exe는 javaw.exe를 자식 프로세스로 생성했다.
Process Tree에서 두 놈이 나와 신경에 거슬렸는데
old eclipse

Eclipse 3.3 부터는 JNI로 VM을 호출한다. 속이 시원하다.
new eclipse

새 launcher는 GUI Application이기 때문에 별도의 Console창이 뜨지 않는다.
때문에 eclipsec.exe 가 추가되었다. Console창이 별도로 뜨는데 이 콘솔창에 대고 Ctrl+Break을 눌러서 Thread dump를 본다던지 할 수 있다.
console