summaryrefslogtreecommitdiff
path: root/vcl/android/androidinst.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'vcl/android/androidinst.cxx')
-rw-r--r--vcl/android/androidinst.cxx17
1 files changed, 17 insertions, 0 deletions
diff --git a/vcl/android/androidinst.cxx b/vcl/android/androidinst.cxx
index da3889145bb7..1cb11bd7c1e5 100644
--- a/vcl/android/androidinst.cxx
+++ b/vcl/android/androidinst.cxx
@@ -58,10 +58,12 @@ AndroidSalInstance *AndroidSalInstance::getInstance()
AndroidSalInstance::AndroidSalInstance( std::unique_ptr<SalYieldMutex> pMutex )
: SvpSalInstance( std::move(pMutex) )
{
+ // FIXME: remove when uniPoll & runLoop is the only android entry poit.
int res = (lo_get_javavm())->AttachCurrentThread(&m_pJNIEnv, NULL);
LOGI("AttachCurrentThread res=%d env=%p", res, m_pJNIEnv);
}
+// This is never called on Android until app exit.
AndroidSalInstance::~AndroidSalInstance()
{
int res = (lo_get_javavm())->DetachCurrentThread();
@@ -79,6 +81,21 @@ bool AndroidSalInstance::AnyInput( VclInputFlags nType )
return SvpSalInstance::s_pDefaultInstance->HasUserEvents();
}
+void AndroidSalInstance::updateMainThread()
+{
+ int res = (lo_get_javavm())->AttachCurrentThread(&m_pJNIEnv, NULL);
+ LOGI("updateMainThread AttachCurrentThread res=%d env=%p", res, m_pJNIEnv);
+ SvpSalInstance::updateMainThread();
+}
+
+void AndroidSalInstance::releaseMainThread()
+{
+ int res = (lo_get_javavm())->DetachCurrentThread();
+ LOGI("releaseMainThread DetachCurrentThread res=%d", res);
+
+ SvpSalInstance::releaseMainThread();
+}
+
class AndroidSalSystem : public SvpSalSystem {
public:
AndroidSalSystem() : SvpSalSystem() {}