diff options
Diffstat (limited to 'drivers/video')
-rw-r--r-- | drivers/video/omap2/dss/apply.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/video/omap2/dss/apply.c b/drivers/video/omap2/dss/apply.c index 98fef08da3ba..e2eaed2e9172 100644 --- a/drivers/video/omap2/dss/apply.c +++ b/drivers/video/omap2/dss/apply.c @@ -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); } } |