diff options
Diffstat (limited to 'native/jni/gtk-peer')
-rw-r--r-- | native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoGraphics2D.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoGraphics2D.c b/native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoGraphics2D.c index 5620746ec..1087cf7d6 100644 --- a/native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoGraphics2D.c +++ b/native/jni/gtk-peer/gnu_java_awt_peer_gtk_CairoGraphics2D.c @@ -87,7 +87,11 @@ Java_gnu_java_awt_peer_gtk_CairoGraphics2D_disposeNative return; if (gr->cr) - cairo_destroy (gr->cr); + { + gdk_threads_enter(); + cairo_destroy (gr->cr); + gdk_threads_leave(); + } if (gr->pattern) cairo_pattern_destroy (gr->pattern); @@ -345,6 +349,7 @@ Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoDrawGlyphVector /* Iterate through glyphs and draw */ jlong* fonts = (*env)->GetLongArrayElements (env, java_fontset, NULL); + gdk_threads_enter(); for (i = 0; i < n; i++) { PangoFcFont *font = JLONG_TO_PTR(PangoFcFont, fonts[i]); @@ -367,6 +372,7 @@ Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoDrawGlyphVector cairo_font_face_destroy (ft); pango_fc_font_unlock_face(font); } + gdk_threads_leave(); g_free(glyphs); } @@ -388,6 +394,7 @@ Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSetFont pfont = (struct peerfont *)NSA_GET_FONT_PTR (env, font); g_assert (pfont != NULL); + gdk_threads_enter(); face = pango_fc_font_lock_face( (PangoFcFont *)pfont->font ); g_assert (face != NULL); @@ -401,6 +408,7 @@ Java_gnu_java_awt_peer_gtk_CairoGraphics2D_cairoSetFont cairo_font_face_destroy (ft); pango_fc_font_unlock_face((PangoFcFont *)pfont->font); + gdk_threads_leave(); } JNIEXPORT void JNICALL |