We're back.
We wasn't able to check the library on a 64bit environment because it seems devices with 64bit CPUs like Zenfone 2 are running 32bit linux kernel.
We've found
code.google.com/p/android/issues/detail?id=29735
Look at last post:
The reason for the above problem seems to be that the emulator is misplacing the data it puts at the end of some of the messages it sends, shifting it by 4 octets. In turn, this is due to the alignment of the structures defined in the sdk-controller-socket.c source file.
The problem can be solved on 64-bit builds by either:
1) On line 279, add <<__attribute__((packed))>> (excluding the angle brackets) to the SDKCtlMessage struct, OR
2) On line 922, replace <<memcpy(msg + 1, data, size);>> with <<memcpy(&(msg->msg_type) + 1, data, size);>>
I prefer the second, because (a) it changes only the code where the copying is being made to the incorrect memory location, (b) it doesn't use gcc-specific extensions, and (c) it makes what the code is trying to do (copy the data to the memory after the msg_type member) explicit, whereas the original code looked as if it was trying to copy the data to the memory after the SDKCtlMessage struct (the two memory locations are identical if the struct alignment is 4 bytes instead of 8, of course).
We was revisiting our code and actually we can say that:
- CPU optimized code is in the native library. From your video the rendering is running correctly.
- user interaction is on the java side. No code is tight to the CPU architecture... that's was the main reason Java and JavaVM was built. Now Dalvik and ART inherit the same philosophy.
I should ask you to better check your emulator environment, maybe enabling the showing of gestures and touch from the developers options.