[prev in list] [next in list] [prev in thread] [next in thread]
List: openjdk-openjfx-dev
Subject: Re: RFR: 8274932: Render scales in EmbeddedWindow are not properly updated [v6]
From: Kevin Rushforth <kcr () openjdk ! org>
Date: 2023-07-29 15:13:49
Message-ID: 7Ncyp0c3-e4p7THnFlZ5yOAJ8YrVaYGigiaw4PiCAmE=.649a959c-870f-412f-88e0-af24a566926c () github ! com
[Download RAW message or body]
On Fri, 28 Jul 2023 03:53:17 GMT, Prasanta Sadhukhan <psadhukhan@openjdk.org> wrote:
> > This is how I understand this works:
> >
> > The `JFXPanel` makes use of an `EmbeddedWindow` that is a subclass of `Window`. \
> > This window listens to its `showing` property, and when it becomes visible will \
> > call `updateOutputScales`; this will in turn set the (correct?) render scales.
> > Now the above fix seems to 2nd guess this logic, and overrides these values with \
> > render scales it gets from Swing/AWT (note that it didn't do this before).
> > So, my questions:
> >
> > - If JFXPanel never called setRenderScale before, was the JFXPanel completely \
> > broken when used on monitors that are not set at 100% scale? Did they update \
> > correctly when moved between monitors? I get the impression that it sort of \
> > worked, except for this edge case.
> > - If it wasn't completely broken, then why is this fix needed? Shouldn't \
> > `Window` already detect that it has become visible (with its `showing` listener) \
> > and update the render scales using the `updateOutputScales` method? In other \
> > words, isn't this a bug that perhaps needs to be fixed in `Window`s detection of \
> > when it should be updating the output scales?
>
> > This is how I understand this works:
> >
> > The `JFXPanel` makes use of an `EmbeddedWindow` that is a subclass of `Window`. \
> > This window listens to its `showing` property, and when it becomes visible will \
> > call `updateOutputScales`; this will in turn set the (correct?) render scales.
> > Now the above fix seems to 2nd guess this logic, and overrides these values with \
> > render scales it gets from Swing/AWT (note that it didn't do this before).
> > So, my questions:
> >
> > * If JFXPanel never called setRenderScale before, was the JFXPanel completely \
> > broken when used on monitors that are not set at 100% scale? Did they update \
> > correctly when moved between monitors? I get the impression that it sort of \
> > worked, except for this edge case.
> > * If it wasn't completely broken, then why is this fix needed? Shouldn't \
> > `Window` already detect that it has become visible (with its `showing` listener) \
> > and update the render scales using the `updateOutputScales` method? In other \
> > words, isn't this a bug that perhaps needs to be fixed in `Window`s detection of \
> > when it should be updating the output scales?
>
> I think it is broken...See \
> [JDK-8222209](https://bugs.openjdk.org/browse/JDK-8222209) I am not sure if it \
> might be a bug in FX Embedded `Window` s detection logic and scale updation logic, \
> might be FX windows-graphics/toolkit team can share their thoughts but I guess it's \
> not as otherwise we will get lot more issues and not just in JFXPanel. Also, \
> JFXPanel uses `GraphicsEnvironment.getLocalGraphicsEnvironment(). \
> getDefaultScreenDevice().getDefaultConfiguration().getDefaultTransform().getScaleX()` \
> which only works for primary screen and will not work if secondary screen has \
> different scale, so that needs to be fixed in my opinion, which is being done in \
> this PR.
@prsadhuk @hjohn I'll take a closer look early next week, but I think the best way \
forward might be for Prasanta to evaluate #1189 and, if the modified fix in that PR \
is what we want to use, update _this_ PR to include the change that adds the call to \
`updateSceneState()` and removes the explicit call to `Stage::setRenderScale[XY]`. \
Then add John as a contributor to this PR using `/contributor add`. We can then close \
[JDK-8222209](https://bugs.openjdk.org/browse/JDK-8222209) as a duplicate of \
[JDK-8274932](https://bugs.openjdk.org/browse/JDK-8274932).
-------------
PR Comment: https://git.openjdk.org/jfx/pull/1171#issuecomment-1656755453
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic