diff options
author | Sunita Nadampalli <sunitan@ti.com> | 2011-04-04 15:11:59 -0500 |
---|---|---|
committer | Sunita Nadampalli <sunitan@ti.com> | 2011-04-04 15:11:59 -0500 |
commit | 7810f24efa1c9baa1f50ba6b9c7842c81a30d9ba (patch) | |
tree | 8eeebd7256a82ca44ccc72e975d6117313407761 | |
parent | e70be32bb7f0ffe2fb3620f14b2b4555e320b356 (diff) | |
download | base-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.cpp | 6 |
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, |