diff options
Diffstat (limited to 'src')
| -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 975b26b915e..74617706f9f 100644 --- a/src/android/jar/src/org/qtproject/qt/android/QtEmbeddedDelegate.java +++ b/src/android/jar/src/org/qtproject/qt/android/QtEmbeddedDelegate.java @@ -26,6 +26,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); @@ -89,16 +90,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(); +            }          }      } @@ -128,8 +131,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();          }      } @@ -148,4 +152,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; +        } +    }  }  | 
