< prev index next >
src/java.desktop/unix/native/libawt_xawt/awt/gtk3_interface.c
Print this page
*** 322,333 ****
fp_g_strfreev = dl_symbol("g_strfreev");
/* GDK */
fp_gdk_get_default_root_window =
dl_symbol("gdk_get_default_root_window");
- fp_gdk_window_get_scale_factor =
- dl_symbol("gdk_window_get_scale_factor");
/* Pixbuf */
fp_gdk_pixbuf_new = dl_symbol("gdk_pixbuf_new");
fp_gdk_pixbuf_new_from_file =
dl_symbol("gdk_pixbuf_new_from_file");
--- 322,331 ----
*** 398,407 ****
--- 396,407 ----
if (fp_gtk_check_version(3, 10, 0)) {
gtk3_version_3_10 = FALSE;
} else {
fp_gdk_window_create_similar_image_surface =
dl_symbol("gdk_window_create_similar_image_surface");
+ fp_gdk_window_get_scale_factor =
+ dl_symbol("gdk_window_get_scale_factor");
}
gtk3_version_3_14 = !fp_gtk_check_version(3, 14, 0);
if (!fp_gtk_check_version(3, 20, 0)) {
gtk3_version_3_20 = TRUE;
*** 2888,2900 ****
jint scale) {
GdkPixbuf *pixbuf;
jint *ary;
GdkWindow *root = (*fp_gdk_get_default_root_window)();
int win_scale = (*fp_gdk_window_get_scale_factor)(root);
pixbuf = (*fp_gdk_pixbuf_get_from_drawable)(
! root, x, y, (int)(width / (float)win_scale + 0.5), (int)(height / (float)win_scale + 0.5));
if (pixbuf && scale != 1) {
GdkPixbuf *scaledPixbuf;
x /= scale;
y /= scale;
--- 2888,2904 ----
jint scale) {
GdkPixbuf *pixbuf;
jint *ary;
GdkWindow *root = (*fp_gdk_get_default_root_window)();
+ if (gtk3_version_3_10) {
int win_scale = (*fp_gdk_window_get_scale_factor)(root);
pixbuf = (*fp_gdk_pixbuf_get_from_drawable)(
! root, x, y, (int) (width / (float) win_scale + 0.5), (int) (height / (float) win_scale + 0.5));
! } else {
! pixbuf = (*fp_gdk_pixbuf_get_from_drawable)(root, x, y, width, height);
! }
if (pixbuf && scale != 1) {
GdkPixbuf *scaledPixbuf;
x /= scale;
y /= scale;
< prev index next >