diff options
author | Francis Kung <fkung@redhat.com> | 2007-04-11 21:10:22 +0000 |
---|---|---|
committer | Francis Kung <fkung@redhat.com> | 2007-04-11 21:10:22 +0000 |
commit | 6a2dd83b00d094fae385f47e4c107be8890ef7d8 (patch) | |
tree | 92741d3e45a9fb4511a8983b4e29a6769153a5ab | |
parent | d3b37426f7418703874b9eaf50c88f7b7b0af0e9 (diff) | |
download | classpath-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-- | ChangeLog | 9 | ||||
-rw-r--r-- | native/jni/gtk-peer/gnu_java_awt_peer_gtk_FreetypeGlyphVector.c | 6 | ||||
-rw-r--r-- | native/jni/gtk-peer/gnu_java_awt_peer_gtk_GdkFontPeer.c | 24 |
3 files changed, 25 insertions, 14 deletions
@@ -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); |