mirror of
https://git.sr.ht/~thestr4ng3r/chiaki
synced 2025-08-14 18:57:07 -07:00
Deliver Events to Activity
This commit is contained in:
parent
251a270277
commit
ba3339bd6c
3 changed files with 18 additions and 6 deletions
|
@ -118,12 +118,13 @@ static void android_chiaki_event_cb(ChiakiEvent *event, void *user)
|
|||
case CHIAKI_EVENT_QUIT:
|
||||
{
|
||||
char *reason_str = strdup_jni(event->quit.reason_str);
|
||||
jstring reason_str_java = E->NewStringUTF(env, reason_str ? reason_str : "");
|
||||
jstring reason_str_java = reason_str ? E->NewStringUTF(env, reason_str) : NULL;
|
||||
E->CallVoidMethod(env, session->java_session,
|
||||
session->java_session_event_quit_meth,
|
||||
(jint)event->quit.reason,
|
||||
reason_str_java);
|
||||
E->DeleteLocalRef(env, reason_str_java);
|
||||
if(reason_str_java)
|
||||
E->DeleteLocalRef(env, reason_str_java);
|
||||
free(reason_str);
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -1,8 +1,10 @@
|
|||
package com.metallic.chiaki
|
||||
|
||||
import android.os.Bundle
|
||||
import android.util.Log
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import com.metallic.chiaki.lib.ConnectInfo
|
||||
import com.metallic.chiaki.lib.Event
|
||||
import com.metallic.chiaki.lib.Session
|
||||
import com.metallic.chiaki.lib.SessionCreateError
|
||||
import kotlinx.android.synthetic.main.activity_stream.*
|
||||
|
@ -31,6 +33,10 @@ class StreamActivity : AppCompatActivity()
|
|||
try
|
||||
{
|
||||
val session = Session(connectInfo)
|
||||
session.eventCallback = {
|
||||
Log.i("StreamActivity", "Got Event $it")
|
||||
}
|
||||
|
||||
session.start()
|
||||
this.session = session
|
||||
}
|
||||
|
|
|
@ -53,13 +53,19 @@ class QuitReason(val value: Int)
|
|||
|
||||
sealed class Event
|
||||
data class LoginPinRequestEvent(val pinIncorrect: Boolean): Event()
|
||||
data class QuitEvent(val reason: QuitReason, val reasonString: String): Event()
|
||||
data class QuitEvent(val reason: QuitReason, val reasonString: String?): Event()
|
||||
|
||||
class SessionCreateError(val errorCode: ErrorCode): Exception("Failed to create Session: $errorCode")
|
||||
|
||||
class Session(connectInfo: ConnectInfo)
|
||||
{
|
||||
interface EventCallback
|
||||
{
|
||||
fun sessionEvent(event: Event)
|
||||
}
|
||||
|
||||
private var nativePtr: Long
|
||||
var eventCallback: ((event: Event) -> Unit)? = null
|
||||
|
||||
init
|
||||
{
|
||||
|
@ -85,8 +91,7 @@ class Session(connectInfo: ConnectInfo)
|
|||
|
||||
private fun event(event: Event)
|
||||
{
|
||||
// TODO: send to callback
|
||||
Log.d("ChiakiJNI", "Got event $event")
|
||||
eventCallback?.let { it(event) }
|
||||
}
|
||||
|
||||
private fun eventLoginPinRequest(pinIncorrect: Boolean)
|
||||
|
@ -94,7 +99,7 @@ class Session(connectInfo: ConnectInfo)
|
|||
event(LoginPinRequestEvent(pinIncorrect))
|
||||
}
|
||||
|
||||
private fun eventQuit(reasonValue: Int, reasonString: String)
|
||||
private fun eventQuit(reasonValue: Int, reasonString: String?)
|
||||
{
|
||||
event(QuitEvent(QuitReason(reasonValue), reasonString))
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue