netsurf: branch master updated. release/3.0-666-g10bc47a
by NetSurf Browser Project
Gitweb links:
...log http://git.netsurf-browser.org/netsurf.git/shortlog/10bc47a709a569d249c06...
...commit http://git.netsurf-browser.org/netsurf.git/commit/10bc47a709a569d249c06de...
...tree http://git.netsurf-browser.org/netsurf.git/tree/10bc47a709a569d249c06de59...
The branch, master has been updated
via 10bc47a709a569d249c06de59b7f37d5cf71b30e (commit)
via 4fa77f968671f75038676ee0a76348c6a969c88f (commit)
via 897cbb7df14ad3b63ea55ed4eed48572203bacc7 (commit)
via 555924a73d921a3651d1399389d9d26adb0e179e (commit)
via e1a96ecfe1735e916156bfe9e9c06196116caadd (commit)
from 182b97ed3354fcdd4dfb3de54bf7afdf32c6365d (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=10bc47a709a569d249c...
commit 10bc47a709a569d249c06de59b7f37d5cf71b30e
Author: Michael Drake <tlsa(a)netsurf-browser.org>
Commit: Michael Drake <tlsa(a)netsurf-browser.org>
Register destruction function for browser widget.
diff --git a/framebuffer/gui.c b/framebuffer/gui.c
index a941832..b4bb3ef 100644
--- a/framebuffer/gui.c
+++ b/framebuffer/gui.c
@@ -410,6 +410,22 @@ fb_browser_window_redraw(fbtk_widget_t *widget, fbtk_callback_info *cbi)
return 0;
}
+static int fb_browser_window_destroy(fbtk_widget_t *widget,
+ fbtk_callback_info *cbi)
+{
+ struct browser_widget_s *browser_widget;
+
+ if (widget == NULL) {
+ return 0;
+ }
+
+ /* Free private data */
+ browser_widget = fbtk_get_userpw(widget);
+ free(browser_widget);
+
+ return 0;
+}
+
static const char *fename;
static int febpp;
@@ -1473,6 +1489,7 @@ create_browser_widget(struct gui_window *gw, int toolbar_height, int furniture_w
browser_widget);
fbtk_set_handler(gw->browser, FBTK_CBT_REDRAW, fb_browser_window_redraw, gw);
+ fbtk_set_handler(gw->browser, FBTK_CBT_DESTROY, fb_browser_window_destroy, gw);
fbtk_set_handler(gw->browser, FBTK_CBT_INPUT, fb_browser_window_input, gw);
fbtk_set_handler(gw->browser, FBTK_CBT_CLICK, fb_browser_window_click, gw);
fbtk_set_handler(gw->browser, FBTK_CBT_STRIP_FOCUS, fb_browser_window_strip_focus, gw);
@@ -1612,8 +1629,6 @@ gui_window_destroy(struct gui_window *gw)
fbtk_destroy_widget(gw->window);
free(gw);
-
-
}
void
commitdiff http://git.netsurf-browser.org/netsurf.git/commit/?id=4fa77f968671f750386...
commit 4fa77f968671f75038676ee0a76348c6a969c88f
Author: Michael Drake <tlsa(a)netsurf-browser.org>
Commit: Michael Drake <tlsa(a)netsurf-browser.org>
Add font_finalise.
diff --git a/framebuffer/font_internal.c b/framebuffer/font_internal.c
index 60f1b8e..dc1b358 100644
--- a/framebuffer/font_internal.c
+++ b/framebuffer/font_internal.c
@@ -31,7 +31,12 @@
bool fb_font_init(void)
{
- return true;
+ return true;
+}
+
+bool fb_font_finalise(void)
+{
+ return true;
}
const struct fb_font_desc*
commitdiff http://git.netsurf-browser.org/netsurf.git/commit/?id=897cbb7df14ad3b63ea...
commit 897cbb7df14ad3b63ea55ed4eed48572203bacc7
Author: Michael Drake <tlsa(a)netsurf-browser.org>
Commit: Michael Drake <tlsa(a)netsurf-browser.org>
Free font face id descriptors.
diff --git a/framebuffer/font_freetype.c b/framebuffer/font_freetype.c
index 150d203..521a5bc 100644
--- a/framebuffer/font_freetype.c
+++ b/framebuffer/font_freetype.c
@@ -57,20 +57,20 @@ typedef struct fb_faceid_s {
enum fb_face_e {
FB_FACE_SANS_SERIF = 0,
- FB_FACE_SANS_SERIF_BOLD = 1,
- FB_FACE_SANS_SERIF_ITALIC = 2,
- FB_FACE_SANS_SERIF_ITALIC_BOLD = 3,
- FB_FACE_SERIF = 4,
- FB_FACE_SERIF_BOLD = 5,
- FB_FACE_MONOSPACE = 6,
- FB_FACE_MONOSPACE_BOLD = 7,
- FB_FACE_CURSIVE = 8,
- FB_FACE_FANTASY = 9,
+ FB_FACE_SANS_SERIF_BOLD,
+ FB_FACE_SANS_SERIF_ITALIC,
+ FB_FACE_SANS_SERIF_ITALIC_BOLD,
+ FB_FACE_SERIF,
+ FB_FACE_SERIF_BOLD,
+ FB_FACE_MONOSPACE,
+ FB_FACE_MONOSPACE_BOLD,
+ FB_FACE_CURSIVE,
+ FB_FACE_FANTASY,
+ FB_FACE_COUNT
};
/* defines for accesing the faces */
#define FB_FACE_DEFAULT 0
-#define FB_FACE_COUNT 10
static fb_faceid_t *fb_faces[FB_FACE_COUNT];
@@ -148,6 +148,7 @@ fb_new_face(const char *option, const char *resname, const char *fontname)
error = FTC_Manager_LookupFace(ft_cmanager, (FTC_FaceID)newf, &aface);
if (error) {
LOG(("Could not find font face %s (code %d)", fontname, error));
+ free(newf->fontfile);
free(newf);
newf = NULL;
}
@@ -323,8 +324,27 @@ bool fb_font_init(void)
bool fb_font_finalise(void)
{
- FTC_Manager_Done(ft_cmanager );
+ int i, j;
+
+ FTC_Manager_Done(ft_cmanager);
FT_Done_FreeType(library);
+
+ for (i = 0; i < FB_FACE_COUNT; i++) {
+ if (fb_faces[i] == NULL)
+ continue;
+
+ /* Unset any faces that duplicate this one */
+ for (j = i + 1; j < FB_FACE_COUNT; j++) {
+ if (fb_faces[i] == fb_faces[j])
+ fb_faces[j] = NULL;
+ }
+
+ free(fb_faces[i]->fontfile);
+ free(fb_faces[i]);
+
+ fb_faces[i] = NULL;
+ }
+
return true;
}
commitdiff http://git.netsurf-browser.org/netsurf.git/commit/?id=555924a73d921a3651d...
commit 555924a73d921a3651d1399389d9d26adb0e179e
Author: Michael Drake <tlsa(a)netsurf-browser.org>
Commit: Michael Drake <tlsa(a)netsurf-browser.org>
Call font finaliser on quit.
diff --git a/framebuffer/gui.c b/framebuffer/gui.c
index 6530c38..a941832 100644
--- a/framebuffer/gui.c
+++ b/framebuffer/gui.c
@@ -625,6 +625,9 @@ main(int argc, char** argv)
netsurf_exit();
+ if (fb_font_finalise() == false)
+ LOG(("Font finalisation failed."));
+
/* finalise options */
nsoption_finalise(nsoptions, nsoptions_default);
commitdiff http://git.netsurf-browser.org/netsurf.git/commit/?id=e1a96ecfe1735e91615...
commit e1a96ecfe1735e916156bfe9e9c06196116caadd
Author: Michael Drake <tlsa(a)netsurf-browser.org>
Commit: Michael Drake <tlsa(a)netsurf-browser.org>
Register destruction callback to free text widget text.
diff --git a/framebuffer/fbtk/text.c b/framebuffer/fbtk/text.c
index f3c88ba..a456228 100644
--- a/framebuffer/fbtk/text.c
+++ b/framebuffer/fbtk/text.c
@@ -169,6 +169,27 @@ fb_redraw_text(fbtk_widget_t *widget, fbtk_callback_info *cbi )
return 0;
}
+/** Text destroy callback.
+ *
+ * Called when a text widget is destroyed.
+ *
+ * @param widget The widget being destroyed.
+ * @param cbi The callback parameters.
+ * @return The callback result.
+ */
+static int fb_destroy_text(fbtk_widget_t *widget, fbtk_callback_info *cbi)
+{
+ if ((widget == NULL) || (widget->type != FB_WIDGET_TYPE_TEXT)) {
+ return 0;
+ }
+
+ if (widget->u.text.text != NULL) {
+ free(widget->u.text.text);
+ }
+
+ return 0;
+}
+
/** Text button redraw callback.
*
* Called when a text widget requires redrawing.
@@ -545,6 +566,7 @@ fbtk_create_text(fbtk_widget_t *parent,
neww->u.text.outline = outline;
fbtk_set_handler(neww, FBTK_CBT_REDRAW, fb_redraw_text, NULL);
+ fbtk_set_handler(neww, FBTK_CBT_DESTROY, fb_destroy_text, NULL);
return neww;
}
@@ -574,6 +596,7 @@ fbtk_create_writable_text(fbtk_widget_t *parent,
neww->u.text.pw = pw;
fbtk_set_handler(neww, FBTK_CBT_REDRAW, fb_redraw_text, NULL);
+ fbtk_set_handler(neww, FBTK_CBT_DESTROY, fb_destroy_text, NULL);
fbtk_set_handler(neww, FBTK_CBT_CLICK, text_input_click, pw);
fbtk_set_handler(neww, FBTK_CBT_STRIP_FOCUS, text_input_strip_focus, NULL);
fbtk_set_handler(neww, FBTK_CBT_INPUT, text_input, neww);
@@ -603,6 +626,7 @@ fbtk_create_text_button(fbtk_widget_t *parent,
neww->u.text.outline = true;
fbtk_set_handler(neww, FBTK_CBT_REDRAW, fb_redraw_text_button, NULL);
+ fbtk_set_handler(neww, FBTK_CBT_DESTROY, fb_destroy_text, NULL);
fbtk_set_handler(neww, FBTK_CBT_CLICK, click, pw);
fbtk_set_handler(neww, FBTK_CBT_POINTERENTER, fbtk_set_ptr, &hand_image);
-----------------------------------------------------------------------
Summary of changes:
framebuffer/fbtk/text.c | 24 ++++++++++++++++++++++++
framebuffer/font_freetype.c | 42 +++++++++++++++++++++++++++++++-----------
framebuffer/font_internal.c | 7 ++++++-
framebuffer/gui.c | 22 ++++++++++++++++++++--
4 files changed, 81 insertions(+), 14 deletions(-)
diff --git a/framebuffer/fbtk/text.c b/framebuffer/fbtk/text.c
index f3c88ba..a456228 100644
--- a/framebuffer/fbtk/text.c
+++ b/framebuffer/fbtk/text.c
@@ -169,6 +169,27 @@ fb_redraw_text(fbtk_widget_t *widget, fbtk_callback_info *cbi )
return 0;
}
+/** Text destroy callback.
+ *
+ * Called when a text widget is destroyed.
+ *
+ * @param widget The widget being destroyed.
+ * @param cbi The callback parameters.
+ * @return The callback result.
+ */
+static int fb_destroy_text(fbtk_widget_t *widget, fbtk_callback_info *cbi)
+{
+ if ((widget == NULL) || (widget->type != FB_WIDGET_TYPE_TEXT)) {
+ return 0;
+ }
+
+ if (widget->u.text.text != NULL) {
+ free(widget->u.text.text);
+ }
+
+ return 0;
+}
+
/** Text button redraw callback.
*
* Called when a text widget requires redrawing.
@@ -545,6 +566,7 @@ fbtk_create_text(fbtk_widget_t *parent,
neww->u.text.outline = outline;
fbtk_set_handler(neww, FBTK_CBT_REDRAW, fb_redraw_text, NULL);
+ fbtk_set_handler(neww, FBTK_CBT_DESTROY, fb_destroy_text, NULL);
return neww;
}
@@ -574,6 +596,7 @@ fbtk_create_writable_text(fbtk_widget_t *parent,
neww->u.text.pw = pw;
fbtk_set_handler(neww, FBTK_CBT_REDRAW, fb_redraw_text, NULL);
+ fbtk_set_handler(neww, FBTK_CBT_DESTROY, fb_destroy_text, NULL);
fbtk_set_handler(neww, FBTK_CBT_CLICK, text_input_click, pw);
fbtk_set_handler(neww, FBTK_CBT_STRIP_FOCUS, text_input_strip_focus, NULL);
fbtk_set_handler(neww, FBTK_CBT_INPUT, text_input, neww);
@@ -603,6 +626,7 @@ fbtk_create_text_button(fbtk_widget_t *parent,
neww->u.text.outline = true;
fbtk_set_handler(neww, FBTK_CBT_REDRAW, fb_redraw_text_button, NULL);
+ fbtk_set_handler(neww, FBTK_CBT_DESTROY, fb_destroy_text, NULL);
fbtk_set_handler(neww, FBTK_CBT_CLICK, click, pw);
fbtk_set_handler(neww, FBTK_CBT_POINTERENTER, fbtk_set_ptr, &hand_image);
diff --git a/framebuffer/font_freetype.c b/framebuffer/font_freetype.c
index 150d203..521a5bc 100644
--- a/framebuffer/font_freetype.c
+++ b/framebuffer/font_freetype.c
@@ -57,20 +57,20 @@ typedef struct fb_faceid_s {
enum fb_face_e {
FB_FACE_SANS_SERIF = 0,
- FB_FACE_SANS_SERIF_BOLD = 1,
- FB_FACE_SANS_SERIF_ITALIC = 2,
- FB_FACE_SANS_SERIF_ITALIC_BOLD = 3,
- FB_FACE_SERIF = 4,
- FB_FACE_SERIF_BOLD = 5,
- FB_FACE_MONOSPACE = 6,
- FB_FACE_MONOSPACE_BOLD = 7,
- FB_FACE_CURSIVE = 8,
- FB_FACE_FANTASY = 9,
+ FB_FACE_SANS_SERIF_BOLD,
+ FB_FACE_SANS_SERIF_ITALIC,
+ FB_FACE_SANS_SERIF_ITALIC_BOLD,
+ FB_FACE_SERIF,
+ FB_FACE_SERIF_BOLD,
+ FB_FACE_MONOSPACE,
+ FB_FACE_MONOSPACE_BOLD,
+ FB_FACE_CURSIVE,
+ FB_FACE_FANTASY,
+ FB_FACE_COUNT
};
/* defines for accesing the faces */
#define FB_FACE_DEFAULT 0
-#define FB_FACE_COUNT 10
static fb_faceid_t *fb_faces[FB_FACE_COUNT];
@@ -148,6 +148,7 @@ fb_new_face(const char *option, const char *resname, const char *fontname)
error = FTC_Manager_LookupFace(ft_cmanager, (FTC_FaceID)newf, &aface);
if (error) {
LOG(("Could not find font face %s (code %d)", fontname, error));
+ free(newf->fontfile);
free(newf);
newf = NULL;
}
@@ -323,8 +324,27 @@ bool fb_font_init(void)
bool fb_font_finalise(void)
{
- FTC_Manager_Done(ft_cmanager );
+ int i, j;
+
+ FTC_Manager_Done(ft_cmanager);
FT_Done_FreeType(library);
+
+ for (i = 0; i < FB_FACE_COUNT; i++) {
+ if (fb_faces[i] == NULL)
+ continue;
+
+ /* Unset any faces that duplicate this one */
+ for (j = i + 1; j < FB_FACE_COUNT; j++) {
+ if (fb_faces[i] == fb_faces[j])
+ fb_faces[j] = NULL;
+ }
+
+ free(fb_faces[i]->fontfile);
+ free(fb_faces[i]);
+
+ fb_faces[i] = NULL;
+ }
+
return true;
}
diff --git a/framebuffer/font_internal.c b/framebuffer/font_internal.c
index 60f1b8e..dc1b358 100644
--- a/framebuffer/font_internal.c
+++ b/framebuffer/font_internal.c
@@ -31,7 +31,12 @@
bool fb_font_init(void)
{
- return true;
+ return true;
+}
+
+bool fb_font_finalise(void)
+{
+ return true;
}
const struct fb_font_desc*
diff --git a/framebuffer/gui.c b/framebuffer/gui.c
index 6530c38..b4bb3ef 100644
--- a/framebuffer/gui.c
+++ b/framebuffer/gui.c
@@ -410,6 +410,22 @@ fb_browser_window_redraw(fbtk_widget_t *widget, fbtk_callback_info *cbi)
return 0;
}
+static int fb_browser_window_destroy(fbtk_widget_t *widget,
+ fbtk_callback_info *cbi)
+{
+ struct browser_widget_s *browser_widget;
+
+ if (widget == NULL) {
+ return 0;
+ }
+
+ /* Free private data */
+ browser_widget = fbtk_get_userpw(widget);
+ free(browser_widget);
+
+ return 0;
+}
+
static const char *fename;
static int febpp;
@@ -625,6 +641,9 @@ main(int argc, char** argv)
netsurf_exit();
+ if (fb_font_finalise() == false)
+ LOG(("Font finalisation failed."));
+
/* finalise options */
nsoption_finalise(nsoptions, nsoptions_default);
@@ -1470,6 +1489,7 @@ create_browser_widget(struct gui_window *gw, int toolbar_height, int furniture_w
browser_widget);
fbtk_set_handler(gw->browser, FBTK_CBT_REDRAW, fb_browser_window_redraw, gw);
+ fbtk_set_handler(gw->browser, FBTK_CBT_DESTROY, fb_browser_window_destroy, gw);
fbtk_set_handler(gw->browser, FBTK_CBT_INPUT, fb_browser_window_input, gw);
fbtk_set_handler(gw->browser, FBTK_CBT_CLICK, fb_browser_window_click, gw);
fbtk_set_handler(gw->browser, FBTK_CBT_STRIP_FOCUS, fb_browser_window_strip_focus, gw);
@@ -1609,8 +1629,6 @@ gui_window_destroy(struct gui_window *gw)
fbtk_destroy_widget(gw->window);
free(gw);
-
-
}
void
--
NetSurf Browser