LG3D@FC3test3_x86_64への道のり その2
なんとか64bit環境でLG3Dが動いたのですが、Xのネイティブアプリの動作でXサーバごと落ちてしまいます。
以下は、それまでの備忘録です。
X Japanese Documentation Project
上記のURLにて久々にXのAPIを復習し、
XEvent構造体をJava側(LG3D)ではint[24]として受け取っているが、
64bit環境ではsizeof(XEvent)が192となってしまい、int[24]としてはそのままでは受け取れない!
が、これは以下のようにしたら解決しました。
j = 0;
for(i = 0; i < 48; i=i+2) {
tmp_v1 = ((int *)&xevent)[i];
tmp_v2 = ((int *)&xevent)[i+1];
if(j==8 || j== 10) {
tmp_efa[j++] = tmp_v1;
tmp_efa[j++] = tmp_v2;
} else {
tmp_efa[j++] = tmp_v1;
}
}
(*env)->SetIntArrayRegion(env, efa, 0, 24,
(long*)tmp_efa);
以下もかなり本日の作業の役にたちました。
http://www.turbolinux.co.jp/world/library/features/SoftwareDesign/200401/AMD64/64bit-ch3a-2.html