Subject: Re: bug#37689: Fringe pixmaps, widgets, etc. look ridiculously tiny in hidpi screen

From: Carlos Pita <[email-masked]>
Date: Sun, 13 Oct 2019 21:40:14 -0300

I've been reading some related code (fringe.c, xterm.c, etc) but at
this point I feel I need some feedback from you in order to advance:

1. In my previous posts I have open two alternative paths:

1.a. Do the scaling as downstream as possible. The problem with this
approach is that I will be fixing the problem only for one backend
(for example, Cairo). Also, I would have to "hack" some assumptions
done upstream (for example, to adjust x, y and scale of a rectangle
that is assumed to be of a different geometry by the caller). The
advantage of the approach is that not only fringe icons but any other
image that is rendered by the lowest level routine will be properly
scaled; but, that said, I noticed that in emacs 26.3 widgets are not
using x_cr_draw_image.

1.b. Do the scaling upstream (for example, in get_fringe_bitmap_data
as proposed above). One problem with this approach is that some
backend could already be scaling output itself (for example, by using
a toolkit that automatically scales according to the device
resolution... do you know if this is the case for windows, for
macos?). Also, it won't fix the widgets issue (anyway, as I said,
neither the "downstream" approach will do it in 26.3).

2. I'm clueless regarding were widgets (I mean checkboxes and things
like that) are rendered. With Cairo backend enabled, x_cr_draw_image
is never reached in 26.3, its only user is the fringe module, I've
checked this in the debugger and by inspecting the code. Not sure
about 27, since tweaking x_cr_draw_image did have a (weird) effect, as
the screenshots in my previous post show.

Any help or opinion regarding these issues will be much appreciated, I
really want to move this forward.

Best regards
--
Carlos