non vorrei lavorare

2020年度からの小学校プログラミング教育の必修化を親として迎えるブロガーの書く、子供との日常

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

関連記事

1年後の記事

2年後の記事