From a419d4fbf0f9e6e1b644b281248e4b348ec4ec08 Mon Sep 17 00:00:00 2001 From: Assam Boudjelthia Date: Wed, 22 Nov 2023 15:39:25 +0200 Subject: [PATCH] Android: unregister display manager on onPause or onStop MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Unregister the display manager listener onPause or onStop and register again when onResume is called. Task-number: QTBUG-118077 Change-Id: Ic48defda019fb132ef22a8229c4b549b0414b100 Reviewed-by: Tinja Paavoseppä --- .../jar/src/org/qtproject/qt/android/QtActivityBase.java | 2 ++ .../src/org/qtproject/qt/android/QtDisplayManager.java | 8 +++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/android/jar/src/org/qtproject/qt/android/QtActivityBase.java b/src/android/jar/src/org/qtproject/qt/android/QtActivityBase.java index 37a49238ef8..1a4b0c67031 100644 --- a/src/android/jar/src/org/qtproject/qt/android/QtActivityBase.java +++ b/src/android/jar/src/org/qtproject/qt/android/QtActivityBase.java @@ -120,6 +120,7 @@ public class QtActivityBase extends Activity super.onPause(); if (Build.VERSION.SDK_INT < 24 || !isInMultiWindowMode()) QtNative.setApplicationState(QtNative.ApplicationState.ApplicationInactive); + m_delegate.displayManager().unregisterDisplayListener(); } @Override @@ -128,6 +129,7 @@ public class QtActivityBase extends Activity super.onResume(); QtNative.setApplicationState(QtNative.ApplicationState.ApplicationActive); if (QtNative.getStateDetails().isStarted) { + m_delegate.displayManager().registerDisplayListener(); QtNative.updateWindow(); // Suspending the app clears the immersive mode, so we need to set it again. m_delegate.displayManager().updateFullScreen(); diff --git a/src/android/jar/src/org/qtproject/qt/android/QtDisplayManager.java b/src/android/jar/src/org/qtproject/qt/android/QtDisplayManager.java index 13741764164..a899a1540e9 100644 --- a/src/android/jar/src/org/qtproject/qt/android/QtDisplayManager.java +++ b/src/android/jar/src/org/qtproject/qt/android/QtDisplayManager.java @@ -95,7 +95,6 @@ public class QtDisplayManager { }; } - // TODO: unregister the listener upon activity destruction as well public void registerDisplayListener() { DisplayManager displayManager = @@ -103,6 +102,13 @@ public class QtDisplayManager { displayManager.registerDisplayListener(m_displayListener, null); } + public void unregisterDisplayListener() + { + DisplayManager displayManager = + (DisplayManager) m_activity.getSystemService(Context.DISPLAY_SERVICE); + displayManager.unregisterDisplayListener(m_displayListener); + } + public static int getNativeOrientation(Activity activity, int rotation) { int nativeOrientation;