summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Wielaard <mark@klomp.org>2007-04-12 15:29:45 +0000
committerMark Wielaard <mark@klomp.org>2007-04-12 15:29:45 +0000
commitedc1e0f9e323256c6171eedeaad932f77be2ea07 (patch)
tree5cbac15dd455c381c5aafe7478966300d88906fe
parent6d918877c49c1f0901557545d59f3c16bbb73ba2 (diff)
downloadclasspath-edc1e0f9e323256c6171eedeaad932f77be2ea07.tar.gz
2007-04-11 Francis Kung <fkung@redhat.com>
* native/jni/gtk-peer/gnu_java_awt_peer_gtk_FreetypeGlyphVector.c (Java_gnu_java_awt_peer_gtk_FreetypeGlyphVector_getGlyphs): Avoid unneeded object reference. * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkFontPeer.c (Java_gnu_java_awt_peer_gtk_GdkFontPeer_getFontMetrics): Unlock font. (Java_gnu_java_awt_peer_gtk_GdkFontPeer_setFont): Remove redundant checks.
-rw-r--r--ChangeLog10
-rw-r--r--native/jni/gtk-peer/gnu_java_awt_peer_gtk_FreetypeGlyphVector.c6
-rw-r--r--native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkFontPeer.c24
3 files changed, 26 insertions, 14 deletions
diff --git a/ChangeLog b/ChangeLog
index 5f3c0e7e9..53fa3b412 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2007-04-11 Francis Kung <fkung@redhat.com>
+
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_FreetypeGlyphVector.c
+ (Java_gnu_java_awt_peer_gtk_FreetypeGlyphVector_getGlyphs): Avoid
+ unneeded object reference.
+ * native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkFontPeer.c
+ (Java_gnu_java_awt_peer_gtk_GdkFontPeer_getFontMetrics): Unlock font.
+ (Java_gnu_java_awt_peer_gtk_GdkFontPeer_setFont): Remove redundant
+ checks.
+
2007-04-11 Christian Thalinger <twisti@complang.tuwien.ac.at>
* native/jni/native-lib/cpproc.c (cpproc_forkAndExec): Fixed
diff --git a/native/jni/gtk-peer/gnu_java_awt_peer_gtk_FreetypeGlyphVector.c b/native/jni/gtk-peer/gnu_java_awt_peer_gtk_FreetypeGlyphVector.c
index 71a14c50e..1a2d2a074 100644
--- a/native/jni/gtk-peer/gnu_java_awt_peer_gtk_FreetypeGlyphVector.c
+++ b/native/jni/gtk-peer/gnu_java_awt_peer_gtk_FreetypeGlyphVector.c
@@ -145,17 +145,21 @@ Java_gnu_java_awt_peer_gtk_FreetypeGlyphVector_getGlyphs
if (pango_fc_font_has_char(default_font, cpvals[i]))
{
current_font = default_font;
+ g_object_ref(current_font);
}
else
{
current_font = (PangoFcFont*)pango_fontset_get_font(pfs, cpvals[i]);
}
}
+ else
+ {
+ g_object_ref(current_font);
+ }
/* Get glyph, and store both glyph and pointer to font */
glyphArray[i] = (int)pango_fc_font_get_glyph(current_font,
(gunichar)cpvals[i]);
- g_object_ref(current_font);
fontArray[i] = PTR_TO_JLONG(current_font);
}
diff --git a/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkFontPeer.c b/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkFontPeer.c
index 31079f16e..022edeeaf 100644
--- a/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkFontPeer.c
+++ b/native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkFontPeer.c
@@ -169,6 +169,8 @@ Java_gnu_java_awt_peer_gtk_GdkFontPeer_getFontMetrics
face->underline_position / factory;
native_metrics[FONT_METRICS_UNDERLINE_THICKNESS] =
face->underline_thickness / factory;
+
+ pango_fc_font_unlock_face((PangoFcFont *)pfont->font);
(*env)->ReleaseDoubleArrayElements (env,
java_metrics,
@@ -256,6 +258,7 @@ Java_gnu_java_awt_peer_gtk_GdkFontPeer_setFont
pfont = (struct peerfont *)NSA_GET_FONT_PTR (env, self);
g_assert (pfont != NULL);
+ /* Clear old font information */
if (pfont->ctx != NULL)
g_object_unref (pfont->ctx);
if (pfont->font != NULL)
@@ -265,6 +268,7 @@ Java_gnu_java_awt_peer_gtk_GdkFontPeer_setFont
if (pfont->desc != NULL)
pango_font_description_free (pfont->desc);
+ /* Set new description information */
pfont->desc = pango_font_description_new ();
g_assert (pfont->desc != NULL);
@@ -280,23 +284,17 @@ Java_gnu_java_awt_peer_gtk_GdkFontPeer_setFont
pango_font_description_set_style (pfont->desc, PANGO_STYLE_ITALIC);
pango_font_description_set_size (pfont->desc, size * PANGO_SCALE);
- if (pfont->ctx == NULL)
- {
- ft2_map = PANGO_FT2_FONT_MAP(pango_ft2_font_map_new());
- pfont->ctx = pango_ft2_font_map_create_context (ft2_map);
- g_object_unref(ft2_map);
- }
-
- g_assert (pfont->ctx != NULL);
- if (pfont->font != NULL)
- {
- g_object_unref (pfont->font);
- pfont->font = NULL;
- }
+ /* Create new context */
+ ft2_map = PANGO_FT2_FONT_MAP(pango_ft2_font_map_new());
+ pfont->ctx = pango_ft2_font_map_create_context (ft2_map);
+ g_object_unref(ft2_map);
+ g_assert (pfont->ctx != NULL);
pango_context_set_font_description (pfont->ctx, pfont->desc);
pango_context_set_language (pfont->ctx, gtk_get_default_language());
+
+ /* Create new fontset and default font */
pfont->set = pango_context_load_fontset(pfont->ctx, pfont->desc,
gtk_get_default_language());
pfont->font = pango_context_load_font (pfont->ctx, pfont->desc);