Subject: Re: bug#52042: 29.0.50; [feature/pgtk] issue in moving a fullscreen emacs frame from a scale@1x display to a scale@2x display

From: Fred Fu <[email-masked]>
Date: Wed, 1 Dec 2021 10:20:41 -0500

I have zero knowledge of GTK thus I have some dump questions:

How do GTK applications handle this situation?

Does each gnome app deal with their windows moving among displays of scale
factors on their own?

Or do they just delegate the dirty job to GTK or other lower-level
mechanisms?

On Wed, Dec 1, 2021, 10:09 AM Yuuki Harano <[email-masked]> wrote:

>
> On Tue, 30 Nov 2021 11:10:37 -0500,
>         Fred Fu <[email-masked]> wrote:
> > I don't think three monitors are needed. Two monitors, one scaled@2x
> > and one @1x, should be enough to reproduce the issue.
>
> Reproduced.
> I have a TV, that can be connected to my note PC, and tried GNOME(Wayland).
> The PC's monitor is 2x and the TV is 1x.
> I moved a pgtk emacs frame from the TV to the PC's monitor, and it became
> blurry.  When I resized it, it recovered.
>
> > That said, I'd love to help debug this issue on my end, but I don't
> > know what to start with. Any ideas?
>
> I have a cairo_surface_t and draw on it.  And I copy it on gtk window
> when gtk wants so.
> I don't scale fonts explicitly.  Scaling is done implicitly by compositor,
> gtk, and cairo.
>
> My guess:
> cairo_surface_t is bitmap.
> On 1x, cairo_surface_t has non-scaled texts, and it is drawn on
> gtk window as is.
> When I move it to 2x, cairo_surface_t is drawn on gtk window
> at double size.  It is blurry, because cairo_surface_it is bitmap.
> When I resize it, I recreate cairo_surface_t of logical size.
> When that, cairo_surface_t is double size implicitly.
> cairo_surface_t has 2x scaled texts.  It is not blurry, because
> fonts are vector graphics.
> It is drawn on gtk window as is.
>
> Maybe, I need to recreate cairo_surface_t when monitor
> is changed.  I looked for such a signal but nothing found.
>
> --
> Yuuki Harano
>