Support HDMI hotplug.
Bug: 7206678
Change-Id: Ia5212b16658a5f5a2ccf8528eca7bebd45ca857a
diff --git a/services/java/com/android/server/display/DisplayManagerService.java b/services/java/com/android/server/display/DisplayManagerService.java
index b109f2a..85f3b56 100644
--- a/services/java/com/android/server/display/DisplayManagerService.java
+++ b/services/java/com/android/server/display/DisplayManagerService.java
@@ -536,6 +536,8 @@
return;
}
+ Slog.i(TAG, "Display device added: " + device.getDisplayDeviceInfoLocked());
+
mDisplayDevices.add(device);
addLogicalDisplayLocked(device);
scheduleTraversalLocked();
@@ -550,6 +552,8 @@
return;
}
+ Slog.i(TAG, "Display device changed: " + device.getDisplayDeviceInfoLocked());
+
device.applyPendingDisplayDeviceInfoChangesLocked();
if (updateLogicalDisplaysLocked()) {
scheduleTraversalLocked();
@@ -565,6 +569,8 @@
return;
}
+ Slog.i(TAG, "Display device removed: " + device.getDisplayDeviceInfoLocked());
+
mRemovedDisplayDevices.add(device);
updateLogicalDisplaysLocked();
scheduleTraversalLocked();
diff --git a/services/java/com/android/server/display/LocalDisplayAdapter.java b/services/java/com/android/server/display/LocalDisplayAdapter.java
index eab4c9a..9c51463 100644
--- a/services/java/com/android/server/display/LocalDisplayAdapter.java
+++ b/services/java/com/android/server/display/LocalDisplayAdapter.java
@@ -19,7 +19,9 @@
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 @@
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 @@
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