summaryrefslogtreecommitdiffstats
path: root/hwc
diff options
context:
space:
mode:
authorDandawate Saket <dsaket@ti.com>2012-08-24 11:42:38 -0700
committerDaniel Levin <dendy@ti.com>2012-11-28 21:16:24 +0200
commit4c1eea2cdbd44b2f39db91fbe078a348d927904b (patch)
tree599265507e7b21531423b56fb2f6efddd6bb9aa1 /hwc
parentb490df5f108eff571fcece0a2f72c46dc121f510 (diff)
downloadhardware_ti_omap4-4c1eea2cdbd44b2f39db91fbe078a348d927904b.zip
hardware_ti_omap4-4c1eea2cdbd44b2f39db91fbe078a348d927904b.tar.gz
hardware_ti_omap4-4c1eea2cdbd44b2f39db91fbe078a348d927904b.tar.bz2
hwc: Stop queuing compositions to disabled default display
When HDMI is the default screen it may not be attached even though the UI is active. UI compositions will keep coming but the DSS manager will have problems if being programmed with content incompatible with the intermediate display mode. The last_mode variable is reset to "0" when hdmi panel is not present. The on_tv variable indicates hdmi is default panel. So if both are set then we need to make the overlay number in composition to be "0". OMAPLFB will skip posting the composition to dss driver when overlay as "0". There are still possibly compositions in the DSSCOMP queue or in flight from PVR services to OMAPLFB so this behavior doesn't cover all cases - so this should be considered a work-around. kernel dependency: http://review.omapzoom.org/#/c/26982/ Change-Id: Idb6864aa57ebf6c403b91ea5b0e0865467008934 Signed-off-by: Dandawate Saket <dsaket@ti.com> Signed-off-by: Tony Lofthouse <tony.lofthouse@ti.com>
Diffstat (limited to 'hwc')
-rw-r--r--hwc/hwc.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/hwc/hwc.c b/hwc/hwc.c
index 9450db7..ceff987 100644
--- a/hwc/hwc.c
+++ b/hwc/hwc.c
@@ -1959,6 +1959,14 @@ static int omap4_hwc_prepare(struct hwc_composer_device *dev, hwc_layer_list_t*
hwc_dev->ext_ovls = dsscomp->num_ovls - hwc_dev->post2_layers;
}
+ /*
+ * Whilst the mode of the display is being changed drop compositions to the
+ * display
+ */
+ if (ext->last_mode == 0 && hwc_dev->on_tv) {
+ dsscomp->num_ovls = 0;
+ }
+
if (debug) {
ALOGD("prepare (%d) - %s (comp=%d, poss=%d/%d scaled, RGB=%d,BGR=%d,NV12=%d) (ext=%s%s%ddeg%s %dex/%dmx (last %dex,%din)\n",
dsscomp->sync_id,