drm/fb-helper: Return early in damage worker
authorThomas Zimmermann <tzimmermann@suse.de>
Fri, 20 Nov 2020 10:25:40 +0000 (11:25 +0100)
committerThomas Zimmermann <tzimmermann@suse.de>
Tue, 24 Nov 2020 08:27:55 +0000 (09:27 +0100)
Returning early in the damage worker if no update is required. Makes the
code more readable. No functional changes are being made.

v3:
* s/dirty/damage in commit message (Sam)

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Sam Ravnborg <sam@ravnborg.org>
Acked-by: Maxime Ripard <mripard@kernel.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20201120102545.4047-6-tzimmermann@suse.de
drivers/gpu/drm/drm_fb_helper.c

index 87d4759de04aeed06b674ffddf2ad6cd454d2eb0..c9018ffff5f989124e732508e4828272a93da07a 100644 (file)
@@ -407,24 +407,23 @@ static void drm_fb_helper_damage_work(struct work_struct *work)
        clip->x2 = clip->y2 = 0;
        spin_unlock_irqrestore(&helper->damage_lock, flags);
 
-       /* call dirty callback only when it has been really touched */
-       if (clip_copy.x1 < clip_copy.x2 && clip_copy.y1 < clip_copy.y2) {
-
-               /* Generic fbdev uses a shadow buffer */
-               if (helper->buffer) {
-                       ret = drm_client_buffer_vmap(helper->buffer, &map);
-                       if (ret)
-                               return;
-                       drm_fb_helper_damage_blit_real(helper, &clip_copy, &map);
-               }
-
-               if (helper->fb->funcs->dirty)
-                       helper->fb->funcs->dirty(helper->fb, NULL, 0, 0,
-                                                &clip_copy, 1);
+       /* Call damage handlers only if necessary */
+       if (!(clip_copy.x1 < clip_copy.x2 && clip_copy.y1 < clip_copy.y2))
+               return;
 
-               if (helper->buffer)
-                       drm_client_buffer_vunmap(helper->buffer);
+       /* Generic fbdev uses a shadow buffer */
+       if (helper->buffer) {
+               ret = drm_client_buffer_vmap(helper->buffer, &map);
+               if (ret)
+                       return;
+               drm_fb_helper_damage_blit_real(helper, &clip_copy, &map);
        }
+
+       if (helper->fb->funcs->dirty)
+               helper->fb->funcs->dirty(helper->fb, NULL, 0, 0, &clip_copy, 1);
+
+       if (helper->buffer)
+               drm_client_buffer_vunmap(helper->buffer);
 }
 
 /**