Snap for 5691653 from dbf9ada7d8c0241e1eac6b5a1541b7e7ee82cc07 to qt-c2f2-release
Change-Id: Ia8c89d6c015631d4b3b4e00fd312eebcb38f944d
diff --git a/src/com/android/wallpaper/livepicker/LiveWallpaperPreview.java b/src/com/android/wallpaper/livepicker/LiveWallpaperPreview.java
index 65e0e6c..fbae006 100644
--- a/src/com/android/wallpaper/livepicker/LiveWallpaperPreview.java
+++ b/src/com/android/wallpaper/livepicker/LiveWallpaperPreview.java
@@ -154,6 +154,13 @@
mWallpaperManager = WallpaperManager.getInstance(this);
mWallpaperConnection = new WallpaperConnection(mWallpaperIntent);
+ getWindow().getDecorView().post(new Runnable() {
+ public void run() {
+ if (!mWallpaperConnection.connect()) {
+ mWallpaperConnection = null;
+ }
+ }
+ });
if (!TextUtils.isEmpty(deleteAction)) {
mDeleteIntent = new Intent(deleteAction);
@@ -517,48 +524,17 @@
@Override
public void onResume() {
super.onResume();
- if (mWallpaperConnection != null && mWallpaperConnection.mEngine != null) {
- try {
- mWallpaperConnection.mEngine.setVisibility(true);
- } catch (RemoteException e) {
- // Ignore
- }
+ if (mWallpaperConnection != null) {
+ mWallpaperConnection.setVisibility(true);
}
}
@Override
public void onPause() {
super.onPause();
- if (mWallpaperConnection != null && mWallpaperConnection.mEngine != null) {
- try {
- mWallpaperConnection.mEngine.setVisibility(false);
- } catch (RemoteException e) {
- // Ignore
- }
- }
- }
-
- @Override
- public void onAttachedToWindow() {
- super.onAttachedToWindow();
-
- getWindow().getDecorView().post(new Runnable() {
- public void run() {
- if (!mWallpaperConnection.connect()) {
- mWallpaperConnection = null;
- }
- }
- });
- }
-
- @Override
- public void onDetachedFromWindow() {
- super.onDetachedFromWindow();
-
if (mWallpaperConnection != null) {
- mWallpaperConnection.disconnect();
+ mWallpaperConnection.setVisibility(false);
}
- mWallpaperConnection = null;
}
@Override
@@ -567,6 +543,10 @@
mLiveDataSettings.removeObserver(mSliceViewSettings);
mLiveDataSettings = null;
}
+ if (mWallpaperConnection != null) {
+ mWallpaperConnection.disconnect();
+ }
+ mWallpaperConnection = null;
super.onDestroy();
}
@@ -610,6 +590,8 @@
IWallpaperService mService;
IWallpaperEngine mEngine;
boolean mConnected;
+ boolean mIsVisible;
+ boolean mIsEngineVisible;
WallpaperConnection(Intent intent) {
mIntent = intent;
@@ -675,10 +657,8 @@
synchronized (this) {
if (mConnected) {
mEngine = engine;
- try {
- engine.setVisibility(true);
- } catch (RemoteException e) {
- // Ignore
+ if (mIsVisible) {
+ setEngineVisibility(true);
}
} else {
try {
@@ -712,6 +692,22 @@
.withEndAction(() -> mLoading.setVisibility(View.INVISIBLE));
});
}
+
+ public void setVisibility(boolean visible) {
+ mIsVisible = visible;
+ setEngineVisibility(visible);
+ }
+
+ private void setEngineVisibility(boolean visible) {
+ if (mEngine != null && visible != mIsEngineVisible) {
+ try {
+ mEngine.setVisibility(visible);
+ mIsEngineVisible = visible;
+ } catch (RemoteException e) {
+ Log.w(LOG_TAG, "Failure setting wallpaper visibility ", e);
+ }
+ }
+ }
}
private static class WallpaperTargetAdapter extends ArrayAdapter<CharSequence> {