Merge "Fix issue with TV PIP clobbering resize on orientation change." into oc-dev

This commit is contained in:
TreeHugger Robot
2017-05-23 16:54:44 +00:00
committed by Android (Google) Code Review
4 changed files with 18 additions and 7 deletions

View File

@@ -17,12 +17,13 @@
package com.android.systemui.pip;
import android.content.Context;
import android.content.res.Configuration;
import java.io.PrintWriter;
public interface BasePipManager {
void initialize(Context context);
void showPictureInPictureMenu();
void onConfigurationChanged();
void onConfigurationChanged(Configuration newConfig);
void dump(PrintWriter pw);
}

View File

@@ -72,7 +72,7 @@ public class PipUI extends SystemUI implements CommandQueue.Callbacks {
return;
}
mPipManager.onConfigurationChanged();
mPipManager.onConfigurationChanged(newConfig);
}
@Override

View File

@@ -25,6 +25,7 @@ import android.app.IActivityManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.pm.ParceledListSlice;
import android.content.res.Configuration;
import android.graphics.Rect;
import android.os.Handler;
import android.os.RemoteException;
@@ -196,7 +197,7 @@ public class PipManager implements BasePipManager {
/**
* Updates the PIP per configuration changed.
*/
public void onConfigurationChanged() {
public void onConfigurationChanged(Configuration newConfig) {
mTouchHandler.onConfigurationChanged();
}

View File

@@ -26,6 +26,7 @@ import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.ParceledListSlice;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.graphics.Rect;
import android.media.session.MediaController;
@@ -116,6 +117,7 @@ public class PipManager implements BasePipManager {
private Rect mDefaultPipBounds = new Rect();
private Rect mSettingsPipBounds;
private Rect mMenuModePipBounds;
private int mLastOrientation = Configuration.ORIENTATION_UNDEFINED;
private boolean mInitialized;
private int mPipTaskId = TASK_ID_NO_PIP;
private ComponentName mPipComponentName;
@@ -237,7 +239,7 @@ public class PipManager implements BasePipManager {
}
}
loadConfigurationsAndApply();
loadConfigurationsAndApply(mContext.getResources().getConfiguration());
mMediaSessionManager =
(MediaSessionManager) mContext.getSystemService(Context.MEDIA_SESSION_SERVICE);
@@ -250,7 +252,14 @@ public class PipManager implements BasePipManager {
mPipNotification = new PipNotification(context);
}
private void loadConfigurationsAndApply() {
private void loadConfigurationsAndApply(Configuration newConfig) {
if (mLastOrientation != newConfig.orientation) {
// Don't resize the pinned stack on orientation change. TV does not care about this case
// and this could clobber the existing animation to the new bounds calculated by WM.
mLastOrientation = newConfig.orientation;
return;
}
Resources res = mContext.getResources();
mSettingsPipBounds = Rect.unflattenFromString(res.getString(
R.string.pip_settings_bounds));
@@ -267,8 +276,8 @@ public class PipManager implements BasePipManager {
/**
* Updates the PIP per configuration changed.
*/
public void onConfigurationChanged() {
loadConfigurationsAndApply();
public void onConfigurationChanged(Configuration newConfig) {
loadConfigurationsAndApply(newConfig);
mPipNotification.onConfigurationChanged(mContext);
}