On 7/22/2016 1:26 PM, Rajeev Chamyal wrote:

Linked to 8147648, added prefix Hidpi.

Thanks.

The fix looks good to me.

--Semyon

Regards,

Rajeev Chamyal

*From:*Semyon Sadetsky
*Sent:* 22 July 2016 15:51
*To:* Rajeev Chamyal; Alexander Scherbatiy; swing-dev@openjdk.java.net; Sergey Bylokhov *Subject:* Re: <Swing Dev>[9] Review Request JDK-8147648 [hidpi] multiresolution image: wrong resolution variant is used as icon in the Unity panel

On 7/22/2016 1:04 PM, Rajeev Chamyal wrote:

    Hello Semyon,

    Below is the bug id.

    https://bugs.openjdk.java.net/browse/JDK-8162387

Please add [hidpi] prefix to the title. Also link it to the JDK-8147648.

--Semyon

    Regards,

    Rajeev Chamyal

    *From:*Semyon Sadetsky
    *Sent:* 22 July 2016 15:21
    *To:* Rajeev Chamyal; Alexander Scherbatiy;
    swing-dev@openjdk.java.net <mailto:swing-dev@openjdk.java.net>;
    Sergey Bylokhov
    *Subject:* Re: <Swing Dev>[9] Review Request JDK-8147648 [hidpi]
    multiresolution image: wrong resolution variant is used as icon in
    the Unity panel

    On 7/22/2016 12:14 PM, Rajeev Chamyal wrote:

        Hello Semyon,

        Your suggestion regarding _NET_WM_ICON requires some
        investigation and can be implemented as separate bug.

    Ok. Please create this bug.

    --Semyon


        Could you please review the webrev.

        http://cr.openjdk.java.net/~rchamyal/8147648/webrev.03/
        <http://cr.openjdk.java.net/%7Erchamyal/8147648/webrev.03/>

        Regards,

        Rajeev Chamyal

        *From:*Alexandr Scherbatiy
        *Sent:* 21 July 2016 20:42
        *To:* Rajeev Chamyal; Semyon Sadetsky;
        swing-dev@openjdk.java.net
        <mailto:swing-dev@openjdk.java.net>; Sergey Bylokhov
        *Subject:* Re: <Swing Dev>[9] Review Request JDK-8147648
        [hidpi] multiresolution image: wrong resolution variant is
        used as icon in the Unity panel

        On 7/21/2016 5:25 PM, Rajeev Chamyal wrote:



            Hello Semyon,

            The resolution variant image returned is based on the
            implementation of
            BaseMultiResolutionImage::getResolutionVariant API.

            Current implementation of
            BaseMultiResolutionImage::getResolutionVariant returns a
            resolution variant image which has width and height
            greater than or equal to the passed width and height.

          There is a known issue on it:
            JDK-8148619 Select the closest resolution variant in
        BaseMultiResolutionImage
        https://bugs.openjdk.java.net/browse/JDK-8148619

          Thanks,
          Alexandr.



            In the case you have suggested dimensions of RED and BLUE
            images are 32 and  80 respectively.

            Width and height passed to getResolutionVariant is 64
             i.e. scaled width and height of base image(RED)
            (GDK_SCALE=2) and blue image is getting returned.

            The width and height passed to this  API is that of base
            image not of the spot.

            Applications can control this behaviour by overriding this
            API in derived classes.

            Regards,

            Rajeev Chamyal

            *From:*Alexandr Scherbatiy
            *Sent:* 21 July 2016 15:09
            *To:* Semyon Sadetsky; Rajeev Chamyal;
            swing-dev@openjdk.java.net
            <mailto:swing-dev@openjdk.java.net>; Sergey Bylokhov
            *Subject:* Re: <Swing Dev>[9] Review Request JDK-8147648
            [hidpi] multiresolution image: wrong resolution variant is
            used as icon in the Unity panel

            On 7/21/2016 11:49 AM, Semyon Sadetsky wrote:




                Hello Rajeev,

                The taskbar icon is ok now.

                I change the resolution variants from the test a bit:

                                final BaseMultiResolutionImage IMG =
                new BaseMultiResolutionImage(
                                        new
                BufferedImage[]{generateImage(4, Color.RED),
                generateImage(10, Color.BLUE)});

                And the icon I see in the taskbar and in the button is
                blue. It seems to me the first resolution variant
                (red) is more appropriate in this case because its
                size is closer to the spot. I'm not sure if this is an
                issue.

                I have an extra question to you and Alexander.
                Most native apps on Linux set an array of icons with
                _NET_WM_ICON. Usually they are [16x16, 32x32, 64x64].
                So, desktop environment may select icon of appropriate
                size.
                In this fix we are preselecting icon of a specific
                size in the app and send it to WM.
                Why not to send array of the resolution variants
                images and let the desktop environment to select the
                appropriate one, like native apps do?

              This sounds as good idea. MultiResolutionImage has the
            special method for this "List<Image>
            getResolutionVariants()". We do the similar on Mac OS X
            where NSImage with several representations is created from
            a MultiResolutionImage:
            
