|
@@ -824,6 +824,7 @@ static void dss_apply_irq_handler(void *data, u32 mask)
|
|
|
for (i = 0; i < num_mgrs; i++) {
|
|
|
struct omap_overlay_manager *mgr;
|
|
|
struct mgr_priv_data *mp;
|
|
|
+ bool was_updating;
|
|
|
|
|
|
mgr = omap_dss_get_overlay_manager(i);
|
|
|
mp = get_mgr_priv(mgr);
|
|
@@ -831,15 +832,17 @@ static void dss_apply_irq_handler(void *data, u32 mask)
|
|
|
if (!mp->enabled)
|
|
|
continue;
|
|
|
|
|
|
+ was_updating = mp->updating;
|
|
|
mp->updating = dispc_mgr_is_enabled(i);
|
|
|
|
|
|
if (!mgr_manual_update(mgr)) {
|
|
|
+ bool was_busy = mp->busy;
|
|
|
mp->busy = dispc_mgr_go_busy(i);
|
|
|
|
|
|
- if (!mp->busy)
|
|
|
+ if (was_busy && !mp->busy)
|
|
|
mgr_clear_shadow_dirty(mgr);
|
|
|
} else {
|
|
|
- if (!mp->updating)
|
|
|
+ if (was_updating && !mp->updating)
|
|
|
mgr_clear_shadow_dirty(mgr);
|
|
|
}
|
|
|
}
|