Gitweb links:
...log
http://git.netsurf-browser.org/netsurf.git/shortlog/6d2a78738084a17d860a9...
...commit
http://git.netsurf-browser.org/netsurf.git/commit/6d2a78738084a17d860a9eb...
...tree
http://git.netsurf-browser.org/netsurf.git/tree/6d2a78738084a17d860a9eb96...
The branch, master has been updated
via 6d2a78738084a17d860a9eb96ada16150eeba14d (commit)
via 239f999936663c9832bc7569133e694c1ce72741 (commit)
via 1724e2835028daf90de80b151ab8fd4c3064fd02 (commit)
from 750677795ba1ca41627edd68a4de24e0d6c07a20 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commitdiff
http://git.netsurf-browser.org/netsurf.git/commit/?id=6d2a78738084a17d860...
commit 6d2a78738084a17d860a9eb96ada16150eeba14d
Author: Chris Young <chris(a)unsatisfactorysoftware.co.uk>
Commit: Chris Young <chris(a)unsatisfactorysoftware.co.uk>
Allocate deferred rectangles using itempools
On OS3 we use a normal memory pool instead
diff --git a/amiga/gui.c b/amiga/gui.c
index 3dc575c..09fc36b 100644
--- a/amiga/gui.c
+++ b/amiga/gui.c
@@ -3796,7 +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->deferred_rects_pool = ami_misc_itempool_create(sizeof(struct rect));
g->bw = bw;
g->scale = browser_window_get_scale(bw);
@@ -4447,7 +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);
+ ami_misc_itempool_delete(g->deferred_rects_pool);
gui_window_stop_throbber(g);
cur_gw = NULL;
@@ -4659,7 +4659,7 @@ 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);
- FreePooled(g->deferred_rects_pool, node->objstruct, sizeof(struct rect));
+ ami_misc_itempool_free(g->deferred_rects_pool, node->objstruct, sizeof(struct
rect));
DelObjectNoFree(node);
} while((node = nnode));
@@ -4693,7 +4693,7 @@ static bool ami_gui_window_update_box_deferred_check(struct MinList
*deferred_re
(new_rect->x1 >= rect->x1) &&
(new_rect->y1 >= rect->y1)) {
LOG("Removing queued redraw that is a subset of new box redraw");
- FreePooled(mempool, node->objstruct, sizeof(struct rect));
+ ami_misc_itempool_free(mempool, node->objstruct, sizeof(struct rect));
DelObjectNoFree(node);
/* Don't return - we might find more */
}
@@ -4710,7 +4710,7 @@ static void gui_window_update_box(struct gui_window *g, const struct
rect *rect)
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));
+ deferred_rect = ami_misc_itempool_alloc(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/misc.c b/amiga/misc.c
index 141994a..065909e 100755
--- a/amiga/misc.c
+++ b/amiga/misc.c
@@ -47,6 +47,47 @@ void *ami_misc_allocvec_clear(int size, UBYTE value)
#endif
}
+APTR ami_misc_itempool_create(int size)
+{
+#ifdef __amigaos4__
+ return AllocSysObjectTags(ASOT_ITEMPOOL,
+ ASOITEM_MFlags, MEMF_PRIVATE,
+ ASOITEM_ItemSize, size,
+ ASOITEM_GCPolicy, ITEMGC_AFTERCOUNT,
+ ASOITEM_GCParameter, 50,
+ TAG_DONE);
+#else
+ return CreatePool(MEMF_ANY, 2 * size, size);
+#endif
+}
+
+void ami_misc_itempool_delete(APTR pool)
+{
+#ifdef __amigaos4__
+ FreeSysObject(ASOT_ITEMPOOL, pool);
+#else
+ DeletePool(pool);
+#endif
+}
+
+APTR ami_misc_itempool_alloc(APTR pool, int size)
+{
+#ifdef __amigaos4__
+ return ItemPoolAlloc(pool);
+#else
+ return AllocPooled(pool, size);
+#endif
+}
+
+void ami_misc_itempool_free(APTR pool, APTR item, int size)
+{
+#ifdef __amigaos4__
+ return ItemPoolFree(pool, item);
+#else
+ return FreePooled(pool, item, size);
+#endif
+}
+
static LONG ami_misc_req(const char *message, uint32 type)
{
LONG ret = 0;
diff --git a/amiga/misc.h b/amiga/misc.h
index 66a6f1d..2544c77 100644
--- a/amiga/misc.h
+++ b/amiga/misc.h
@@ -24,6 +24,13 @@ extern struct gui_file_table *amiga_file_table;
struct Window;
void *ami_misc_allocvec_clear(int size, UBYTE value);
+
+/* Itempool cross-compatibility */
+APTR ami_misc_itempool_create(int size);
+void ami_misc_itempool_delete(APTR pool);
+APTR ami_misc_itempool_alloc(APTR pool, int size);
+void ami_misc_itempool_free(APTR pool, APTR item, int size);
+
char *translate_escape_chars(const char *s);
void ami_misc_fatal_error(const char *message);
int32 ami_warn_user_multi(const char *body,
commitdiff
http://git.netsurf-browser.org/netsurf.git/commit/?id=239f999936663c9832b...
commit 239f999936663c9832bc7569133e694c1ce72741
Merge: 1724e28 7506777
Author: Chris Young <chris(a)unsatisfactorysoftware.co.uk>
Commit: Chris Young <chris(a)unsatisfactorysoftware.co.uk>
Merge branch 'master' of
git://git.netsurf-browser.org/netsurf
commitdiff
http://git.netsurf-browser.org/netsurf.git/commit/?id=1724e2835028daf90de...
commit 1724e2835028daf90de80b151ab8fd4c3064fd02
Author: Chris Young <chris(a)unsatisfactorysoftware.co.uk>
Commit: Chris Young <chris(a)unsatisfactorysoftware.co.uk>
Use a memory pool for deferred rects
diff --git a/amiga/font_diskfont.c b/amiga/font_diskfont.c
index 61f7773..eadd800 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 8370636..4e68530 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 86dedcb..4369919 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;
-----------------------------------------------------------------------
Summary of changes:
amiga/font_diskfont.c | 4 ++--
amiga/gui.c | 19 ++++++++++++-------
amiga/gui.h | 1 +
amiga/misc.c | 41 +++++++++++++++++++++++++++++++++++++++++
amiga/misc.h | 7 +++++++
5 files changed, 63 insertions(+), 9 deletions(-)
diff --git a/amiga/font_diskfont.c b/amiga/font_diskfont.c
index bd1e1f9..20b6985 100644
--- a/amiga/font_diskfont.c
+++ b/amiga/font_diskfont.c
@@ -218,9 +218,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 768b406..09fc36b 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 = ami_misc_itempool_create(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);
+ ami_misc_itempool_delete(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);
+ ami_misc_itempool_free(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);
+ ami_misc_itempool_free(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 = ami_misc_itempool_alloc(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 86dedcb..4369919 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;
diff --git a/amiga/misc.c b/amiga/misc.c
index 141994a..065909e 100755
--- a/amiga/misc.c
+++ b/amiga/misc.c
@@ -47,6 +47,47 @@ void *ami_misc_allocvec_clear(int size, UBYTE value)
#endif
}
+APTR ami_misc_itempool_create(int size)
+{
+#ifdef __amigaos4__
+ return AllocSysObjectTags(ASOT_ITEMPOOL,
+ ASOITEM_MFlags, MEMF_PRIVATE,
+ ASOITEM_ItemSize, size,
+ ASOITEM_GCPolicy, ITEMGC_AFTERCOUNT,
+ ASOITEM_GCParameter, 50,
+ TAG_DONE);
+#else
+ return CreatePool(MEMF_ANY, 2 * size, size);
+#endif
+}
+
+void ami_misc_itempool_delete(APTR pool)
+{
+#ifdef __amigaos4__
+ FreeSysObject(ASOT_ITEMPOOL, pool);
+#else
+ DeletePool(pool);
+#endif
+}
+
+APTR ami_misc_itempool_alloc(APTR pool, int size)
+{
+#ifdef __amigaos4__
+ return ItemPoolAlloc(pool);
+#else
+ return AllocPooled(pool, size);
+#endif
+}
+
+void ami_misc_itempool_free(APTR pool, APTR item, int size)
+{
+#ifdef __amigaos4__
+ return ItemPoolFree(pool, item);
+#else
+ return FreePooled(pool, item, size);
+#endif
+}
+
static LONG ami_misc_req(const char *message, uint32 type)
{
LONG ret = 0;
diff --git a/amiga/misc.h b/amiga/misc.h
index 66a6f1d..2544c77 100644
--- a/amiga/misc.h
+++ b/amiga/misc.h
@@ -24,6 +24,13 @@ extern struct gui_file_table *amiga_file_table;
struct Window;
void *ami_misc_allocvec_clear(int size, UBYTE value);
+
+/* Itempool cross-compatibility */
+APTR ami_misc_itempool_create(int size);
+void ami_misc_itempool_delete(APTR pool);
+APTR ami_misc_itempool_alloc(APTR pool, int size);
+void ami_misc_itempool_free(APTR pool, APTR item, int size);
+
char *translate_escape_chars(const char *s);
void ami_misc_fatal_error(const char *message);
int32 ami_warn_user_multi(const char *body,
--
NetSurf Browser