From 305938bb48d95b54b0c60724942f257ddc46532b Mon Sep 17 00:00:00 2001 From: Michael Drake Date: Thu, 26 Jul 2012 19:00:38 +0100 Subject: Avoid a load of repeat operations when panning by greater than viewport size. --- framebuffer/gui.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/framebuffer/gui.c b/framebuffer/gui.c index d6a340d8f..aa928707d 100644 --- a/framebuffer/gui.c +++ b/framebuffer/gui.c @@ -202,8 +202,8 @@ fb_pan(fbtk_widget_t *widget, y = fbtk_get_absy(widget); /* if the pan exceeds the viewport size just redraw the whole area */ - if (bwidget->pany > height || bwidget->pany < -height || - bwidget->panx > width || bwidget->panx < -width) { + if (bwidget->pany >= height || bwidget->pany <= -height || + bwidget->panx >= width || bwidget->panx <= -width) { bwidget->scrolly += bwidget->pany; bwidget->scrollx += bwidget->panx; @@ -212,6 +212,8 @@ fb_pan(fbtk_widget_t *widget, /* ensure we don't try to scroll again */ bwidget->panx = 0; bwidget->pany = 0; + bwidget->pan_required = false; + return; } if (bwidget->pany < 0) { -- cgit v1.2.3