summaryrefslogtreecommitdiff
path: root/amiga
diff options
context:
space:
mode:
Diffstat (limited to 'amiga')
-rw-r--r--amiga/font_diskfont.c4
-rw-r--r--amiga/gui.c19
-rw-r--r--amiga/gui.h1
3 files changed, 15 insertions, 9 deletions
diff --git a/amiga/font_diskfont.c b/amiga/font_diskfont.c
index 61f777355..eadd80054 100644
--- a/amiga/font_diskfont.c
+++ b/amiga/font_diskfont.c
@@ -215,9 +215,9 @@ static bool amiga_bm_nsfont_split(const plot_font_style_t *fstyle,
ami_font_bm_close(bmfont);
return false;
}
-
+
offset = TextFit(glob->rp, localtext, (UWORD)strlen(localtext),
- &extent, NULL, 1, x, 32767);
+ &extent, NULL, 1, (UWORD)x, 32767);
co = offset;
charp = localtext + co;
diff --git a/amiga/gui.c b/amiga/gui.c
index 837063639..4e68530dd 100644
--- a/amiga/gui.c
+++ b/amiga/gui.c
@@ -3796,6 +3796,7 @@ gui_window_create(struct browser_window *bw,
NewList(&g->dllist);
g->deferred_rects = NewObjList();
+ g->deferred_rects_pool = CreatePool(MEMF_PRIVATE, sizeof(struct rect), sizeof(struct rect));
g->bw = bw;
g->scale = browser_window_get_scale(bw);
@@ -4446,6 +4447,7 @@ static void gui_window_destroy(struct gui_window *g)
ami_free_download_list(&g->dllist);
FreeObjList(g->deferred_rects);
+ DeletePool(g->deferred_rects_pool);
gui_window_stop_throbber(g);
cur_gw = NULL;
@@ -4657,17 +4659,18 @@ static void ami_gui_window_update_box_deferred(struct gui_window *g, bool draw)
rect->x0, rect->y0, rect->x1, rect->y1);
}
nnode=(struct nsObject *)GetSucc((struct Node *)node);
- DelObject(node);
+ FreePooled(g->deferred_rects_pool, node->objstruct, sizeof(struct rect));
+ DelObjectNoFree(node);
} while((node = nnode));
if(draw == true) ami_reset_pointer(g->shared);
}
static bool ami_gui_window_update_box_deferred_check(struct MinList *deferred_rects,
- const struct rect *new_rect)
+ const struct rect *new_rect, APTR mempool)
{
-struct nsObject *node;
-struct nsObject *nnode;
+ struct nsObject *node;
+ struct nsObject *nnode;
struct rect *rect;
if(IsMinListEmpty(deferred_rects)) return true;
@@ -4690,7 +4693,8 @@ struct nsObject *nnode;
(new_rect->x1 >= rect->x1) &&
(new_rect->y1 >= rect->y1)) {
LOG("Removing queued redraw that is a subset of new box redraw");
- DelObject(node);
+ FreePooled(mempool, node->objstruct, sizeof(struct rect));
+ DelObjectNoFree(node);
/* Don't return - we might find more */
}
} while((node = nnode));
@@ -4704,8 +4708,9 @@ static void gui_window_update_box(struct gui_window *g, const struct rect *rect)
struct rect *deferred_rect;
if(!g) return;
- if(ami_gui_window_update_box_deferred_check(g->deferred_rects, rect)) {
- deferred_rect = AllocVecTagList(sizeof(struct rect), NULL);
+ if(ami_gui_window_update_box_deferred_check(g->deferred_rects, rect,
+ g->deferred_rects_pool)) {
+ deferred_rect = AllocPooled(g->deferred_rects_pool, sizeof(struct rect));
CopyMem(rect, deferred_rect, sizeof(struct rect));
nsobj = AddObject(g->deferred_rects, AMINS_RECT);
nsobj->objstruct = deferred_rect;
diff --git a/amiga/gui.h b/amiga/gui.h
index 86dedcbc4..436991936 100644
--- a/amiga/gui.h
+++ b/amiga/gui.h
@@ -162,6 +162,7 @@ struct gui_window
hlcache_handle *favicon;
bool throbbing;
char *tabtitle;
+ APTR deferred_rects_pool;
struct MinList *deferred_rects;
struct browser_window *bw;
float scale;