diff options
Diffstat (limited to 'src/android/jar/src/org/qtproject/qt/android/QtEmbeddedDelegate.java')
-rw-r--r-- | src/android/jar/src/org/qtproject/qt/android/QtEmbeddedDelegate.java | 35 |
1 files changed, 23 insertions, 12 deletions
diff --git a/src/android/jar/src/org/qtproject/qt/android/QtEmbeddedDelegate.java b/src/android/jar/src/org/qtproject/qt/android/QtEmbeddedDelegate.java index 43cde0cb33..e18d0953c3 100644 --- a/src/android/jar/src/org/qtproject/qt/android/QtEmbeddedDelegate.java +++ b/src/android/jar/src/org/qtproject/qt/android/QtEmbeddedDelegate.java @@ -28,6 +28,7 @@ class QtEmbeddedDelegate extends QtActivityDelegateBase implements QtNative.AppS private QtView m_view; private long m_rootWindowRef = 0L; private QtNative.ApplicationStateDetails m_stateDetails; + private boolean m_windowLoaded = false; private static native void createRootWindow(View rootView); static native void deleteWindow(long windowReference); @@ -91,16 +92,18 @@ class QtEmbeddedDelegate extends QtActivityDelegateBase implements QtNative.AppS @Override public void onAppStateDetailsChanged(QtNative.ApplicationStateDetails details) { - m_stateDetails = details; - if (m_stateDetails.nativePluginIntegrationReady) { - QtNative.runAction(() -> { - DisplayMetrics metrics = Resources.getSystem().getDisplayMetrics(); - QtDisplayManager.setApplicationDisplayMetrics(m_activity, - metrics.widthPixels, - metrics.heightPixels); - if (m_view != null) - createRootWindow(m_view); - }); + synchronized (this) { + m_stateDetails = details; + if (m_stateDetails.nativePluginIntegrationReady) { + QtNative.runAction(() -> { + DisplayMetrics metrics = Resources.getSystem().getDisplayMetrics(); + QtDisplayManager.setApplicationDisplayMetrics(m_activity, + metrics.widthPixels, + metrics.heightPixels); + + }); + createRootWindow(); + } } } @@ -130,8 +133,9 @@ class QtEmbeddedDelegate extends QtActivityDelegateBase implements QtNative.AppS public void queueLoadWindow() { - if (m_stateDetails.nativePluginIntegrationReady) { - createRootWindow(m_view); + synchronized (this) { + if (m_stateDetails.nativePluginIntegrationReady) + createRootWindow(); } } @@ -150,4 +154,11 @@ class QtEmbeddedDelegate extends QtActivityDelegateBase implements QtNative.AppS deleteWindow(m_rootWindowRef); m_rootWindowRef = 0L; } + + private void createRootWindow() { + if (m_view != null && !m_windowLoaded) { + createRootWindow(m_view); + m_windowLoaded = true; + } + } } |