summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSunita Nadampalli <sunitan@ti.com>2011-04-04 15:11:59 -0500
committerSunita Nadampalli <sunitan@ti.com>2011-04-04 15:11:59 -0500
commit7810f24efa1c9baa1f50ba6b9c7842c81a30d9ba (patch)
tree8eeebd7256a82ca44ccc72e975d6117313407761
parente70be32bb7f0ffe2fb3620f14b2b4555e320b356 (diff)
downloadbase-7810f24efa1c9baa1f50ba6b9c7842c81a30d9ba.tar.gz
LayerBuffer fix for Dynamic Display ID change
Description# HDMI Hotplug support is added by modifying the Layer dpy field from the omapmmLib. This dpy is modified inside the Layer Source on every display Change event. In this model, there is corner case possible where in We initiate the suspend/resume, but abort it immediately. This would trigger HDMI detach in the kernel and hence the detach event is propagated to LayerB But by this time if the OverlaySource is already destroyed keeping the Layer Buffer alive, we miss this Layer dpy update. Hence on immediate resume, The overlay source would see HDMI as the current dpy and configures overlay for the same even though HDMI is not yet attached in the kernel. This would result in Overlay configuration failure and hence no Video on LCD or TV. This is fixed by initializing the Layer dpy to 0 while constructing the Overlay source. DRT# OMAPS00235635 - PT: HDMI AV Playback: When resuming system, before unlocking the screen, the notification bar shows the clip playing. DRT# OMAPS00235626 - HDMI AV Playback suspend/resume: Gallery hang Change-Id: I73f66dd8049849748cc86cc1ad28e9b68294c1a7 Signed-off-by: Sunita Nadampalli <sunitan@ti.com>
-rw-r--r--services/surfaceflinger/LayerBuffer.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/services/surfaceflinger/LayerBuffer.cpp b/services/surfaceflinger/LayerBuffer.cpp
index 18c76b99c29d..7a1404df5c36 100644
--- a/services/surfaceflinger/LayerBuffer.cpp
+++ b/services/surfaceflinger/LayerBuffer.cpp
@@ -698,6 +698,10 @@ LayerBuffer::OverlaySource::OverlaySource(LayerBuffer& layer,
mInitialized = false;
mOverlayHandle = overlay->getHandleRef(overlay);
+
+#ifdef OMAP_ENHANCEMENT
+ layer.dpy = 0; //initialize the Layer display ID to 0
+#endif
sp<OverlayChannel> channel = new OverlayChannel( &layer );
@@ -754,6 +758,8 @@ LayerBuffer::OverlaySource::OverlaySource(LayerBuffer& layer,
mOverlayHandle = overlay->getHandleRef(overlay);
+ layer.dpy = 0; //initialize the Layer display ID to 0
+
sp<OverlayChannel> channel = new OverlayChannel( &layer );
*overlayRef = new OverlayRef(mOverlayHandle, channel,