summaryrefslogtreecommitdiff
path: root/sys/dev/usb/udl.c
diff options
context:
space:
mode:
authorMarcus Glocker <mglocker@cvs.openbsd.org>2009-09-06 10:36:05 +0000
committerMarcus Glocker <mglocker@cvs.openbsd.org>2009-09-06 10:36:05 +0000
commitf16de0fb8f2ebbdd9cff066b6149e3ad71578976 (patch)
treee859de948a72eacd693163e9907d8646560cf796 /sys/dev/usb/udl.c
parent3facc6da357ea27fa205af3b8c1ea870e0af2a28 (diff)
Fix udl_copycols overlay copy problem by copying area to off-screen first
(same as in udl_copyrows).
Diffstat (limited to 'sys/dev/usb/udl.c')
-rw-r--r--sys/dev/usb/udl.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/sys/dev/usb/udl.c b/sys/dev/usb/udl.c
index 3e4f680e78e..0762e35b97c 100644
--- a/sys/dev/usb/udl.c
+++ b/sys/dev/usb/udl.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: udl.c,v 1.31 2009/09/05 20:35:30 mglocker Exp $ */
+/* $OpenBSD: udl.c,v 1.32 2009/09/06 10:36:04 mglocker Exp $ */
/*
* Copyright (c) 2009 Marcus Glocker <mglocker@openbsd.org>
@@ -574,7 +574,11 @@ udl_copycols(void *cookie, int row, int src, int dst, int num)
cx = num * ri->ri_font->fontwidth;
cy = ri->ri_font->fontheight;
- (sc->udl_fb_block_copy)(sc, sx, sy, dx, dy, cx, cy);
+ /* copy row block to off-screen first to fix overlay-copy problem */
+ (sc->udl_fb_block_copy)(sc, sx, sy, 0, sc->sc_ri.ri_emuheight, cx, cy);
+
+ /* copy row block back from off-screen now */
+ (sc->udl_fb_block_copy)(sc, 0, sc->sc_ri.ri_emuheight, dx, dy, cx, cy);
error = udl_cmd_send_async(sc);
if (error != USBD_NORMAL_COMPLETION) {