+int wt_num_upd(void)
+{
+ return wt->num_upd;
+}
+
+struct wt_rect *wt_upd_rect(int idx)
+{
+ if(idx < 0 || idx >= wt->num_upd) {
+ return 0;
+ }
+ return wt->upd + idx;
+}
+
+void wt_add_upd_rect(struct wt_rect *r)
+{
+ int i;
+ struct wt_rect rect;
+
+ for(i=0; i<wt->num_upd; i++) {
+ if(wt_rect_overlap(wt->upd + i, r)) {
+ rect = wt->upd[i];
+ wt->upd[i] = wt->upd[--wt->num_upd];
+ wt_rect_union(&rect, r);
+ wt_add_upd_rect(&rect);
+ return;
+ }
+ }
+
+ /* no overlaps found, add it if there is space, or union with existing if not */
+ if(wt->num_upd >= MAX_UPD_RECTS) {
+ wt_rect_union(wt->upd, r);
+ } else {
+ wt->upd[wt->num_upd++] = *r;
+ }
+}
+
+