Loading core/java/android/service/wallpaper/IWallpaperService.aidl +1 −0 Original line number Diff line number Diff line Loading @@ -26,4 +26,5 @@ oneway interface IWallpaperService { void attach(IWallpaperConnection connection, IBinder windowToken, int windowType, boolean isPreview, int reqWidth, int reqHeight, in Rect padding, int displayId); void detach(); } core/java/android/service/wallpaper/WallpaperService.java +25 −3 Original line number Diff line number Diff line Loading @@ -72,6 +72,7 @@ import com.android.internal.view.BaseSurfaceHolder; import java.io.FileDescriptor; import java.io.PrintWriter; import java.util.ArrayList; import java.util.concurrent.atomic.AtomicBoolean; import java.util.function.Supplier; /** Loading Loading @@ -1309,6 +1310,7 @@ public abstract class WallpaperService extends Service { final int mDisplayId; final DisplayManager mDisplayManager; final Display mDisplay; private final AtomicBoolean mDetached = new AtomicBoolean(); Engine mEngine; Loading Loading @@ -1399,8 +1401,23 @@ public abstract class WallpaperService extends Service { mCaller.sendMessage(msg); } public void detach() { mDetached.set(true); } private void doDetachEngine() { mActiveEngines.remove(mEngine); mEngine.detach(); } @Override public void executeMessage(Message message) { if (mDetached.get()) { if (mActiveEngines.contains(mEngine)) { doDetachEngine(); } return; } switch (message.what) { case DO_ATTACH: { try { Loading @@ -1416,8 +1433,7 @@ public abstract class WallpaperService extends Service { return; } case DO_DETACH: { mActiveEngines.remove(mEngine); mEngine.detach(); doDetachEngine(); return; } case DO_SET_DESIRED_SIZE: { Loading Loading @@ -1497,6 +1513,7 @@ public abstract class WallpaperService extends Service { */ class IWallpaperServiceWrapper extends IWallpaperService.Stub { private final WallpaperService mTarget; private IWallpaperEngineWrapper mEngineWrapper; public IWallpaperServiceWrapper(WallpaperService context) { mTarget = context; Loading @@ -1506,9 +1523,14 @@ public abstract class WallpaperService extends Service { public void attach(IWallpaperConnection conn, IBinder windowToken, int windowType, boolean isPreview, int reqWidth, int reqHeight, Rect padding, int displayId) { new IWallpaperEngineWrapper(mTarget, conn, windowToken, mEngineWrapper = new IWallpaperEngineWrapper(mTarget, conn, windowToken, windowType, isPreview, reqWidth, reqHeight, padding, displayId); } @Override public void detach() { mEngineWrapper.detach(); } } @Override Loading services/core/java/com/android/server/wallpaper/WallpaperManagerService.java +5 −0 Original line number Diff line number Diff line Loading @@ -2669,6 +2669,11 @@ public class WallpaperManagerService extends IWallpaperManager.Stub } wallpaper.connection.mReply = null; } try { wallpaper.connection.mService.detach(); } catch (RemoteException e) { Slog.w(TAG, "Failed detaching wallpaper service ", e); } mContext.unbindService(wallpaper.connection); wallpaper.connection.forEachDisplayConnector( WallpaperConnection.DisplayConnector::disconnectLocked); Loading Loading
core/java/android/service/wallpaper/IWallpaperService.aidl +1 −0 Original line number Diff line number Diff line Loading @@ -26,4 +26,5 @@ oneway interface IWallpaperService { void attach(IWallpaperConnection connection, IBinder windowToken, int windowType, boolean isPreview, int reqWidth, int reqHeight, in Rect padding, int displayId); void detach(); }
core/java/android/service/wallpaper/WallpaperService.java +25 −3 Original line number Diff line number Diff line Loading @@ -72,6 +72,7 @@ import com.android.internal.view.BaseSurfaceHolder; import java.io.FileDescriptor; import java.io.PrintWriter; import java.util.ArrayList; import java.util.concurrent.atomic.AtomicBoolean; import java.util.function.Supplier; /** Loading Loading @@ -1309,6 +1310,7 @@ public abstract class WallpaperService extends Service { final int mDisplayId; final DisplayManager mDisplayManager; final Display mDisplay; private final AtomicBoolean mDetached = new AtomicBoolean(); Engine mEngine; Loading Loading @@ -1399,8 +1401,23 @@ public abstract class WallpaperService extends Service { mCaller.sendMessage(msg); } public void detach() { mDetached.set(true); } private void doDetachEngine() { mActiveEngines.remove(mEngine); mEngine.detach(); } @Override public void executeMessage(Message message) { if (mDetached.get()) { if (mActiveEngines.contains(mEngine)) { doDetachEngine(); } return; } switch (message.what) { case DO_ATTACH: { try { Loading @@ -1416,8 +1433,7 @@ public abstract class WallpaperService extends Service { return; } case DO_DETACH: { mActiveEngines.remove(mEngine); mEngine.detach(); doDetachEngine(); return; } case DO_SET_DESIRED_SIZE: { Loading Loading @@ -1497,6 +1513,7 @@ public abstract class WallpaperService extends Service { */ class IWallpaperServiceWrapper extends IWallpaperService.Stub { private final WallpaperService mTarget; private IWallpaperEngineWrapper mEngineWrapper; public IWallpaperServiceWrapper(WallpaperService context) { mTarget = context; Loading @@ -1506,9 +1523,14 @@ public abstract class WallpaperService extends Service { public void attach(IWallpaperConnection conn, IBinder windowToken, int windowType, boolean isPreview, int reqWidth, int reqHeight, Rect padding, int displayId) { new IWallpaperEngineWrapper(mTarget, conn, windowToken, mEngineWrapper = new IWallpaperEngineWrapper(mTarget, conn, windowToken, windowType, isPreview, reqWidth, reqHeight, padding, displayId); } @Override public void detach() { mEngineWrapper.detach(); } } @Override Loading
services/core/java/com/android/server/wallpaper/WallpaperManagerService.java +5 −0 Original line number Diff line number Diff line Loading @@ -2669,6 +2669,11 @@ public class WallpaperManagerService extends IWallpaperManager.Stub } wallpaper.connection.mReply = null; } try { wallpaper.connection.mService.detach(); } catch (RemoteException e) { Slog.w(TAG, "Failed detaching wallpaper service ", e); } mContext.unbindService(wallpaper.connection); wallpaper.connection.forEachDisplayConnector( WallpaperConnection.DisplayConnector::disconnectLocked); Loading