Skip to content

Commit e638c5d

Browse files
reuktpoole
authored andcommitted
Android: Avoid restarting activities on system-wide theme change
1 parent f72bad6 commit e638c5d

File tree

6 files changed

+19
-12
lines changed

6 files changed

+19
-12
lines changed

examples/DemoRunner/Builds/Android/app/src/main/AndroidManifest.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
<uses-feature android:glEsVersion="0x00030000" android:required="true"/>
2424
<application android:label="@string/app_name" android:name="com.rmsl.juce.JuceApp" android:icon="@drawable/icon" android:hardwareAccelerated="false">
2525
<receiver android:name="com.rmsl.juce.Receiver" android:exported="false"/>
26-
<activity android:name="com.rmsl.juce.JuceActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenSize|navigation|smallestScreenSize|screenLayout"
26+
<activity android:name="com.rmsl.juce.JuceActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenSize|navigation|smallestScreenSize|screenLayout|uiMode"
2727
android:launchMode="singleTask" android:hardwareAccelerated="true" android:exported="true">
2828
<intent-filter>
2929
<action android:name="android.intent.action.MAIN"/>

extras/AudioPerformanceTest/Builds/Android/app/src/main/AndroidManifest.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
<uses-permission android:name="android.permission.INTERNET"/>
1414
<application android:label="@string/app_name" android:name="com.rmsl.juce.JuceApp" android:hardwareAccelerated="false">
1515
<receiver android:name="com.rmsl.juce.Receiver" android:exported="false"/>
16-
<activity android:name="com.rmsl.juce.JuceActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenSize|navigation|smallestScreenSize|screenLayout"
16+
<activity android:name="com.rmsl.juce.JuceActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenSize|navigation|smallestScreenSize|screenLayout|uiMode"
1717
android:launchMode="singleTask" android:hardwareAccelerated="true" android:exported="true">
1818
<intent-filter>
1919
<action android:name="android.intent.action.MAIN"/>

extras/AudioPluginHost/Builds/Android/app/src/main/AndroidManifest.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
<uses-feature android:glEsVersion="0x00030000" android:required="true"/>
2323
<application android:label="@string/app_name" android:name="com.rmsl.juce.JuceApp" android:icon="@drawable/icon" android:hardwareAccelerated="false">
2424
<receiver android:name="com.rmsl.juce.Receiver" android:exported="false"/>
25-
<activity android:name="com.rmsl.juce.JuceActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenSize|navigation|smallestScreenSize|screenLayout"
25+
<activity android:name="com.rmsl.juce.JuceActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenSize|navigation|smallestScreenSize|screenLayout|uiMode"
2626
android:launchMode="singleTask" android:hardwareAccelerated="true" android:exported="true">
2727
<intent-filter>
2828
<action android:name="android.intent.action.MAIN"/>

extras/NetworkGraphicsDemo/Builds/Android/app/src/main/AndroidManifest.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
<uses-feature android:glEsVersion="0x00030000" android:required="true"/>
1515
<application android:label="@string/app_name" android:name="com.rmsl.juce.JuceApp" android:icon="@drawable/icon" android:hardwareAccelerated="false">
1616
<receiver android:name="com.rmsl.juce.Receiver" android:exported="false"/>
17-
<activity android:name="com.rmsl.juce.JuceActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenSize|navigation|smallestScreenSize|screenLayout"
17+
<activity android:name="com.rmsl.juce.JuceActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenSize|navigation|smallestScreenSize|screenLayout|uiMode"
1818
android:launchMode="singleTask" android:hardwareAccelerated="true" android:exported="true">
1919
<intent-filter>
2020
<action android:name="android.intent.action.MAIN"/>

extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Android.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1846,7 +1846,7 @@ class AndroidProjectExporter final : public ProjectExporter
18461846
setAttributeIfNotPresent (*act, "android:name", getActivityClassString());
18471847

18481848
if (! act->hasAttribute ("android:configChanges"))
1849-
act->setAttribute ("android:configChanges", "keyboard|keyboardHidden|orientation|screenSize|navigation|smallestScreenSize|screenLayout");
1849+
act->setAttribute ("android:configChanges", "keyboard|keyboardHidden|orientation|screenSize|navigation|smallestScreenSize|screenLayout|uiMode");
18501850

18511851
if (androidScreenOrientation.get() != "unspecified")
18521852
{

modules/juce_gui_basics/native/juce_Windowing_android.cpp

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2562,18 +2562,25 @@ class Desktop::NativeDarkModeChangeDetectorImpl : private ActivityLifecycleCall
25622562

25632563
bool isDarkModeEnabled() const noexcept { return darkModeEnabled; }
25642564

2565-
void onActivityStarted (jobject /*activity*/) override
2565+
private:
2566+
void onActivityStarted (jobject) override
25662567
{
2567-
const auto isEnabled = getDarkModeSetting();
2568+
updateMode();
2569+
}
25682570

2569-
if (darkModeEnabled != isEnabled)
2570-
{
2571-
darkModeEnabled = isEnabled;
2571+
void onActivityConfigurationChanged (jobject) override
2572+
{
2573+
updateMode();
2574+
}
2575+
2576+
void updateMode()
2577+
{
2578+
const auto current = getDarkModeSetting();
2579+
2580+
if (std::exchange (darkModeEnabled, current) != current)
25722581
Desktop::getInstance().darkModeChanged();
2573-
}
25742582
}
25752583

2576-
private:
25772584
static bool getDarkModeSetting()
25782585
{
25792586
auto* env = getEnv();

0 commit comments

Comments
 (0)