diff options
3 files changed, 66 insertions, 62 deletions
diff --git a/core/java/android/hardware/display/DisplayManager.java b/core/java/android/hardware/display/DisplayManager.java index b0ea92d140a5..a81bcbcce9c9 100644 --- a/core/java/android/hardware/display/DisplayManager.java +++ b/core/java/android/hardware/display/DisplayManager.java @@ -580,7 +580,7 @@ public final class DisplayManager { EVENT_FLAG_DISPLAY_CONNECTION_CHANGED, }) @Retention(RetentionPolicy.SOURCE) - public @interface EventsMask {} + public @interface EventFlag {} /** * Event type for when a new display is added. @@ -774,7 +774,7 @@ public final class DisplayManager { * @param listener The listener to register. * @param handler The handler on which the listener should be invoked, or null * if the listener should be invoked on the calling thread's looper. - * @param eventsMask A bitmask of the event types for which this listener is subscribed. + * @param eventFlagsMask A bitmask of the event types for which this listener is subscribed. * * @see #EVENT_FLAG_DISPLAY_ADDED * @see #EVENT_FLAG_DISPLAY_CHANGED @@ -786,8 +786,8 @@ public final class DisplayManager { * @hide */ public void registerDisplayListener(@NonNull DisplayListener listener, - @Nullable Handler handler, @EventsMask long eventsMask) { - mGlobal.registerDisplayListener(listener, handler, eventsMask, + @Nullable Handler handler, @EventFlag long eventFlagsMask) { + mGlobal.registerDisplayListener(listener, handler, eventFlagsMask, ActivityThread.currentPackageName()); } diff --git a/core/java/android/hardware/display/DisplayManagerGlobal.java b/core/java/android/hardware/display/DisplayManagerGlobal.java index 6affd123bfde..3c6841cd8aeb 100644 --- a/core/java/android/hardware/display/DisplayManagerGlobal.java +++ b/core/java/android/hardware/display/DisplayManagerGlobal.java @@ -17,7 +17,7 @@ package android.hardware.display; -import static android.hardware.display.DisplayManager.EventsMask; +import static android.hardware.display.DisplayManager.EventFlag; import static android.view.Display.HdrCapabilities.HdrType; import android.Manifest; @@ -130,7 +130,7 @@ public final class DisplayManagerGlobal { private final IDisplayManager mDm; private DisplayManagerCallback mCallback; - private @EventsMask long mRegisteredEventsMask = 0; + private @EventFlag long mRegisteredEventFlagsMask = 0; private final CopyOnWriteArrayList<DisplayListenerDelegate> mDisplayListeners = new CopyOnWriteArrayList<>(); @@ -346,10 +346,11 @@ public final class DisplayManagerGlobal { * @param packageName of the calling package. */ public void registerDisplayListener(@NonNull DisplayListener listener, - @Nullable Handler handler, @EventsMask long eventsMask, String packageName) { + @Nullable Handler handler, @EventFlag long eventFlagsMask, + String packageName) { Looper looper = getLooperForHandler(handler); Handler springBoard = new Handler(looper); - registerDisplayListener(listener, new HandlerExecutor(springBoard), eventsMask, + registerDisplayListener(listener, new HandlerExecutor(springBoard), eventFlagsMask, packageName); } @@ -358,32 +359,32 @@ public final class DisplayManagerGlobal { * * @param listener The listener that will be called when display changes occur. * @param executor Executor for the thread that will be receiving the callbacks. Cannot be null. - * @param eventsMask Mask of events to be listened to. + * @param eventFlagsMask Flag of events to be listened to. * @param packageName of the calling package. */ public void registerDisplayListener(@NonNull DisplayListener listener, - @NonNull Executor executor, @EventsMask long eventsMask, String packageName) { + @NonNull Executor executor, @EventFlag long eventFlagsMask, String packageName) { if (listener == null) { throw new IllegalArgumentException("listener must not be null"); } - if (eventsMask == 0) { + if (eventFlagsMask == 0) { throw new IllegalArgumentException("The set of events to listen to must not be empty."); } if (extraLogging()) { Slog.i(TAG, "Registering Display Listener: " - + Long.toBinaryString(eventsMask) + ", packageName: " + packageName); + + Long.toBinaryString(eventFlagsMask) + ", packageName: " + packageName); } synchronized (mLock) { int index = findDisplayListenerLocked(listener); if (index < 0) { - mDisplayListeners.add(new DisplayListenerDelegate(listener, executor, eventsMask, - packageName)); + mDisplayListeners.add(new DisplayListenerDelegate(listener, executor, + eventFlagsMask, packageName)); registerCallbackIfNeededLocked(); } else { - mDisplayListeners.get(index).setEventsMask(eventsMask); + mDisplayListeners.get(index).setEventFlagsMask(eventFlagsMask); } updateCallbackIfNeededLocked(); maybeLogAllDisplayListeners(); @@ -455,12 +456,12 @@ public final class DisplayManagerGlobal { return -1; } - @EventsMask - private int calculateEventsMaskLocked() { + @EventFlag + private int calculateEventFlagsMaskLocked() { int mask = 0; final int numListeners = mDisplayListeners.size(); for (int i = 0; i < numListeners; i++) { - mask |= mDisplayListeners.get(i).mEventsMask; + mask |= mDisplayListeners.get(i).mEventFlagsMask; } if (mDispatchNativeCallbacks) { mask |= DisplayManager.EVENT_FLAG_DISPLAY_ADDED @@ -478,14 +479,14 @@ public final class DisplayManagerGlobal { } private void updateCallbackIfNeededLocked() { - int mask = calculateEventsMaskLocked(); + int mask = calculateEventFlagsMaskLocked(); if (DEBUG) { - Log.d(TAG, "Mask for listener: " + mask); + Log.d(TAG, "Flag for listener: " + mask); } - if (mask != mRegisteredEventsMask) { + if (mask != mRegisteredEventFlagsMask) { try { mDm.registerCallbackWithEventMask(mCallback, mask); - mRegisteredEventsMask = mask; + mRegisteredEventFlagsMask = mask; } catch (RemoteException ex) { throw ex.rethrowFromSystemServer(); } @@ -1276,7 +1277,7 @@ public final class DisplayManagerGlobal { private static final class DisplayListenerDelegate { public final DisplayListener mListener; - public volatile long mEventsMask; + public volatile long mEventFlagsMask; private final DisplayInfo mDisplayInfo = new DisplayInfo(); private final Executor mExecutor; @@ -1284,10 +1285,10 @@ public final class DisplayManagerGlobal { private final String mPackageName; DisplayListenerDelegate(DisplayListener listener, @NonNull Executor executor, - @EventsMask long eventsMask, String packageName) { + @EventFlag long eventFlag, String packageName) { mExecutor = executor; mListener = listener; - mEventsMask = eventsMask; + mEventFlagsMask = eventFlag; mPackageName = packageName; } @@ -1309,16 +1310,16 @@ public final class DisplayManagerGlobal { mGenerationId.incrementAndGet(); } - void setEventsMask(@EventsMask long newEventsMask) { - mEventsMask = newEventsMask; + void setEventFlagsMask(@EventFlag long newEventsFlag) { + mEventFlagsMask = newEventsFlag; } - private void handleDisplayEventInner(int displayId, @DisplayEvent int event, + private void handleDisplayEventInner(int displayId, @DisplayEvent int eventFlagsMask, @Nullable DisplayInfo info, boolean forceUpdate) { if (extraLogging()) { - Slog.i(TAG, "DLD(" + eventToString(event) + Slog.i(TAG, "DLD(" + eventToString(eventFlagsMask) + ", display=" + displayId - + ", mEventsMask=" + Long.toBinaryString(mEventsMask) + + ", mEventsFlagMask=" + Long.toBinaryString(mEventFlagsMask) + ", mPackageName=" + mPackageName + ", displayInfo=" + info + ", listener=" + mListener.getClass() + ")"); @@ -1326,18 +1327,18 @@ public final class DisplayManagerGlobal { if (DEBUG) { Trace.beginSection( TextUtils.trimToSize( - "DLD(" + eventToString(event) + "DLD(" + eventToString(eventFlagsMask) + ", display=" + displayId + ", listener=" + mListener.getClass() + ")", 127)); } - switch (event) { + switch (eventFlagsMask) { case EVENT_DISPLAY_ADDED: - if ((mEventsMask & DisplayManager.EVENT_FLAG_DISPLAY_ADDED) != 0) { + if ((mEventFlagsMask & DisplayManager.EVENT_FLAG_DISPLAY_ADDED) != 0) { mListener.onDisplayAdded(displayId); } break; case EVENT_DISPLAY_CHANGED: - if ((mEventsMask & DisplayManager.EVENT_FLAG_DISPLAY_CHANGED) != 0) { + if ((mEventFlagsMask & DisplayManager.EVENT_FLAG_DISPLAY_CHANGED) != 0) { if (info != null && (forceUpdate || !info.equals(mDisplayInfo))) { if (extraLogging()) { Slog.i(TAG, "Sending onDisplayChanged: Display Changed. Info: " @@ -1349,27 +1350,29 @@ public final class DisplayManagerGlobal { } break; case EVENT_DISPLAY_BRIGHTNESS_CHANGED: - if ((mEventsMask & DisplayManager.EVENT_FLAG_DISPLAY_BRIGHTNESS) != 0) { + if ((mEventFlagsMask & DisplayManager.EVENT_FLAG_DISPLAY_BRIGHTNESS) != 0) { mListener.onDisplayChanged(displayId); } break; case EVENT_DISPLAY_REMOVED: - if ((mEventsMask & DisplayManager.EVENT_FLAG_DISPLAY_REMOVED) != 0) { + if ((mEventFlagsMask & DisplayManager.EVENT_FLAG_DISPLAY_REMOVED) != 0) { mListener.onDisplayRemoved(displayId); } break; case EVENT_DISPLAY_HDR_SDR_RATIO_CHANGED: - if ((mEventsMask & DisplayManager.EVENT_FLAG_HDR_SDR_RATIO_CHANGED) != 0) { + if ((mEventFlagsMask & DisplayManager.EVENT_FLAG_HDR_SDR_RATIO_CHANGED) != 0) { mListener.onDisplayChanged(displayId); } break; case EVENT_DISPLAY_CONNECTED: - if ((mEventsMask & DisplayManager.EVENT_FLAG_DISPLAY_CONNECTION_CHANGED) != 0) { + if ((mEventFlagsMask & DisplayManager.EVENT_FLAG_DISPLAY_CONNECTION_CHANGED) + != 0) { mListener.onDisplayConnected(displayId); } break; case EVENT_DISPLAY_DISCONNECTED: - if ((mEventsMask & DisplayManager.EVENT_FLAG_DISPLAY_CONNECTION_CHANGED) != 0) { + if ((mEventFlagsMask & DisplayManager.EVENT_FLAG_DISPLAY_CONNECTION_CHANGED) + != 0) { mListener.onDisplayDisconnected(displayId); } break; @@ -1381,7 +1384,7 @@ public final class DisplayManagerGlobal { @Override public String toString() { - return "mask: {" + mEventsMask + "}, for " + mListener.getClass(); + return "mEventFlagsMask: {" + mEventFlagsMask + "}, for " + mListener.getClass(); } } diff --git a/services/core/java/com/android/server/display/DisplayManagerService.java b/services/core/java/com/android/server/display/DisplayManagerService.java index f39fbfbc8a05..f5a75c7d1c38 100644 --- a/services/core/java/com/android/server/display/DisplayManagerService.java +++ b/services/core/java/com/android/server/display/DisplayManagerService.java @@ -25,7 +25,7 @@ import static android.Manifest.permission.MANAGE_DISPLAYS; import static android.Manifest.permission.RESTRICT_DISPLAY_MODES; import static android.app.ActivityManager.RunningAppProcessInfo.IMPORTANCE_CACHED; import static android.app.ActivityManager.RunningAppProcessInfo.IMPORTANCE_GONE; -import static android.hardware.display.DisplayManager.EventsMask; +import static android.hardware.display.DisplayManager.EventFlag; import static android.hardware.display.DisplayManager.VIRTUAL_DISPLAY_FLAG_ALWAYS_UNLOCKED; import static android.hardware.display.DisplayManager.VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR; import static android.hardware.display.DisplayManager.VIRTUAL_DISPLAY_FLAG_CAN_SHOW_WITH_INSECURE_KEYGUARD; @@ -1390,16 +1390,16 @@ public final class DisplayManagerService extends SystemService { } private void registerCallbackInternal(IDisplayManagerCallback callback, int callingPid, - int callingUid, @EventsMask long eventsMask) { + int callingUid, @EventFlag long eventFlagsMask) { synchronized (mSyncRoot) { CallbackRecord record = mCallbacks.get(callingPid); if (record != null) { - record.updateEventsMask(eventsMask); + record.updateEventFlagsMask(eventFlagsMask); return; } - record = new CallbackRecord(callingPid, callingUid, callback, eventsMask); + record = new CallbackRecord(callingPid, callingUid, callback, eventFlagsMask); try { IBinder binder = callback.asBinder(); binder.linkToDeath(record, 0); @@ -4009,7 +4009,7 @@ public final class DisplayManagerService extends SystemService { public final int mPid; public final int mUid; private final IDisplayManagerCallback mCallback; - private @EventsMask AtomicLong mEventsMask; + private @DisplayManager.EventFlag AtomicLong mEventFlagsMask; private final String mPackageName; public boolean mWifiDisplayScanRequested; @@ -4030,11 +4030,11 @@ public final class DisplayManagerService extends SystemService { private boolean mFrozen; CallbackRecord(int pid, int uid, @NonNull IDisplayManagerCallback callback, - @EventsMask long eventsMask) { + @EventFlag long eventFlagsMask) { mPid = pid; mUid = uid; mCallback = callback; - mEventsMask = new AtomicLong(eventsMask); + mEventFlagsMask = new AtomicLong(eventFlagsMask); mCached = false; mFrozen = false; @@ -4056,8 +4056,8 @@ public final class DisplayManagerService extends SystemService { mPackageName = packageNames == null ? null : packageNames[0]; } - public void updateEventsMask(@EventsMask long eventsMask) { - mEventsMask.set(eventsMask); + public void updateEventFlagsMask(@EventFlag long eventFlag) { + mEventFlagsMask.set(eventFlag); } /** @@ -4121,12 +4121,13 @@ public final class DisplayManagerService extends SystemService { if (!shouldSendEvent(event)) { if (extraLogging(mPackageName)) { Slog.i(TAG, - "Not sending displayEvent: " + event + " due to mask:" + mEventsMask); + "Not sending displayEvent: " + event + " due to flag:" + + mEventFlagsMask); } if (Trace.isTagEnabled(Trace.TRACE_TAG_POWER)) { Trace.instant(Trace.TRACE_TAG_POWER, - "notifyDisplayEventAsync#notSendingEvent=" + event + ",mEventsMask=" - + mEventsMask); + "notifyDisplayEventAsync#notSendingEvent=" + event + ",mEventsFlag=" + + mEventFlagsMask); } // The client is not interested in this event, so do nothing. return true; @@ -4172,22 +4173,22 @@ public final class DisplayManagerService extends SystemService { * Return true if the client is interested in this event. */ private boolean shouldSendEvent(@DisplayEvent int event) { - final long mask = mEventsMask.get(); + final long flag = mEventFlagsMask.get(); switch (event) { case DisplayManagerGlobal.EVENT_DISPLAY_ADDED: - return (mask & DisplayManager.EVENT_FLAG_DISPLAY_ADDED) != 0; + return (flag & DisplayManager.EVENT_FLAG_DISPLAY_ADDED) != 0; case DisplayManagerGlobal.EVENT_DISPLAY_CHANGED: - return (mask & DisplayManager.EVENT_FLAG_DISPLAY_CHANGED) != 0; + return (flag & DisplayManager.EVENT_FLAG_DISPLAY_CHANGED) != 0; case DisplayManagerGlobal.EVENT_DISPLAY_BRIGHTNESS_CHANGED: - return (mask & DisplayManager.EVENT_FLAG_DISPLAY_BRIGHTNESS) != 0; + return (flag & DisplayManager.EVENT_FLAG_DISPLAY_BRIGHTNESS) != 0; case DisplayManagerGlobal.EVENT_DISPLAY_REMOVED: - return (mask & DisplayManager.EVENT_FLAG_DISPLAY_REMOVED) != 0; + return (flag & DisplayManager.EVENT_FLAG_DISPLAY_REMOVED) != 0; case DisplayManagerGlobal.EVENT_DISPLAY_HDR_SDR_RATIO_CHANGED: - return (mask & DisplayManager.EVENT_FLAG_HDR_SDR_RATIO_CHANGED) != 0; + return (flag & DisplayManager.EVENT_FLAG_HDR_SDR_RATIO_CHANGED) != 0; case DisplayManagerGlobal.EVENT_DISPLAY_CONNECTED: // fallthrough case DisplayManagerGlobal.EVENT_DISPLAY_DISCONNECTED: - return (mask & DisplayManager.EVENT_FLAG_DISPLAY_CONNECTION_CHANGED) != 0; + return (flag & DisplayManager.EVENT_FLAG_DISPLAY_CONNECTION_CHANGED) != 0; default: // This should never happen. Slog.e(TAG, "Unknown display event " + event); @@ -4381,7 +4382,7 @@ public final class DisplayManagerService extends SystemService { @Override // Binder call @SuppressLint("AndroidFrameworkRequiresPermission") // Permission only required sometimes public void registerCallbackWithEventMask(IDisplayManagerCallback callback, - @EventsMask long eventsMask) { + @EventFlag long eventFlagsMask) { if (callback == null) { throw new IllegalArgumentException("listener must not be null"); } @@ -4390,7 +4391,7 @@ public final class DisplayManagerService extends SystemService { final int callingUid = Binder.getCallingUid(); if (mFlags.isConnectedDisplayManagementEnabled()) { - if ((eventsMask & DisplayManager.EVENT_FLAG_DISPLAY_CONNECTION_CHANGED) != 0) { + if ((eventFlagsMask & DisplayManager.EVENT_FLAG_DISPLAY_CONNECTION_CHANGED) != 0) { mContext.enforceCallingOrSelfPermission(MANAGE_DISPLAYS, "Permission required to get signals about connection events."); } @@ -4398,7 +4399,7 @@ public final class DisplayManagerService extends SystemService { final long token = Binder.clearCallingIdentity(); try { - registerCallbackInternal(callback, callingPid, callingUid, eventsMask); + registerCallbackInternal(callback, callingPid, callingUid, eventFlagsMask); } finally { Binder.restoreCallingIdentity(token); } |