summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrancis Kung <fkung@redhat.com>2007-04-11 21:10:22 +0000
committerFrancis Kung <fkung@redhat.com>2007-04-11 21:10:22 +0000
commit6a2dd83b00d094fae385f47e4c107be8890ef7d8 (patch)
tree92741d3e45a9fb4511a8983b4e29a6769153a5ab
parentd3b37426f7418703874b9eaf50c88f7b7b0af0e9 (diff)
downloadclasspath-6a2dd83b00d094fae385f47e4c107be8890ef7d8.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--ChangeLog9
-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, 25 insertions, 14 deletions
diff --git a/ChangeLog b/ChangeLog
index 21857f046..cf828fb96 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+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>
* configure.ac: Added AC_C_INLINE.
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);