summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Drake <tlsa@netsurf-browser.org>2013-08-30 11:38:02 +0100
committerMichael Drake <tlsa@netsurf-browser.org>2013-08-30 11:38:02 +0100
commite2fbd3a266fcd33e7d380f45f891eee515b3fc90 (patch)
treeae0262851074eba6b0a57550d2b7d6fd67b79a89
parentb4a3c94cf0c7b775becc8cf2da1137b351a7accb (diff)
downloadnetsurf-e2fbd3a266fcd33e7d380f45f891eee515b3fc90.tar.gz
netsurf-e2fbd3a266fcd33e7d380f45f891eee515b3fc90.tar.bz2
Avoid copying rectangle for redraw_request calls.
-rw-r--r--desktop/core_window.h4
-rw-r--r--desktop/tree.c10
-rw-r--r--desktop/treeview.c24
3 files changed, 20 insertions, 18 deletions
diff --git a/desktop/core_window.h b/desktop/core_window.h
index 8af893778..3fe88f3d7 100644
--- a/desktop/core_window.h
+++ b/desktop/core_window.h
@@ -42,7 +42,7 @@ struct core_window_callback_table {
* \param cw the core window object
* \param r rectangle to redraw
*/
- void (*redraw_request)(struct core_window *cw, struct rect r);
+ void (*redraw_request)(struct core_window *cw, const struct rect *r);
/**
* Update the limits of the window
@@ -59,7 +59,7 @@ struct core_window_callback_table {
* \param cw the core window object
* \param r rectangle to make visible
*/
- void (*scroll_visible)(struct core_window *cw, struct rect r);
+ void (*scroll_visible)(struct core_window *cw, const struct rect *r);
/**
* Get window viewport dimensions
diff --git a/desktop/tree.c b/desktop/tree.c
index a60db57d6..8966be33f 100644
--- a/desktop/tree.c
+++ b/desktop/tree.c
@@ -187,12 +187,13 @@ const char *tree_hotlist_path = NULL;
int treeview_inits;
-static void treeview_test_redraw_request(struct core_window *cw, struct rect r)
+static void treeview_test_redraw_request(struct core_window *cw,
+ const struct rect *r)
{
struct tree *tree = (struct tree *)cw;
- tree->callbacks->redraw_request(r.x0, r.y0,
- r.x1 - r.x0, r.y1 - r.y0,
+ tree->callbacks->redraw_request(r->x0, r->y0,
+ r->x1 - r->x0, r->y1 - r->y0,
tree->client_data);
}
@@ -204,7 +205,8 @@ static void treeview_test_update_size(struct core_window *cw,
tree->callbacks->resized(tree, width, height, tree->client_data);
}
-static void treeview_test_scroll_visible(struct core_window *cw, struct rect r)
+static void treeview_test_scroll_visible(struct core_window *cw,
+ const struct rect *r)
{
}
diff --git a/desktop/treeview.c b/desktop/treeview.c
index cb90bcc0f..f4fa7e8e5 100644
--- a/desktop/treeview.c
+++ b/desktop/treeview.c
@@ -573,7 +573,7 @@ nserror treeview_create_node_folder(treeview *tree,
r.y0 = treeview_node_y(tree, n);
r.x1 = REDRAW_MAX;
r.y1 = tree->root->height;
- tree->cw_t->redraw_request(tree->cw_h, r);
+ tree->cw_t->redraw_request(tree->cw_h, &r);
}
}
@@ -623,7 +623,7 @@ nserror treeview_update_node_folder(treeview *tree,
r.y0 = treeview_node_y(tree, folder);
r.x1 = REDRAW_MAX;
r.y1 = r.y0 + tree_g.line_height;
- tree->cw_t->redraw_request(tree->cw_h, r);
+ tree->cw_t->redraw_request(tree->cw_h, &r);
}
return NSERROR_OK;
@@ -694,7 +694,7 @@ nserror treeview_update_node_entry(treeview *tree,
r.y0 = treeview_node_y(tree, entry);
r.x1 = REDRAW_MAX;
r.y1 = r.y0 + entry->height;
- tree->cw_t->redraw_request(tree->cw_h, r);
+ tree->cw_t->redraw_request(tree->cw_h, &r);
}
return NSERROR_OK;
@@ -779,7 +779,7 @@ nserror treeview_create_node_entry(treeview *tree,
r.y0 = treeview_node_y(tree, n);
r.x1 = REDRAW_MAX;
r.y1 = tree->root->height;
- tree->cw_t->redraw_request(tree->cw_h, r);
+ tree->cw_t->redraw_request(tree->cw_h, &r);
}
}
@@ -900,7 +900,7 @@ static void treeview_edit_cancel(treeview *tree, bool redraw)
r.y0 = tree->edit.y;
r.x1 = tree->edit.x + tree->edit.w;
r.y1 = tree->edit.y + tree->edit.h;
- tree->cw_t->redraw_request(tree->cw_h, r);
+ tree->cw_t->redraw_request(tree->cw_h, &r);
}
}
@@ -1182,7 +1182,7 @@ nserror treeview_delete_node(treeview *tree, treeview_node *n)
if (p->flags & TREE_NODE_EXPANDED) {
r.x0 = 0;
r.x1 = REDRAW_MAX;
- tree->cw_t->redraw_request(tree->cw_h, r);
+ tree->cw_t->redraw_request(tree->cw_h, &r);
}
return NSERROR_OK;
@@ -2450,7 +2450,7 @@ bool treeview_keypress(treeview *tree, uint32_t key)
}
if (redraw) {
- tree->cw_t->redraw_request(tree->cw_h, r);
+ tree->cw_t->redraw_request(tree->cw_h, &r);
}
return true;
@@ -2621,7 +2621,7 @@ static void treeview_textarea_callback(void *data, struct textarea_msg *msg)
r->y1 += tree->edit.y;
/* Redraw the textarea */
- tree->cw_t->redraw_request(tree->cw_h, *r);
+ tree->cw_t->redraw_request(tree->cw_h, r);
break;
default:
@@ -2794,7 +2794,7 @@ void treeview_edit_selection(treeview *tree)
rect.y0 = y;
rect.x1 = REDRAW_MAX;
rect.y1 = y + tree_g.line_height;
- tree->cw_t->redraw_request(tree->cw_h, rect);
+ tree->cw_t->redraw_request(tree->cw_h, &rect);
}
@@ -3054,7 +3054,7 @@ static nserror treeview_node_mouse_action_cb(treeview_node *node, void *ctx,
}
if (redraw) {
- ma->tree->cw_t->redraw_request(ma->tree->cw_h, r);
+ ma->tree->cw_t->redraw_request(ma->tree->cw_h, &r);
}
*end = true; /* Reached line with click; stop walking tree */
@@ -3116,7 +3116,7 @@ void treeview_mouse_action(treeview *tree,
tree->cw_t->drag_status(tree->cw_h,
CORE_WINDOW_DRAG_NONE);
- tree->cw_t->redraw_request(tree->cw_h, r);
+ tree->cw_t->redraw_request(tree->cw_h, &r);
return;
default:
/* No drag to end */
@@ -3191,7 +3191,7 @@ void treeview_mouse_action(treeview *tree,
}
if (redraw) {
- tree->cw_t->redraw_request(tree->cw_h, r);
+ tree->cw_t->redraw_request(tree->cw_h, &r);
}
} else {