summaryrefslogtreecommitdiff
path: root/amiga
diff options
context:
space:
mode:
authorChris Young <chris@unsatisfactorysoftware.co.uk>2013-04-11 21:20:25 +0100
committerChris Young <chris@unsatisfactorysoftware.co.uk>2013-04-11 21:20:25 +0100
commit26dbb7a60230c971e1681454c0008724331b1657 (patch)
tree29ceca0b762aaf2b57839c036211335f31528d8c /amiga
parent6ee4fa3f8124d9729a5740a09ab1be760f0bd375 (diff)
downloadnetsurf-26dbb7a60230c971e1681454c0008724331b1657.tar.gz
netsurf-26dbb7a60230c971e1681454c0008724331b1657.tar.bz2
Avoid multiple schedules of redraws
Diffstat (limited to 'amiga')
-rw-r--r--amiga/gui.c8
-rwxr-xr-xamiga/gui.h1
2 files changed, 8 insertions, 1 deletions
diff --git a/amiga/gui.c b/amiga/gui.c
index bbd52bb10..0e07be020 100644
--- a/amiga/gui.c
+++ b/amiga/gui.c
@@ -3888,6 +3888,8 @@ static void ami_redraw_callback(void *p)
gui_window_place_caret(gwin->bw->window, gwin->bw->window->c_x,
gwin->bw->window->c_y, gwin->bw->window->c_h, NULL);
}
+
+ gwin->redraw_scheduled = false;
}
/**
@@ -3900,9 +3902,13 @@ static void ami_redraw_callback(void *p)
void ami_schedule_redraw(struct gui_window_2 *gwin, bool full_redraw)
{
int cs = 0;
+
+ if(full_redraw) gwin->redraw_required = true;
+ if(gwin->redraw_scheduled == true) return;
+
if(gwin->bw->reformat_pending) cs = nsoption_int(reformat_delay);
schedule(cs, ami_redraw_callback, gwin);
- if(full_redraw) gwin->redraw_required = true;
+ gwin->redraw_scheduled = true;
}
static void ami_do_redraw_tiled(struct gui_window_2 *gwin, bool busy,
diff --git a/amiga/gui.h b/amiga/gui.h
index 08a8b19e9..342c9f7f5 100755
--- a/amiga/gui.h
+++ b/amiga/gui.h
@@ -97,6 +97,7 @@ struct gui_window_2 {
int temp;
bool redraw_scroll;
bool new_content;
+ bool redraw_scheduled;
char *menulab[AMI_MENU_AREXX_MAX + 1];
char menukey[AMI_MENU_AREXX_MAX + 1];
struct Hook menu_hook[AMI_MENU_AREXX_MAX + 1];