diff options
Diffstat (limited to 'services/java/com/android/server/display/LocalDisplayAdapter.java')
-rw-r--r-- | services/java/com/android/server/display/LocalDisplayAdapter.java | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/services/java/com/android/server/display/LocalDisplayAdapter.java b/services/java/com/android/server/display/LocalDisplayAdapter.java index eab4c9a20089..9c5146382974 100644 --- a/services/java/com/android/server/display/LocalDisplayAdapter.java +++ b/services/java/com/android/server/display/LocalDisplayAdapter.java @@ -19,7 +19,9 @@ package com.android.server.display; import android.content.Context; import android.os.Handler; import android.os.IBinder; +import android.os.Looper; import android.util.SparseArray; +import android.view.DisplayEventReceiver; import android.view.Surface; import android.view.Surface.PhysicalDisplayInfo; @@ -41,12 +43,14 @@ final class LocalDisplayAdapter extends DisplayAdapter { private final SparseArray<LocalDisplayDevice> mDevices = new SparseArray<LocalDisplayDevice>(); + private final HotplugDisplayEventReceiver mHotplugReceiver; private final PhysicalDisplayInfo mTempPhys = new PhysicalDisplayInfo(); public LocalDisplayAdapter(DisplayManagerService.SyncRoot syncRoot, Context context, Handler handler, Listener listener) { super(syncRoot, context, handler, listener, TAG); + mHotplugReceiver = new HotplugDisplayEventReceiver(handler.getLooper()); } @Override @@ -148,4 +152,17 @@ final class LocalDisplayAdapter extends DisplayAdapter { pw.println("mPhys=" + mPhys); } } -} + + private final class HotplugDisplayEventReceiver extends DisplayEventReceiver { + public HotplugDisplayEventReceiver(Looper looper) { + super(looper); + } + + @Override + public void onHotplug(long timestampNanos, int builtInDisplayId, boolean connected) { + synchronized (getSyncRoot()) { + scanDisplaysLocked(); + } + } + } +}
\ No newline at end of file |