http://cr.openjdk.java.net/~alexsch/8028212/webrev.01/src/macosx/classes/sun/lwawt/macosx/CImage.java.udiff.html
            
<http://cr.openjdk.java.net/%7Ealexsch/8028212/webrev.01/src/macosx/classes/sun/lwawt/macosx/CImage.java.udiff.html>

             It has sense to try the same approach on Linux.

              Thanks,
              Alexandr.






                --Semyon

                On 19.07.2016 23:26, Rajeev Chamyal wrote:

                    Hello Semyon,

                    Please review the updated webrev.

                    http://cr.openjdk.java.net/~rchamyal/8147648/webrev.03/
                    <http://cr.openjdk.java.net/%7Erchamyal/8147648/webrev.03/>

                    Regards,

                    Rajeev Chamyal

                    *From:*Semyon Sadetsky
                    *Sent:* 14 July 2016 16:58
                    *To:* Rajeev Chamyal; swing-dev@openjdk.java.net
                    <mailto:swing-dev@openjdk.java.net>; Sergey
                    Bylokhov; Alexander Scherbatiy
                    *Subject:* Re: <Swing Dev>[9] Review Request
                    JDK-8147648 [hidpi] multiresolution image: wrong
                    resolution variant is used as icon in the Unity panel

                    Hi Rajeev,

                    I have added 1px border to the icon in your test:

                        private static BufferedImage generateImage(int
                    scale, Color c) {
                            int x = SZ * scale;
                            BufferedImage img = new BufferedImage(x,
                    x, BufferedImage.TYPE_INT_RGB);
                            Graphics g = img.getGraphics();
                            if (g != null) {
                                g.setColor(c);
                                g.fillRect(0, 0, x, x);
                                g.setColor(Color.YELLOW);
                                g.drawRect(0, 0, x-1, x-1);
                            }
                            return img;
                        }

                    It seems the icon in the taskbar is not correct
                    for UI scale > 1.

                    By the way, graphics object should be disposed
                    using g.dispose() when it is not needed anymore.

                    --Semyon





                    On 14.07.2016 10:08, Rajeev Chamyal wrote:

                        Hello All,

                        Gentle reminder. Please review the updated webrev.

                        http://cr.openjdk.java.net/~rchamyal/8147648/webrev.02/
                        
<http://cr.openjdk.java.net/%7Erchamyal/8147648/webrev.02/>

                        Update: simplified the test.

                        Regards,

                        Rajeev Chamyal

                        *From:*Alexandr Scherbatiy
                        *Sent:* 22 June 2016 15:46
                        *To:* Rajeev Chamyal; Sergey Bylokhov;
                        swing-dev@openjdk.java.net
                        <mailto:swing-dev@openjdk.java.net>
                        *Subject:* Re: <Swing Dev>[9] Review Request
                        JDK-8147648 [hidpi] multiresolution image:
                        wrong resolution variant is used as icon in
                        the Unity panel

                        The fix looks good to me.

                        Thanks,
                        Alexandr.

                        On 6/22/2016 10:49 AM, Rajeev Chamyal wrote:

                            Hello Alexandr,

                            Thanks for the review. I have updated
                            webrev as per comments.

                            
http://cr.openjdk.java.net/~rchamyal/8147648/webrev.01/
                            
<http://cr.openjdk.java.net/%7Erchamyal/8147648/webrev.01/>

                            Regards,

                            Rajeev Chamyal

                            *From:*Alexandr Scherbatiy
                            *Sent:* 21 June 2016 17:37
                            *To:* Rajeev Chamyal; Sergey Bylokhov;
                            swing-dev@openjdk.java.net
                            <mailto:swing-dev@openjdk.java.net>
                            *Subject:* Re: <Swing Dev>[9] Review
                            Request JDK-8147648 [hidpi]
                            multiresolution image: wrong resolution
                            variant is used as icon in the Unity panel

                            On 6/21/2016 12:16 PM, Rajeev Chamyal wrote:

                                Hello All,

                                Please review the following webrev.

                                Webrev:
                                
http://cr.openjdk.java.net/~rchamyal/8147648/webrev.00/
                                
<http://cr.openjdk.java.net/%7Erchamyal/8147648/webrev.00/>


                                Bug:
                                https://bugs.openjdk.java.net/browse/JDK-8147648


                                Issue: Wrong resolution variant is
                                used as icon in the Unity panel.

                                Cause: The screen transforms are not
                                applied to find the correct resolution
                                variant image in current implementation.

                                Fix: Applied the screen transforms to
                                graphics object.


                             222         int scaleX = (int)tx.getScaleX();
                             223         int scaleY = (int)tx.getScaleY();
                             224         DataBufferInt buffer = new
                            DataBufferInt(scaleX * width * scaleY *
                            height);

                              The fix is in the shared code and the
                            scale factor can have floating point value
                            on Windows. (for example 1.5).
                              It is better to round the final width
                            and height after scaling them.

                              Thanks,
                              Alexandr.

                                Regards,

                                Rajeev Chamyal


Reply via email to