Fixed samples for 0.9 (#2002)

This commit is contained in:
Sergey Bogolepov
2018-09-04 18:51:47 +07:00
committed by GitHub
parent 00f0ea97ed
commit 918d131285
5 changed files with 52 additions and 51 deletions
@@ -22,11 +22,11 @@ import platform.gles3.*
import platform.linux.* import platform.linux.*
fun logError(message: String) { fun logError(message: String) {
__android_log_write(ANDROID_LOG_ERROR, "KonanActivity", message) __android_log_write(ANDROID_LOG_ERROR.convert(), "KonanActivity", message)
} }
fun logInfo(message: String) { fun logInfo(message: String) {
__android_log_write(ANDROID_LOG_INFO, "KonanActivity", message) __android_log_write(ANDROID_LOG_INFO.convert(), "KonanActivity", message)
} }
private fun getUnixError() = strerror(posix_errno())!!.toKString() private fun getUnixError() = strerror(posix_errno())!!.toKString()
@@ -109,7 +109,7 @@ class Engine(val state: NativeActivityState): DisposableContainer() {
} }
private fun processSysEvent(fd: IntVar): Boolean { private fun processSysEvent(fd: IntVar): Boolean {
val readBytes = read(fd.value, eventPointer.ptr, pointerSize.narrow()).toLong() val readBytes = read(fd.value, eventPointer.ptr, pointerSize.convert()).toLong()
if (readBytes != pointerSize.toLong()) { if (readBytes != pointerSize.toLong()) {
logError("Failure reading event, $readBytes read: ${getUnixError()}") logError("Failure reading event, $readBytes read: ${getUnixError()}")
return true return true
@@ -163,12 +163,12 @@ class Engine(val state: NativeActivityState): DisposableContainer() {
NativeActivityEventKind.SAVE_INSTANCE_STATE -> { NativeActivityEventKind.SAVE_INSTANCE_STATE -> {
val saveStateEvent = eventPointer.value.dereferenceAs<NativeActivitySaveStateEvent>() val saveStateEvent = eventPointer.value.dereferenceAs<NativeActivitySaveStateEvent>()
val state = renderer.getState() val state = renderer.getState()
val dataSize = state.second.signExtend<size_t>() val dataSize = state.second
rendererState = realloc(rendererState, dataSize) rendererState = realloc(rendererState, dataSize.convert())
memcpy(rendererState, state.first, dataSize) memcpy(rendererState, state.first, dataSize.convert())
logInfo("Saving instance state to $rendererState: $dataSize bytes") logInfo("Saving instance state to $rendererState: $dataSize bytes")
saveStateEvent.savedState = rendererState saveStateEvent.savedState = rendererState
saveStateEvent.savedStateSize = dataSize saveStateEvent.savedStateSize = dataSize.convert()
} }
} }
} finally { } finally {
@@ -183,7 +183,7 @@ class Engine(val state: NativeActivityState): DisposableContainer() {
} }
private fun getEventPoint(event: CPointer<AInputEvent>?, i: Int) = private fun getEventPoint(event: CPointer<AInputEvent>?, i: Int) =
Vector2(AMotionEvent_getRawX(event, i.signExtend<size_t>()), AMotionEvent_getRawY(event, i.signExtend<size_t>())) Vector2(AMotionEvent_getRawX(event, i.convert()), AMotionEvent_getRawY(event, i.convert()))
private fun getEventTime(event: CPointer<AInputEvent>?) = private fun getEventTime(event: CPointer<AInputEvent>?) =
AMotionEvent_getEventTime(event) / 1_000_000_000.0f AMotionEvent_getEventTime(event) / 1_000_000_000.0f
@@ -195,8 +195,8 @@ class Engine(val state: NativeActivityState): DisposableContainer() {
} }
val event = inputEvent.value val event = inputEvent.value
val eventType = AInputEvent_getType(event) val eventType = AInputEvent_getType(event)
if (eventType == AINPUT_EVENT_TYPE_MOTION) { if (eventType.toUInt() == AINPUT_EVENT_TYPE_MOTION) {
val action = AKeyEvent_getAction(event) and AMOTION_EVENT_ACTION_MASK val action = AKeyEvent_getAction(event).toUInt() and AMOTION_EVENT_ACTION_MASK
when (action) { when (action) {
AMOTION_EVENT_ACTION_DOWN -> { AMOTION_EVENT_ACTION_DOWN -> {
animating = false animating = false
@@ -24,8 +24,10 @@ data class JniMethod(val jmethod: jmethodID)
fun asJniClass(jclass: jclass?) = fun asJniClass(jclass: jclass?) =
if (jclass != null) JniClass(jclass) else null if (jclass != null) JniClass(jclass) else null
fun asJniObject(jobject: jobject?) = fun asJniObject(jobject: jobject?) =
if (jobject != null) JniObject(jobject) else null if (jobject != null) JniObject(jobject) else null
fun asJniMethod(jmethodID: jmethodID?) = fun asJniMethod(jmethodID: jmethodID?) =
if (jmethodID != null) JniMethod(jmethodID) else null if (jmethodID != null) JniMethod(jmethodID) else null
@@ -52,7 +54,7 @@ class JniBridge(val vm: CPointer<JavaVMVar>) {
val fPopLocalFrame = envFunctions.PopLocalFrame!! val fPopLocalFrame = envFunctions.PopLocalFrame!!
private fun check() { private fun check() {
if (fExceptionCheck(jniEnv) != 0.toByte()) { if (fExceptionCheck(jniEnv) != 0.toUByte()) {
fExceptionDescribe(jniEnv) fExceptionDescribe(jniEnv)
fExceptionClear(jniEnv) fExceptionClear(jniEnv)
throw Error("JVM exception thrown") throw Error("JVM exception thrown")
@@ -87,7 +87,7 @@ class Renderer(val container: DisposableContainer,
logError("eglGetDisplay() returned error ${eglGetError()}") logError("eglGetDisplay() returned error ${eglGetError()}")
return false return false
} }
if (eglInitialize(display, null, null) == 0) { if (eglInitialize(display, null, null) == 0u) {
logError("eglInitialize() returned error ${eglGetError()}") logError("eglInitialize() returned error ${eglGetError()}")
return false return false
} }
@@ -100,11 +100,11 @@ class Renderer(val container: DisposableContainer,
EGL_NONE EGL_NONE
) )
val numConfigs = alloc<EGLintVar>() val numConfigs = alloc<EGLintVar>()
if (eglChooseConfig(display, attribs, null, 0, numConfigs.ptr) == 0) { if (eglChooseConfig(display, attribs, null, 0, numConfigs.ptr) == 0u) {
throw Error("eglChooseConfig()#1 returned error ${eglGetError()}") throw Error("eglChooseConfig()#1 returned error ${eglGetError()}")
} }
val supportedConfigs = allocArray<EGLConfigVar>(numConfigs.value) val supportedConfigs = allocArray<EGLConfigVar>(numConfigs.value)
if (eglChooseConfig(display, attribs, supportedConfigs, numConfigs.value, numConfigs.ptr) == 0) { if (eglChooseConfig(display, attribs, supportedConfigs, numConfigs.value, numConfigs.ptr) == 0u) {
throw Error("eglChooseConfig()#2 returned error ${eglGetError()}") throw Error("eglChooseConfig()#2 returned error ${eglGetError()}")
} }
var configIndex = 0 var configIndex = 0
@@ -113,10 +113,10 @@ class Renderer(val container: DisposableContainer,
val g = alloc<EGLintVar>() val g = alloc<EGLintVar>()
val b = alloc<EGLintVar>() val b = alloc<EGLintVar>()
val d = alloc<EGLintVar>() val d = alloc<EGLintVar>()
if (eglGetConfigAttrib(display, supportedConfigs[configIndex], EGL_RED_SIZE, r.ptr) != 0 && if (eglGetConfigAttrib(display, supportedConfigs[configIndex], EGL_RED_SIZE, r.ptr) != 0u &&
eglGetConfigAttrib(display, supportedConfigs[configIndex], EGL_GREEN_SIZE, g.ptr) != 0 && eglGetConfigAttrib (display, supportedConfigs[configIndex], EGL_GREEN_SIZE, g.ptr) != 0u &&
eglGetConfigAttrib(display, supportedConfigs[configIndex], EGL_BLUE_SIZE, b.ptr) != 0 && eglGetConfigAttrib(display, supportedConfigs[configIndex], EGL_BLUE_SIZE, b.ptr) != 0u &&
eglGetConfigAttrib(display, supportedConfigs[configIndex], EGL_DEPTH_SIZE, d.ptr) != 0 && eglGetConfigAttrib(display, supportedConfigs[configIndex], EGL_DEPTH_SIZE, d.ptr) != 0u &&
r.value == 8 && g.value == 8 && b.value == 8 && d.value == 0) break r.value == 8 && g.value == 8 && b.value == 8 && d.value == 0) break
++configIndex ++configIndex
} }
@@ -133,14 +133,14 @@ class Renderer(val container: DisposableContainer,
throw Error("eglCreateContext() returned error ${eglGetError()}") throw Error("eglCreateContext() returned error ${eglGetError()}")
} }
if (eglMakeCurrent(display, surface, surface, context) == 0) { if (eglMakeCurrent(display, surface, surface, context) == 0u) {
throw Error("eglMakeCurrent() returned error ${eglGetError()}") throw Error("eglMakeCurrent() returned error ${eglGetError()}")
} }
val width = alloc<EGLintVar>() val width = alloc<EGLintVar>()
val height = alloc<EGLintVar>() val height = alloc<EGLintVar>()
if (eglQuerySurface(display, surface, EGL_WIDTH, width.ptr) == 0 if (eglQuerySurface(display, surface, EGL_WIDTH, width.ptr) == 0u
|| eglQuerySurface(display, surface, EGL_HEIGHT, height.ptr) == 0) { || eglQuerySurface (display, surface, EGL_HEIGHT, height.ptr) == 0u) {
throw Error("eglQuerySurface() returned error ${eglGetError()}") throw Error("eglQuerySurface() returned error ${eglGetError()}")
} }
@@ -198,14 +198,13 @@ class Renderer(val container: DisposableContainer,
} }
private fun loadTexture(assetName: String): Unit = memScoped { private fun loadTexture(assetName: String): Unit = memScoped {
val asset = AAssetManager_open(nativeActivity.assetManager, assetName, AASSET_MODE_BUFFER) val asset = AAssetManager_open(nativeActivity.assetManager, assetName, AASSET_MODE_BUFFER.convert())
?: throw Error("Error opening asset $assetName") ?: throw Error("Error opening asset $assetName")
try { try {
val length = AAsset_getLength(asset) val length = AAsset_getLength(asset)
val buffer = allocArray<ByteVar>(length) val buffer = allocArray<ByteVar>(length)
if (AAsset_read(asset, buffer, length) != length.toInt()) { if (AAsset_read(asset, buffer, length.convert()) != length.toInt()) {
throw Error("Error reading asset") throw Error("Error reading asset")
} }
with(BMPHeader(buffer.rawValue)) { with(BMPHeader(buffer.rawValue)) {
@@ -247,7 +246,7 @@ class Renderer(val container: DisposableContainer,
glMultMatrixf(matrix) glMultMatrixf(matrix)
glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT) glClear((GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT).toUInt())
glEnableClientState(GL_VERTEX_ARRAY) glEnableClientState(GL_VERTEX_ARRAY)
glEnableClientState(GL_NORMAL_ARRAY) glEnableClientState(GL_NORMAL_ARRAY)
@@ -289,15 +288,15 @@ class Renderer(val container: DisposableContainer,
glPopMatrix() glPopMatrix()
if (eglSwapBuffers(display, surface) == 0) { if (eglSwapBuffers(display, surface) == 0u) {
val error = eglGetError() val error = eglGetError()
if (error != EGL_BAD_SURFACE) if (error != EGL_BAD_SURFACE)
throw Error("eglSwapBuffers() returned error $error") throw Error("eglSwapBuffers() returned error $error")
else { else {
if (eglMakeCurrent(display, surface, surface, context) == 0) { if (eglMakeCurrent(display, surface, surface, context) == 0u) {
throw Error("Reinit eglMakeCurrent() returned error ${eglGetError()}") throw Error("Reinit eglMakeCurrent() returned error ${eglGetError()}")
} }
if (eglSwapBuffers(display, surface) == 0) if (eglSwapBuffers(display, surface) == 0u)
throw Error("Bad eglSwapBuffers() after surface reinit: ${eglGetError()}") throw Error("Bad eglSwapBuffers() after surface reinit: ${eglGetError()}")
} }
} }
@@ -306,7 +305,7 @@ class Renderer(val container: DisposableContainer,
fun start() { fun start() {
logInfo("Starting renderer..") logInfo("Starting renderer..")
if (initialized) { if (initialized) {
if (eglMakeCurrent(display, surface, surface, context) == 0) { if (eglMakeCurrent(display, surface, surface, context) == 0u) {
throw Error("eglMakeCurrent() returned error ${eglGetError()}") throw Error("eglMakeCurrent() returned error ${eglGetError()}")
} }
} }
+2 -2
View File
@@ -6,5 +6,5 @@ source "$DIR/../konan.sh"
PYTHON=python PYTHON=python
konanc -p dynamic src/main/kotlin/Server.kt -o server konanc -p dynamic ${DIR}/src/main/kotlin/Server.kt -o server
sudo $PYTHON src/main/python/setup.py install sudo $PYTHON ${DIR}/src/main/python/setup.py install
+1 -1
View File
@@ -28,7 +28,7 @@ object MNIST {
val file = fopen(path, "rb") ?: fail() val file = fopen(path, "rb") ?: fail()
try { try {
ByteArray(size).also { fread(it.refTo(0), 1, size.signExtend(), file) } ByteArray(size).also { fread(it.refTo(0), 1, size.convert(), file) }
} finally { } finally {
fclose(file) fclose(file)
} }