Avoid copying rectangle for redraw_request calls.

This commit is contained in:
Michael Drake 2013-08-30 11:38:02 +01:00
parent b4a3c94cf0
commit e2fbd3a266
3 changed files with 20 additions and 18 deletions

View File

@ -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

View File

@ -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)
{
}

View File

@ -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 {