Loading core/java/android/app/ActivityThread.java +31 −1 Original line number Diff line number Diff line Loading @@ -80,6 +80,7 @@ import android.graphics.Canvas; import android.graphics.HardwareRenderer; import android.graphics.ImageDecoder; import android.hardware.display.DisplayManagerGlobal; import android.inputmethodservice.InputMethodService; import android.net.ConnectivityManager; import android.net.IConnectivityManager; import android.net.Proxy; Loading Loading @@ -455,6 +456,8 @@ public final class ActivityThread extends ClientTransactionHandler { Bundle mCoreSettings = null; boolean mHasImeComponent = false; /** Activity client record, used for bookkeeping for the real {@link Activity} instance. */ public static final class ActivityClientRecord { @UnsupportedAppUsage Loading Loading @@ -5360,7 +5363,11 @@ public final class ActivityThread extends ClientTransactionHandler { } final int NSVC = mServices.size(); for (int i=0; i<NSVC; i++) { callbacks.add(mServices.valueAt(i)); final ComponentCallbacks2 serviceComp = mServices.valueAt(i); if (serviceComp instanceof InputMethodService) { mHasImeComponent = true; } callbacks.add(serviceComp); } } synchronized (mProviderMap) { Loading Loading @@ -5600,6 +5607,10 @@ public final class ActivityThread extends ClientTransactionHandler { } if (config == null) { // TODO (b/135719017): Temporary log for debugging IME service. if (Build.IS_DEBUGGABLE && mHasImeComponent) { Log.w(TAG, "handleConfigurationChanged for IME app but config is null"); } return; } Loading @@ -5621,6 +5632,12 @@ public final class ActivityThread extends ClientTransactionHandler { mConfiguration = new Configuration(); } if (!mConfiguration.isOtherSeqNewer(config) && compat == null) { // TODO (b/135719017): Temporary log for debugging IME service. if (Build.IS_DEBUGGABLE && mHasImeComponent) { Log.w(TAG, "handleConfigurationChanged for IME app but config seq is obsolete " + ", config=" + config + ", mConfiguration=" + mConfiguration); } return; } Loading Loading @@ -5652,6 +5669,13 @@ public final class ActivityThread extends ClientTransactionHandler { config); } else if (!equivalent) { performConfigurationChanged(cb, config); } else { // TODO (b/135719017): Temporary log for debugging IME service. if (Build.IS_DEBUGGABLE && cb instanceof InputMethodService) { Log.w(TAG, "performConfigurationChanged didn't callback to IME " + ", configDiff=" + configDiff + ", mConfiguration=" + mConfiguration); } } } } Loading Loading @@ -7142,6 +7166,12 @@ public final class ActivityThread extends ClientTransactionHandler { ViewRootImpl.ConfigChangedCallback configChangedCallback = (Configuration globalConfig) -> { synchronized (mResourcesManager) { // TODO (b/135719017): Temporary log for debugging IME service. if (Build.IS_DEBUGGABLE && mHasImeComponent) { Log.d(TAG, "ViewRootImpl.ConfigChangedCallback for IME, " + "config=" + globalConfig); } // We need to apply this change to the resources immediately, because upon returning // the view hierarchy will be informed about it. if (mResourcesManager.applyConfigurationToResourcesLocked(globalConfig, Loading services/core/java/com/android/server/wm/ActivityTaskManagerService.java +1 −0 Original line number Diff line number Diff line Loading @@ -6487,6 +6487,7 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub { } return; } process.mIsImeProcess = true; process.registerDisplayConfigurationListenerLocked(activityDisplay); } } Loading services/core/java/com/android/server/wm/WindowProcessController.java +18 −0 Original line number Diff line number Diff line Loading @@ -50,6 +50,7 @@ import android.content.Intent; import android.content.pm.ActivityInfo; import android.content.pm.ApplicationInfo; import android.content.res.Configuration; import android.os.Build; import android.os.Message; import android.os.RemoteException; import android.os.SystemClock; Loading Loading @@ -160,6 +161,8 @@ public class WindowProcessController extends ConfigurationContainer<Configuratio // Thread currently set for VR scheduling int mVrThreadTid; boolean mIsImeProcess; // all activities running in the process private final ArrayList<ActivityRecord> mActivities = new ArrayList<>(); // any tasks this process had run root activities in Loading Loading @@ -954,17 +957,32 @@ public class WindowProcessController extends ConfigurationContainer<Configuratio final Configuration config = getConfiguration(); if (mLastReportedConfiguration.diff(config) == 0) { // Nothing changed. if (Build.IS_DEBUGGABLE && mIsImeProcess) { // TODO (b/135719017): Temporary log for debugging IME service. Slog.w(TAG_CONFIGURATION, "Current config: " + config + " unchanged for IME proc " + mName); } return; } try { if (mThread == null) { if (Build.IS_DEBUGGABLE && mIsImeProcess) { // TODO (b/135719017): Temporary log for debugging IME service. Slog.w(TAG_CONFIGURATION, "Unable to send config for IME proc " + mName + ": no app thread"); } return; } if (DEBUG_CONFIGURATION) { Slog.v(TAG_CONFIGURATION, "Sending to proc " + mName + " new config " + config); } if (Build.IS_DEBUGGABLE && mIsImeProcess) { // TODO (b/135719017): Temporary log for debugging IME service. Slog.v(TAG_CONFIGURATION, "Sending to IME proc " + mName + " new config " + config); } config.seq = mAtm.increaseConfigurationSeqLocked(); mAtm.getLifecycleManager().scheduleTransaction(mThread, ConfigurationChangeItem.obtain(config)); Loading Loading
core/java/android/app/ActivityThread.java +31 −1 Original line number Diff line number Diff line Loading @@ -80,6 +80,7 @@ import android.graphics.Canvas; import android.graphics.HardwareRenderer; import android.graphics.ImageDecoder; import android.hardware.display.DisplayManagerGlobal; import android.inputmethodservice.InputMethodService; import android.net.ConnectivityManager; import android.net.IConnectivityManager; import android.net.Proxy; Loading Loading @@ -455,6 +456,8 @@ public final class ActivityThread extends ClientTransactionHandler { Bundle mCoreSettings = null; boolean mHasImeComponent = false; /** Activity client record, used for bookkeeping for the real {@link Activity} instance. */ public static final class ActivityClientRecord { @UnsupportedAppUsage Loading Loading @@ -5360,7 +5363,11 @@ public final class ActivityThread extends ClientTransactionHandler { } final int NSVC = mServices.size(); for (int i=0; i<NSVC; i++) { callbacks.add(mServices.valueAt(i)); final ComponentCallbacks2 serviceComp = mServices.valueAt(i); if (serviceComp instanceof InputMethodService) { mHasImeComponent = true; } callbacks.add(serviceComp); } } synchronized (mProviderMap) { Loading Loading @@ -5600,6 +5607,10 @@ public final class ActivityThread extends ClientTransactionHandler { } if (config == null) { // TODO (b/135719017): Temporary log for debugging IME service. if (Build.IS_DEBUGGABLE && mHasImeComponent) { Log.w(TAG, "handleConfigurationChanged for IME app but config is null"); } return; } Loading @@ -5621,6 +5632,12 @@ public final class ActivityThread extends ClientTransactionHandler { mConfiguration = new Configuration(); } if (!mConfiguration.isOtherSeqNewer(config) && compat == null) { // TODO (b/135719017): Temporary log for debugging IME service. if (Build.IS_DEBUGGABLE && mHasImeComponent) { Log.w(TAG, "handleConfigurationChanged for IME app but config seq is obsolete " + ", config=" + config + ", mConfiguration=" + mConfiguration); } return; } Loading Loading @@ -5652,6 +5669,13 @@ public final class ActivityThread extends ClientTransactionHandler { config); } else if (!equivalent) { performConfigurationChanged(cb, config); } else { // TODO (b/135719017): Temporary log for debugging IME service. if (Build.IS_DEBUGGABLE && cb instanceof InputMethodService) { Log.w(TAG, "performConfigurationChanged didn't callback to IME " + ", configDiff=" + configDiff + ", mConfiguration=" + mConfiguration); } } } } Loading Loading @@ -7142,6 +7166,12 @@ public final class ActivityThread extends ClientTransactionHandler { ViewRootImpl.ConfigChangedCallback configChangedCallback = (Configuration globalConfig) -> { synchronized (mResourcesManager) { // TODO (b/135719017): Temporary log for debugging IME service. if (Build.IS_DEBUGGABLE && mHasImeComponent) { Log.d(TAG, "ViewRootImpl.ConfigChangedCallback for IME, " + "config=" + globalConfig); } // We need to apply this change to the resources immediately, because upon returning // the view hierarchy will be informed about it. if (mResourcesManager.applyConfigurationToResourcesLocked(globalConfig, Loading
services/core/java/com/android/server/wm/ActivityTaskManagerService.java +1 −0 Original line number Diff line number Diff line Loading @@ -6487,6 +6487,7 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub { } return; } process.mIsImeProcess = true; process.registerDisplayConfigurationListenerLocked(activityDisplay); } } Loading
services/core/java/com/android/server/wm/WindowProcessController.java +18 −0 Original line number Diff line number Diff line Loading @@ -50,6 +50,7 @@ import android.content.Intent; import android.content.pm.ActivityInfo; import android.content.pm.ApplicationInfo; import android.content.res.Configuration; import android.os.Build; import android.os.Message; import android.os.RemoteException; import android.os.SystemClock; Loading Loading @@ -160,6 +161,8 @@ public class WindowProcessController extends ConfigurationContainer<Configuratio // Thread currently set for VR scheduling int mVrThreadTid; boolean mIsImeProcess; // all activities running in the process private final ArrayList<ActivityRecord> mActivities = new ArrayList<>(); // any tasks this process had run root activities in Loading Loading @@ -954,17 +957,32 @@ public class WindowProcessController extends ConfigurationContainer<Configuratio final Configuration config = getConfiguration(); if (mLastReportedConfiguration.diff(config) == 0) { // Nothing changed. if (Build.IS_DEBUGGABLE && mIsImeProcess) { // TODO (b/135719017): Temporary log for debugging IME service. Slog.w(TAG_CONFIGURATION, "Current config: " + config + " unchanged for IME proc " + mName); } return; } try { if (mThread == null) { if (Build.IS_DEBUGGABLE && mIsImeProcess) { // TODO (b/135719017): Temporary log for debugging IME service. Slog.w(TAG_CONFIGURATION, "Unable to send config for IME proc " + mName + ": no app thread"); } return; } if (DEBUG_CONFIGURATION) { Slog.v(TAG_CONFIGURATION, "Sending to proc " + mName + " new config " + config); } if (Build.IS_DEBUGGABLE && mIsImeProcess) { // TODO (b/135719017): Temporary log for debugging IME service. Slog.v(TAG_CONFIGURATION, "Sending to IME proc " + mName + " new config " + config); } config.seq = mAtm.increaseConfigurationSeqLocked(); mAtm.getLifecycleManager().scheduleTransaction(mThread, ConfigurationChangeItem.obtain(config)); Loading