Loading core/java/android/service/dreams/DreamService.java +35 −23 Original line number Diff line number Diff line Loading @@ -251,6 +251,8 @@ public class DreamService extends Service implements Window.Callback { // A Queue of pending requests to execute on the overlay. private final ArrayDeque<Consumer<IDreamOverlay>> mRequests; private Handler mHandler = new Handler(Looper.getMainLooper()); private boolean mBound; OverlayConnection() { Loading @@ -259,6 +261,7 @@ public class DreamService extends Service implements Window.Callback { public void bind(Context context, @Nullable ComponentName overlayService, ComponentName dreamService) { mHandler.post(() -> { if (overlayService == null) { return; } Loading @@ -273,20 +276,25 @@ public class DreamService extends Service implements Window.Callback { context.bindService(overlayIntent, this, Context.BIND_AUTO_CREATE | Context.BIND_FOREGROUND_SERVICE); mBound = true; }); } public void unbind(Context context) { mHandler.post(() -> { if (!mBound) { return; } context.unbindService(this); mBound = false; }); } public void request(Consumer<IDreamOverlay> request) { mHandler.post(() -> { mRequests.push(request); evaluate(); }); } private void evaluate() { Loading @@ -304,15 +312,19 @@ public class DreamService extends Service implements Window.Callback { @Override public void onServiceConnected(ComponentName name, IBinder service) { mHandler.post(() -> { // Store Overlay and execute pending requests. mOverlay = IDreamOverlay.Stub.asInterface(service); evaluate(); }); } @Override public void onServiceDisconnected(ComponentName name) { mHandler.post(() -> { // Clear Overlay binder to prevent further request processing. mOverlay = null; }); } } Loading Loading
core/java/android/service/dreams/DreamService.java +35 −23 Original line number Diff line number Diff line Loading @@ -251,6 +251,8 @@ public class DreamService extends Service implements Window.Callback { // A Queue of pending requests to execute on the overlay. private final ArrayDeque<Consumer<IDreamOverlay>> mRequests; private Handler mHandler = new Handler(Looper.getMainLooper()); private boolean mBound; OverlayConnection() { Loading @@ -259,6 +261,7 @@ public class DreamService extends Service implements Window.Callback { public void bind(Context context, @Nullable ComponentName overlayService, ComponentName dreamService) { mHandler.post(() -> { if (overlayService == null) { return; } Loading @@ -273,20 +276,25 @@ public class DreamService extends Service implements Window.Callback { context.bindService(overlayIntent, this, Context.BIND_AUTO_CREATE | Context.BIND_FOREGROUND_SERVICE); mBound = true; }); } public void unbind(Context context) { mHandler.post(() -> { if (!mBound) { return; } context.unbindService(this); mBound = false; }); } public void request(Consumer<IDreamOverlay> request) { mHandler.post(() -> { mRequests.push(request); evaluate(); }); } private void evaluate() { Loading @@ -304,15 +312,19 @@ public class DreamService extends Service implements Window.Callback { @Override public void onServiceConnected(ComponentName name, IBinder service) { mHandler.post(() -> { // Store Overlay and execute pending requests. mOverlay = IDreamOverlay.Stub.asInterface(service); evaluate(); }); } @Override public void onServiceDisconnected(ComponentName name) { mHandler.post(() -> { // Clear Overlay binder to prevent further request processing. mOverlay = null; }); } } Loading