Commit 6c3912d6 authored by Haixia Shi's avatar Haixia Shi Committed by Dave Airlie

drm/udl: properly set active_16 flag in udl_crtc_page_flip(). (v2)

When page flipping, we need to mark the new fb as active and unmark the active
flag for the old fb (if different).
Signed-off-by: default avatarHaixia Shi <hshi@chromium.org>
Reviewed-by: default avatarStéphane Marchesin <marcheu@chromium.org>
Signed-off-by: default avatarDave Airlie <airlied@gmail.com>
parent 56a8620a
...@@ -340,11 +340,11 @@ static int udl_crtc_mode_set(struct drm_crtc *crtc, ...@@ -340,11 +340,11 @@ static int udl_crtc_mode_set(struct drm_crtc *crtc,
wrptr = udl_dummy_render(wrptr); wrptr = udl_dummy_render(wrptr);
ufb->active_16 = true;
if (old_fb) { if (old_fb) {
struct udl_framebuffer *uold_fb = to_udl_fb(old_fb); struct udl_framebuffer *uold_fb = to_udl_fb(old_fb);
uold_fb->active_16 = false; uold_fb->active_16 = false;
} }
ufb->active_16 = true;
udl->mode_buf_len = wrptr - buf; udl->mode_buf_len = wrptr - buf;
/* damage all of it */ /* damage all of it */
...@@ -373,6 +373,13 @@ static int udl_crtc_page_flip(struct drm_crtc *crtc, ...@@ -373,6 +373,13 @@ static int udl_crtc_page_flip(struct drm_crtc *crtc,
struct drm_device *dev = crtc->dev; struct drm_device *dev = crtc->dev;
unsigned long flags; unsigned long flags;
struct drm_framebuffer *old_fb = crtc->primary->fb;
if (old_fb) {
struct udl_framebuffer *uold_fb = to_udl_fb(old_fb);
uold_fb->active_16 = false;
}
ufb->active_16 = true;
udl_handle_damage(ufb, 0, 0, fb->width, fb->height); udl_handle_damage(ufb, 0, 0, fb->width, fb->height);
spin_lock_irqsave(&dev->event_lock, flags); spin_lock_irqsave(&dev->event_lock, flags);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment