diff options
author | Vincent Sanders <vince@netsurf-browser.org> | 2010-04-28 23:29:12 +0000 |
---|---|---|
committer | Vincent Sanders <vince@netsurf-browser.org> | 2010-04-28 23:29:12 +0000 |
commit | 0d3601a7ce264b4b011e8f7149ee06b6f8da7816 (patch) | |
tree | c2e62bcea35732ea1b68b2ea832ccb6ea6de7bd6 | |
parent | 2fd1476f8c99c4d4f6eb114cc7b5f8ac9ab54be4 (diff) | |
download | netsurf-0d3601a7ce264b4b011e8f7149ee06b6f8da7816.tar.gz netsurf-0d3601a7ce264b4b011e8f7149ee06b6f8da7816.tar.bz2 |
fix pending redraw discovery
svn path=/trunk/netsurf/; revision=10515
-rw-r--r-- | framebuffer/fbtk.c | 17 | ||||
-rw-r--r-- | framebuffer/fbtk.h | 2 | ||||
-rw-r--r-- | framebuffer/gui.c | 6 | ||||
-rw-r--r-- | framebuffer/schedule.c | 6 |
4 files changed, 21 insertions, 10 deletions
diff --git a/framebuffer/fbtk.c b/framebuffer/fbtk.c index 6334bedd5..450e7fdc1 100644 --- a/framebuffer/fbtk.c +++ b/framebuffer/fbtk.c @@ -154,20 +154,20 @@ get_root_widget(fbtk_widget_t *widget) void fbtk_request_redraw(fbtk_widget_t *widget) { - widget->redraw_required = 1; + widget->redraw_required = true; if (widget->type == FB_WIDGET_TYPE_WINDOW) { fbtk_widget_list_t *lent = widget->u.window.widgets; while (lent != NULL) { - lent->widget->redraw_required = 1; + lent->widget->redraw_required = true; lent = lent->next; } } while (widget->parent != NULL) { widget = widget->parent; - widget->redraw_required = 1; + widget->redraw_required = true; } } @@ -760,6 +760,17 @@ fbtk_move_pointer(fbtk_widget_t *widget, int x, int y, bool relative) } +bool +fbtk_redraw_pending(fbtk_widget_t *widget) +{ + fbtk_widget_t *root; + + /* ensure we have the root widget */ + root = get_root_widget(widget); + + return root->redraw_required; +} + int fbtk_redraw(fbtk_widget_t *widget) { diff --git a/framebuffer/fbtk.h b/framebuffer/fbtk.h index a3acc08b6..e1f117e0b 100644 --- a/framebuffer/fbtk.h +++ b/framebuffer/fbtk.h @@ -241,6 +241,8 @@ void fbtk_request_redraw(fbtk_widget_t *widget); */ int fbtk_redraw(fbtk_widget_t *widget); +bool fbtk_redraw_pending(fbtk_widget_t *widget); + int fbtk_count_children(fbtk_widget_t *widget); bool fbtk_get_bbox(fbtk_widget_t *widget, struct nsfb_bbox_s *bbox); diff --git a/framebuffer/gui.c b/framebuffer/gui.c index 2689ffd8b..287652d6e 100644 --- a/framebuffer/gui.c +++ b/framebuffer/gui.c @@ -69,8 +69,6 @@ struct gui_window *input_window = NULL; struct gui_window *search_current_window; struct gui_window *window_list = NULL; -bool redraws_pending = false; - /* private data for browser user widget */ struct browser_widget_s { struct browser_window *bw; /**< The browser window connected to this gui window */ @@ -472,7 +470,7 @@ void gui_multitask(void) void gui_poll(bool active) { nsfb_event_t event; - int timeout; + int timeout; /* timeout in miliseconds */ /* run the scheduler and discover how long to wait for the next event */ timeout = schedule_run(); @@ -482,7 +480,7 @@ void gui_poll(bool active) timeout = 0; /* if redraws are pending do not wait for event, return immediately */ - if (redraws_pending) + if (fbtk_redraw_pending(fbtk)) timeout = 0; if (fbtk_event(fbtk, &event, timeout)) { diff --git a/framebuffer/schedule.c b/framebuffer/schedule.c index 150ac037b..7da0c7aec 100644 --- a/framebuffer/schedule.c +++ b/framebuffer/schedule.c @@ -191,9 +191,9 @@ schedule_run(void) /* make rettime relative to now */ timersub(&nexttime, &tv, &rettime); - LOG(("returning time to next event as %ldcs",(rettime.tv_sec * 100) + (rettime.tv_usec / 10000))); - /* return next event time in cs */ - return (rettime.tv_sec * 100) + (rettime.tv_usec / 10000); + /*LOG(("returning time to next event as %ldms",(rettime.tv_sec * 1000) + (rettime.tv_usec / 1000))); */ + /* return next event time in milliseconds (24days max wait) */ + return (rettime.tv_sec * 1000) + (rettime.tv_usec / 1000); } void list_schedule(void) |