}
 
+static void mgr_clear_shadow_dirty(struct omap_overlay_manager *mgr)
+{
+       struct omap_overlay *ovl;
+       struct mgr_priv_data *mp;
+       struct ovl_priv_data *op;
+
+       mp = get_mgr_priv(mgr);
+       mp->shadow_info_dirty = false;
+
+       list_for_each_entry(ovl, &mgr->overlays, list) {
+               op = get_ovl_priv(ovl);
+               op->shadow_info_dirty = false;
+               op->shadow_extra_info_dirty = false;
+       }
+}
+
 void dss_mgr_start_update(struct omap_overlay_manager *mgr)
 {
        struct mgr_priv_data *mp = get_mgr_priv(mgr);
 
        dispc_mgr_enable(mgr->id, true);
 
+       mgr_clear_shadow_dirty(mgr);
+
        spin_unlock_irqrestore(&data_lock, flags);
 }
 
        dss_data.irq_enabled = false;
 }
 
-static void mgr_clear_shadow_dirty(struct omap_overlay_manager *mgr)
-{
-       struct omap_overlay *ovl;
-       struct mgr_priv_data *mp;
-       struct ovl_priv_data *op;
-
-       mp = get_mgr_priv(mgr);
-       mp->shadow_info_dirty = false;
-
-       list_for_each_entry(ovl, &mgr->overlays, list) {
-               op = get_ovl_priv(ovl);
-               op->shadow_info_dirty = false;
-               op->shadow_extra_info_dirty = false;
-       }
-}
-
 static void dss_apply_irq_handler(void *data, u32 mask)
 {
        const int num_mgrs = dss_feat_get_num_mgrs();
 
                        if (was_busy && !mp->busy)
                                mgr_clear_shadow_dirty(mgr);
-               } else {
-                       if (was_updating && !mp->updating)
-                               mgr_clear_shadow_dirty(mgr);
                }
        }