From edc1e0f9e323256c6171eedeaad932f77be2ea07 Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Thu, 12 Apr 2007 15:29:45 +0000 Subject: 2007-04-11 Francis Kung * 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. --- ChangeLog | 10 +++++++++ .../gnu_java_awt_peer_gtk_FreetypeGlyphVector.c | 6 +++++- .../gtk-peer/gnu_java_awt_peer_gtk_GdkFontPeer.c | 24 ++++++++++------------ 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 + + * 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 * 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); -- cgit v1.2.1