mirror of
https://git.sr.ht/~thestr4ng3r/chiaki
synced 2025-08-14 02:36:51 -07:00
Free Session on Android
This commit is contained in:
parent
093cd6e443
commit
cb65009f59
3 changed files with 55 additions and 7 deletions
|
@ -121,8 +121,29 @@ beach:
|
|||
E->SetLongField(env, result, E->GetFieldID(env, result_class, "sessionPtr", "J"), (jlong)session);
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL Java_com_metallic_chiaki_lib_ChiakiNative_sessionFree(JNIEnv *env, jobject obj, jlong ptr)
|
||||
{
|
||||
ChiakiSession *session = (ChiakiSession *)ptr;
|
||||
if(!session)
|
||||
return;
|
||||
chiaki_session_fini(session);
|
||||
free(session);
|
||||
}
|
||||
|
||||
JNIEXPORT jint JNICALL Java_com_metallic_chiaki_lib_ChiakiNative_sessionStart(JNIEnv *env, jobject obj, jlong ptr)
|
||||
{
|
||||
ChiakiSession *session = (ChiakiSession *)ptr;
|
||||
return chiaki_session_start(session);
|
||||
}
|
||||
}
|
||||
|
||||
JNIEXPORT jint JNICALL Java_com_metallic_chiaki_lib_ChiakiNative_sessionStop(JNIEnv *env, jobject obj, jlong ptr)
|
||||
{
|
||||
ChiakiSession *session = (ChiakiSession *)ptr;
|
||||
return chiaki_session_stop(session);
|
||||
}
|
||||
|
||||
JNIEXPORT jint JNICALL Java_com_metallic_chiaki_lib_ChiakiNative_sessionJoin(JNIEnv *env, jobject obj, jlong ptr)
|
||||
{
|
||||
ChiakiSession *session = (ChiakiSession *)ptr;
|
||||
return chiaki_session_join(session);
|
||||
}
|
||||
|
|
|
@ -4,6 +4,7 @@ import android.os.Bundle
|
|||
import androidx.appcompat.app.AppCompatActivity
|
||||
import com.metallic.chiaki.lib.ConnectInfo
|
||||
import com.metallic.chiaki.lib.Session
|
||||
import com.metallic.chiaki.lib.SessionCreateError
|
||||
import kotlinx.android.synthetic.main.activity_stream.*
|
||||
|
||||
class StreamActivity : AppCompatActivity()
|
||||
|
@ -13,7 +14,7 @@ class StreamActivity : AppCompatActivity()
|
|||
const val EXTRA_CONNECT_INFO = "connect_info"
|
||||
}
|
||||
|
||||
private lateinit var session: Session
|
||||
private var session: Session? = null
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?)
|
||||
{
|
||||
|
@ -27,8 +28,24 @@ class StreamActivity : AppCompatActivity()
|
|||
return
|
||||
}
|
||||
|
||||
session = Session(connectInfo)
|
||||
session.start()
|
||||
try
|
||||
{
|
||||
val session = Session(connectInfo)
|
||||
session.start()
|
||||
this.session = session
|
||||
}
|
||||
catch(e: SessionCreateError)
|
||||
{
|
||||
// TODO: handle error
|
||||
}
|
||||
|
||||
testTextView.text = ""
|
||||
}
|
||||
|
||||
override fun onDestroy()
|
||||
{
|
||||
super.onDestroy()
|
||||
session?.stop()
|
||||
session?.dispose()
|
||||
}
|
||||
}
|
||||
|
|
|
@ -31,7 +31,10 @@ class ChiakiNative
|
|||
}
|
||||
@JvmStatic external fun errorCodeToString(value: Int): String
|
||||
@JvmStatic external fun sessionCreate(result: SessionCreateResult, connectInfo: ConnectInfo)
|
||||
@JvmStatic external fun sessionFree(ptr: Long)
|
||||
@JvmStatic external fun sessionStart(ptr: Long): Int
|
||||
@JvmStatic external fun sessionStop(ptr: Long): Int
|
||||
@JvmStatic external fun sessionJoin(ptr: Long): Int
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -45,7 +48,7 @@ class SessionCreateError(val errorCode: ErrorCode): Exception("Failed to create
|
|||
|
||||
class Session(connectInfo: ConnectInfo)
|
||||
{
|
||||
private val nativePtr: Long
|
||||
private var nativePtr: Long
|
||||
|
||||
init
|
||||
{
|
||||
|
@ -57,8 +60,15 @@ class Session(connectInfo: ConnectInfo)
|
|||
nativePtr = result.sessionPtr
|
||||
}
|
||||
|
||||
fun start()
|
||||
fun start() = ErrorCode(ChiakiNative.sessionStart(nativePtr))
|
||||
fun stop() = ErrorCode(ChiakiNative.sessionStop(nativePtr))
|
||||
|
||||
fun dispose()
|
||||
{
|
||||
ChiakiNative.sessionStart(nativePtr)
|
||||
if(nativePtr == 0L)
|
||||
return
|
||||
ChiakiNative.sessionJoin(nativePtr)
|
||||
ChiakiNative.sessionFree(nativePtr)
|
||||
nativePtr = 0L
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue