diff options
author | Marcus Glocker <mglocker@cvs.openbsd.org> | 2009-09-06 10:36:05 +0000 |
---|---|---|
committer | Marcus Glocker <mglocker@cvs.openbsd.org> | 2009-09-06 10:36:05 +0000 |
commit | f16de0fb8f2ebbdd9cff066b6149e3ad71578976 (patch) | |
tree | e859de948a72eacd693163e9907d8646560cf796 /sys | |
parent | 3facc6da357ea27fa205af3b8c1ea870e0af2a28 (diff) |
Fix udl_copycols overlay copy problem by copying area to off-screen first
(same as in udl_copyrows).
Diffstat (limited to 'sys')
-rw-r--r-- | sys/dev/usb/udl.c | 8 |
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) { |