NekoX/TMessagesProj/jni/voip/tgcalls/platform/android/AndroidContext.cpp

54 lines
1.7 KiB
C++
Raw Normal View History

2020-12-24 06:36:01 +01:00
#include <tgnet/FileLog.h>
2020-08-14 18:58:22 +02:00
#include "AndroidContext.h"
#include "sdk/android/native_api/jni/jvm.h"
namespace tgcalls {
2021-06-25 02:43:10 +02:00
AndroidContext::AndroidContext(JNIEnv *env, jobject instance, bool screencast) {
2023-03-24 12:38:14 +01:00
DEBUG_REF("VideoCapturerDevice");
2021-06-25 02:43:10 +02:00
VideoCapturerDeviceClass = (jclass) env->NewGlobalRef(env->FindClass("org/telegram/messenger/voip/VideoCapturerDevice"));
jmethodID initMethodId = env->GetMethodID(VideoCapturerDeviceClass, "<init>", "(Z)V");
2023-03-24 12:38:14 +01:00
DEBUG_REF("VideoCapturerDevice javaCapturer");
2021-06-25 02:43:10 +02:00
javaCapturer = env->NewGlobalRef(env->NewObject(VideoCapturerDeviceClass, initMethodId, screencast));
2023-03-24 12:38:14 +01:00
DEBUG_REF("VideoCapturerDevice javaInstance");
2020-12-24 06:36:01 +01:00
javaInstance = env->NewGlobalRef(instance);
2020-08-14 18:58:22 +02:00
}
AndroidContext::~AndroidContext() {
JNIEnv *env = webrtc::AttachCurrentThreadIfNeeded();
2021-06-25 02:43:10 +02:00
jmethodID onDestroyMethodId = env->GetMethodID(VideoCapturerDeviceClass, "onDestroy", "()V");
2020-08-14 18:58:22 +02:00
env->CallVoidMethod(javaCapturer, onDestroyMethodId);
2023-03-24 12:38:14 +01:00
DEBUG_DELREF("javaCapturer");
2020-08-14 18:58:22 +02:00
env->DeleteGlobalRef(javaCapturer);
javaCapturer = nullptr;
2023-03-24 12:38:14 +01:00
DEBUG_DELREF("VideoCapturerDeviceClass");
2021-06-25 02:43:10 +02:00
env->DeleteGlobalRef(VideoCapturerDeviceClass);
2020-12-24 06:36:01 +01:00
if (javaInstance) {
2023-03-24 12:38:14 +01:00
DEBUG_DELREF("javaInstance");
2020-12-24 06:36:01 +01:00
env->DeleteGlobalRef(javaInstance);
}
}
void AndroidContext::setJavaInstance(JNIEnv *env, jobject instance) {
2023-03-24 12:38:14 +01:00
DEBUG_REF("setJavaInstance");
2020-12-24 06:36:01 +01:00
javaInstance = env->NewGlobalRef(instance);
}
jobject AndroidContext::getJavaInstance() {
return javaInstance;
2020-08-14 18:58:22 +02:00
}
jobject AndroidContext::getJavaCapturer() {
return javaCapturer;
}
jclass AndroidContext::getJavaCapturerClass() {
2021-06-25 02:43:10 +02:00
return VideoCapturerDeviceClass;
2020-08-14 18:58:22 +02:00
}
} // namespace tgcalls