< prev index next >

src/java.desktop/unix/native/libawt_xawt/awt/gtk3_interface.c

Print this page
rev 52901 : 8233250: Better X11 rendering
Reviewed-by: prr, rhalade, mschoene, serb


2913         (*fp_g_object_unref)(pixbuf);
2914         pixbuf = scaledPixbuf;
2915     }
2916 
2917     if (pixbuf) {
2918         int nchan = (*fp_gdk_pixbuf_get_n_channels)(pixbuf);
2919         int stride = (*fp_gdk_pixbuf_get_rowstride)(pixbuf);
2920         if ((*fp_gdk_pixbuf_get_width)(pixbuf) == width
2921                 && (*fp_gdk_pixbuf_get_height)(pixbuf) == height
2922                 && (*fp_gdk_pixbuf_get_bits_per_sample)(pixbuf) == 8
2923                 && (*fp_gdk_pixbuf_get_colorspace)(pixbuf) == GDK_COLORSPACE_RGB
2924                 && nchan >= 3
2925                 ) {
2926             guchar *p, *pix = (*fp_gdk_pixbuf_get_pixels)(pixbuf);
2927             ary = (*env)->GetPrimitiveArrayCritical(env, pixelArray, NULL);
2928             if (ary) {
2929                 jint _x, _y;
2930                 int index;
2931                 for (_y = 0; _y < height; _y++) {
2932                     for (_x = 0; _x < width; _x++) {
2933                         p = pix + _y * stride + _x * nchan;
2934 
2935                         index = (_y + dy) * jwidth + (_x + dx);
2936                         ary[index] = 0xff000000
2937                                         | (p[0] << 16)
2938                                         | (p[1] << 8)
2939                                         | (p[2]);
2940 
2941                     }
2942                 }
2943                 (*env)->ReleasePrimitiveArrayCritical(env, pixelArray, ary, 0);
2944             }
2945         }
2946         (*fp_g_object_unref)(pixbuf);
2947     }
2948     return JNI_FALSE;
2949 }
2950 
2951 static GdkWindow* gtk3_get_window(void *widget) {
2952     return fp_gtk_widget_get_window((GtkWidget*)widget);
2953 }




2913         (*fp_g_object_unref)(pixbuf);
2914         pixbuf = scaledPixbuf;
2915     }
2916 
2917     if (pixbuf) {
2918         int nchan = (*fp_gdk_pixbuf_get_n_channels)(pixbuf);
2919         int stride = (*fp_gdk_pixbuf_get_rowstride)(pixbuf);
2920         if ((*fp_gdk_pixbuf_get_width)(pixbuf) == width
2921                 && (*fp_gdk_pixbuf_get_height)(pixbuf) == height
2922                 && (*fp_gdk_pixbuf_get_bits_per_sample)(pixbuf) == 8
2923                 && (*fp_gdk_pixbuf_get_colorspace)(pixbuf) == GDK_COLORSPACE_RGB
2924                 && nchan >= 3
2925                 ) {
2926             guchar *p, *pix = (*fp_gdk_pixbuf_get_pixels)(pixbuf);
2927             ary = (*env)->GetPrimitiveArrayCritical(env, pixelArray, NULL);
2928             if (ary) {
2929                 jint _x, _y;
2930                 int index;
2931                 for (_y = 0; _y < height; _y++) {
2932                     for (_x = 0; _x < width; _x++) {
2933                         p = pix + (intptr_t) _y * stride + _x * nchan;
2934 
2935                         index = (_y + dy) * jwidth + (_x + dx);
2936                         ary[index] = 0xff000000
2937                                         | (p[0] << 16)
2938                                         | (p[1] << 8)
2939                                         | (p[2]);
2940 
2941                     }
2942                 }
2943                 (*env)->ReleasePrimitiveArrayCritical(env, pixelArray, ary, 0);
2944             }
2945         }
2946         (*fp_g_object_unref)(pixbuf);
2947     }
2948     return JNI_FALSE;
2949 }
2950 
2951 static GdkWindow* gtk3_get_window(void *widget) {
2952     return fp_gtk_widget_get_window((GtkWidget*)widget);
2953 }


< prev index next >