diff options
author | Vincent Sanders <vince@netsurf-browser.org> | 2009-02-24 12:32:28 +0000 |
---|---|---|
committer | Vincent Sanders <vince@netsurf-browser.org> | 2009-02-24 12:32:28 +0000 |
commit | b6c4a4589f8147ea7f5ee2882fa1dd99715d579c (patch) | |
tree | e601f718254f14f2dd6854ab8d8650b2fd7ccc37 /framebuffer/fb_plotters.c | |
parent | 5d2c6f8ad90084584831c7f489d6ef89a8779120 (diff) | |
download | netsurf-b6c4a4589f8147ea7f5ee2882fa1dd99715d579c.tar.gz netsurf-b6c4a4589f8147ea7f5ee2882fa1dd99715d579c.tar.bz2 |
Fix horizontal panning
Fix linux fb keymap
svn path=/trunk/netsurf/; revision=6613
Diffstat (limited to 'framebuffer/fb_plotters.c')
-rw-r--r-- | framebuffer/fb_plotters.c | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/framebuffer/fb_plotters.c b/framebuffer/fb_plotters.c index 2b6e06d23..c99c63c2c 100644 --- a/framebuffer/fb_plotters.c +++ b/framebuffer/fb_plotters.c @@ -471,18 +471,28 @@ bool fb_plotters_move_block(int srcx, int srcy, int width, int height, int dstx, { uint8_t *srcptr = (framebuffer->ptr + (srcy * framebuffer->linelen) + - (srcx)); + ((srcx * framebuffer->bpp) / 8)); uint8_t *dstptr = (framebuffer->ptr + (dsty * framebuffer->linelen) + - (dstx)); + ((dstx * framebuffer->bpp) / 8)); bbox_t redrawbox; + int hloop; LOG(("from (%d,%d) w %d h %d to (%d,%d)",srcx,srcy,width,height,dstx,dsty)); - memmove(dstptr, srcptr, (width * height * framebuffer->bpp) / 8); - + if (width == framebuffer->width) { + /* take shortcut and use memmove */ + memmove(dstptr, srcptr, (width * height * framebuffer->bpp) / 8); + } else { + + for (hloop = height; hloop > 0; hloop--) { + memmove(dstptr, srcptr, (width * framebuffer->bpp) / 8); + srcptr += framebuffer->linelen; + dstptr += framebuffer->linelen; + } + } /* callback to the os specific routine in case it needs to do something * explicit to redraw */ |