From unknown Tue Jun 17 20:31:02 2025 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailer: MIME-tools 5.509 (Entity 5.509) Content-Type: text/plain; charset=utf-8 From: bug#37689 <37689@debbugs.gnu.org> To: bug#37689 <37689@debbugs.gnu.org> Subject: Status: Fringe pixmaps, widgets, etc. look ridiculously tiny in hidpi screen Reply-To: bug#37689 <37689@debbugs.gnu.org> Date: Wed, 18 Jun 2025 03:31:02 +0000 retitle 37689 Fringe pixmaps, widgets, etc. look ridiculously tiny in hidpi= screen reassign 37689 emacs submitter 37689 Carlos Pita severity 37689 normal tag 37689 patch thanks From debbugs-submit-bounces@debbugs.gnu.org Thu Oct 10 02:29:13 2019 Received: (at submit) by debbugs.gnu.org; 10 Oct 2019 06:29:13 +0000 Received: from localhost ([127.0.0.1]:54958 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iIRwn-0005UZ-7h for submit@debbugs.gnu.org; Thu, 10 Oct 2019 02:29:13 -0400 Received: from lists.gnu.org ([209.51.188.17]:57273) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iIRwl-0005UO-2H for submit@debbugs.gnu.org; Thu, 10 Oct 2019 02:29:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:44929) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iIRwj-0001GQ-Sp for bug-gnu-emacs@gnu.org; Thu, 10 Oct 2019 02:29:10 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50,FREEMAIL_FROM, HTML_MESSAGE autolearn=disabled version=3.3.2 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iIRwi-00076G-Iw for bug-gnu-emacs@gnu.org; Thu, 10 Oct 2019 02:29:09 -0400 Received: from mail-yw1-xc2c.google.com ([2607:f8b0:4864:20::c2c]:36523) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1iIRwi-000765-CU for bug-gnu-emacs@gnu.org; Thu, 10 Oct 2019 02:29:08 -0400 Received: by mail-yw1-xc2c.google.com with SMTP id x64so1769520ywg.3 for ; Wed, 09 Oct 2019 23:29:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=3D9QwpCj1LkzTF64pLOY9Ek9xQxRFadowUIDhhZBi1Y=; b=YzKUXJuUQHmiLbsYydUNqWmioG+MsaHr10M/FYlwon9viepbSKUA2g4sRBk953Yo1o z/fe16d2Fqn3K8HFW3STFY243TbFD5DhVfrLwh8fv+1ycIDxmODAk13Qc/k2x4HcJtlm q1s8WjFDpsvTIWQgnfx+sSOv2bN2jh0F77s97KanYKqn5JxIFrNDfXe2O9OA9k8aNPfw ukeqvTho62NdDDywXEe4Ell+2Gr8nj4NapNTjDvXeAoDTHeIjpykdjvX3Z8mQY7OAqKL 7uo67Fe9LgrZCD25tuyPOHufyuMm//OAR/CAc6gtaEEdbmJr8yfCkqgg9UNwPi5a+umJ 5NQg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=3D9QwpCj1LkzTF64pLOY9Ek9xQxRFadowUIDhhZBi1Y=; b=I3+GfJV8GjHANBweVbjj+eIvYmiy9KCDezrrk2AVrafnYcByJb1TmxRHatKZ28vsei rR2Zuobbt/XiPkAg5rml2TfHsomO4ev1ECiQxoGBnr5I+9Xj8kea2qZjmuDCW8v6ZDw/ QELnpU04Cu9EZ1ZxivTtewBny1xHvkCctUnAu5IwJIWG438vWfMJvw5WUlauBXbwh6yg O5Db6RbBl711CJasA5qhAy1ArQoAreKEcodISzIX/FU9Ge8h/F2jAgl3aYVNL2+EcKIg AidNPn35xHkWM89ZzFU9A2i7msDPqi7ZSij3EkwTDpKgkuhG8IhfgNfa6gDqPTbGLpQ2 AWeA== X-Gm-Message-State: APjAAAVafcYSPfyDxEDp7qGsjk5MVSQJ856grdbvbttPS11PoUlRTrz/ Fy3FA7BEzpGt+XJUwnh7rufSojebQnEltcVGQdD5E7eJ X-Google-Smtp-Source: APXvYqxdk5VGLCJOSdmjFpDnBBkluFl/Qpf7ScLMUB8KNspuiq9w9+nsFSYDKIUSsk9Hh2SSpfgOYy3qfmbCTHRAWec= X-Received: by 2002:a81:414:: with SMTP id 20mr5727046ywe.91.1570688946399; Wed, 09 Oct 2019 23:29:06 -0700 (PDT) MIME-Version: 1.0 From: Carlos Pita Date: Thu, 10 Oct 2019 03:28:55 -0300 Message-ID: Subject: Fringe pixmaps, widgets, etc. look ridiculously tiny in hidpi screen To: bug-gnu-emacs@gnu.org Content-Type: multipart/alternative; boundary="000000000000b3ef5005948884d7" X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::c2c X-Spam-Score: 0.7 (/) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.3 (--) --000000000000b3ef5005948884d7 Content-Type: text/plain; charset="UTF-8" Hi, this issue has been raised many times in reddit and other forums. Support for hidpi (e.g. my screen is 3000x2000) is rather deficient. Buttons, checkboxes and other widgets look minuscule. The decorations in the Fringe are barely visible. I'm not sure whether the best strategy is to offer manually scaled up pixmap variants or to automatically scale them up even if the result ends up being a bit blurry. In any case, most screens in sell today are mid or hi resolution, it's almost impossible to buy a decent piece of new hardware with a good old 1366x768 screen. And emacs should catchup. I propose to make an inventory of all the things that should be fixed towards hidpi support and maybe provide an external package patching whatever could be patched as a temporary measure. I'm using emacs 26.3 in Ubuntu 19.04. My DE is Gnome 3.32, scaling factor = 2. Best regards -- Carlos --000000000000b3ef5005948884d7 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi, this issue has been raised many times in reddit and o= ther forums. Support for hidpi (e.g. my screen is 3000x2000) is rather defi= cient. Buttons, checkboxes and other widgets look minuscule. The decoration= s in the Fringe are barely visible. I'm not sure whether the best strat= egy is to offer manually scaled up pixmap variants or to automatically scal= e them up even if the result ends up being a bit blurry. In any case, most = screens in sell today are mid or hi resolution, it's almost impossible = to buy a decent piece of new hardware with a good old 1366x768 screen. And = emacs should catchup.

I propos= e to make an inventory of all the things that should be fixed towards hidpi= support and maybe provide an external package patching whatever could be p= atched as a temporary measure.

I'm using emacs 26.3 in Ubuntu 19.04. My DE is Gnome 3.32, scaling= factor =3D 2.

Best rega= rds
--
Carlos
--000000000000b3ef5005948884d7-- From debbugs-submit-bounces@debbugs.gnu.org Thu Oct 10 04:13:13 2019 Received: (at 37689) by debbugs.gnu.org; 10 Oct 2019 08:13:13 +0000 Received: from localhost ([127.0.0.1]:55021 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iITZQ-0007xb-VJ for submit@debbugs.gnu.org; Thu, 10 Oct 2019 04:13:13 -0400 Received: from eggs.gnu.org ([209.51.188.92]:46758) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iITZP-0007xP-8a for 37689@debbugs.gnu.org; Thu, 10 Oct 2019 04:13:12 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:35187) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1iITZJ-0000q4-Oi; Thu, 10 Oct 2019 04:13:05 -0400 Received: from [176.228.60.248] (port=2406 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1iITZI-0006Qy-QL; Thu, 10 Oct 2019 04:13:05 -0400 Date: Thu, 10 Oct 2019 11:12:50 +0300 Message-Id: <83sgo1rpbx.fsf@gnu.org> From: Eli Zaretskii To: Carlos Pita In-reply-to: (message from Carlos Pita on Thu, 10 Oct 2019 03:28:55 -0300) Subject: Re: bug#37689: Fringe pixmaps, widgets, etc. look ridiculously tiny in hidpi screen References: X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 37689 Cc: 37689@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Carlos Pita > Date: Thu, 10 Oct 2019 03:28:55 -0300 > > I propose to make an inventory of all the things that should be fixed towards hidpi support and maybe provide > an external package patching whatever could be patched as a temporary measure. Please go ahead with making such an inventory, and thanks. > I'm using emacs 26.3 in Ubuntu 19.04. My DE is Gnome 3.32, scaling factor = 2. Please also verify that the situation hasn't changed in Emacs 27. From debbugs-submit-bounces@debbugs.gnu.org Thu Oct 10 09:27:01 2019 Received: (at 37689) by debbugs.gnu.org; 10 Oct 2019 13:27:01 +0000 Received: from localhost ([127.0.0.1]:55328 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iIYT6-00066c-2x for submit@debbugs.gnu.org; Thu, 10 Oct 2019 09:27:01 -0400 Received: from mail-wm1-f45.google.com ([209.85.128.45]:53367) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iIYT0-00066K-BB for 37689@debbugs.gnu.org; Thu, 10 Oct 2019 09:26:54 -0400 Received: by mail-wm1-f45.google.com with SMTP id i16so6944136wmd.3 for <37689@debbugs.gnu.org>; Thu, 10 Oct 2019 06:26:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:mail-copies-to:gmane-reply-to-list :date:in-reply-to:message-id:mime-version; bh=YR/eTi6lstjobNfe3UOSPwqQIprIGK0xjUB8oQrE0pg=; b=lB7umZ+6q+ASRrJwhWeNLNww+gv6hYq2HjUjOC9DuZ42tGilXC9sIkzP5ISlPcXRiG qHAcXqK5vQlCFrgTq+08i6IubHa/OjmhIsIA34sq6tvwgWTCgunY3wqrjlEAVksiaX8i E1zRGwBIV2/1U8LEqGk9fodjpOWZULJDn9zqpgI/KKXFHEaRVmHrRhm4jesT95pMm2m+ u+LcAv+E0cGIQDcZla0z4gEv2Ooas0uBAK52CFoZK3kRBMa1/ybuFQMlHBRlTkgZj0Ze kvVQyG0Vt6SxPkfyoGE6yzYjftpzG1pizB5KxQ4rg+3naW2U9tacuTAtwLMOjx6CU67j a69A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:mail-copies-to :gmane-reply-to-list:date:in-reply-to:message-id:mime-version; bh=YR/eTi6lstjobNfe3UOSPwqQIprIGK0xjUB8oQrE0pg=; b=nR/WNwzSI831eA1jN6HBlHsHIyaXg/75oexvNcZrYcDBkrf+Mh/m6XYd3QAY81l+tM uQRVsPcV2hooUR+54QBeJRmFVUoS5BB7ZhZMX2iLPesbZ2ioj/91/O2R08717u7WkieP gUdWMx6x1gKOc6WDDMVwfYDcudqeYgVtUpiAzArnFXh9cEcUE4W0wpHDUtyWL9K7rOY5 wNqtC6ozOJmLCuCuk7u0+ZeMlDL02ykfCOaIVSCZAp+fzffKOUFbocOnmu3Kf++/WVjp EFuK+y2Xnj1GckpwSEnnPRy4wyEHjscxufxBZJRnC4saS9ha3/efQHT4jqQXN8ucXhWA NDzQ== X-Gm-Message-State: APjAAAXW/2/+k3nlAgEY+SlBfndIkJu9+1xaDf/EJLNuNQPLKrPk21Oa 9mLOmgvuu8rmDeWj9pBfgbv3+nosgJo= X-Google-Smtp-Source: APXvYqxIa4U5i1lMCeDvWScfjFlJxkueR8TBbJWoiDLYKax1BciuGZACTxd6BmcZ5t2agEAPVSuv/w== X-Received: by 2002:a05:600c:490:: with SMTP id d16mr7690089wme.131.1570714007872; Thu, 10 Oct 2019 06:26:47 -0700 (PDT) Received: from rpluim-mac ([2a01:e34:ecfc:a860:44fb:6490:3ed:c3e8]) by smtp.gmail.com with ESMTPSA id y186sm10080081wmb.41.2019.10.10.06.26.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Oct 2019 06:26:46 -0700 (PDT) From: Robert Pluim To: Eli Zaretskii Subject: Re: bug#37689: Fringe pixmaps, widgets, etc. look ridiculously tiny in hidpi screen References: <83sgo1rpbx.fsf@gnu.org> X-Debbugs-No-Ack: yes Mail-Copies-To: never Gmane-Reply-To-List: yes Date: Thu, 10 Oct 2019 15:26:45 +0200 In-Reply-To: <83sgo1rpbx.fsf@gnu.org> (Eli Zaretskii's message of "Thu, 10 Oct 2019 11:12:50 +0300") Message-ID: MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 37689 Cc: Carlos Pita , 37689@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) >>>>> On Thu, 10 Oct 2019 11:12:50 +0300, Eli Zaretskii said: >> From: Carlos Pita >> Date: Thu, 10 Oct 2019 03:28:55 -0300 >> >> I propose to make an inventory of all the things that should be fixed towards hidpi support and maybe provide >> an external package patching whatever could be patched as a temporary measure. Eli> Please go ahead with making such an inventory, and thanks. >> I'm using emacs 26.3 in Ubuntu 19.04. My DE is Gnome 3.32, scaling factor = 2. Is that a font scaling factor of 2 via the gnome-tweak-tool, or a 200% scale factor via the 'display' settings? I have the latter, and everything looks ok for me. Robert From debbugs-submit-bounces@debbugs.gnu.org Thu Oct 10 09:36:47 2019 Received: (at 37689) by debbugs.gnu.org; 10 Oct 2019 13:36:47 +0000 Received: from localhost ([127.0.0.1]:55333 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iIYcY-0006Lo-SM for submit@debbugs.gnu.org; Thu, 10 Oct 2019 09:36:46 -0400 Received: from mail-yb1-f177.google.com ([209.85.219.177]:35062) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iIYcW-0006Lc-Tn for 37689@debbugs.gnu.org; Thu, 10 Oct 2019 09:36:45 -0400 Received: by mail-yb1-f177.google.com with SMTP id f4so1944303ybm.2 for <37689@debbugs.gnu.org>; Thu, 10 Oct 2019 06:36:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=6nbzk+grNwWJCVKKrX2RqSkiedBgIv/Czybr1p/golw=; b=VPSZRobHo9yW3mYgqcVFfGoB0ivMvxeOnMHcQ672bY5Bh4IrnC5YzUEeA5q8/Z7yIE mSO/YWMyqfsaGHma6T/0eV363c1+TEHYRw1dcs38MZkfWmg2dmppLiQqsNzUZm0A3wlm yfVSudueBIkKnVD9Q1an5f7KXIDTJtycXo32Kh7wR2kpP0LkkPGD9zRyLkbnb/9yxJlQ zH8i4sbp29UKudxif2RltrRZKUVLK2Zb/aSZ8UFlYMtrVNr7KkBJUpzAimZaArtsCDBt kaCq4lgFpYOvTTbzA06JX4HIEUXAJHODziHTsiErQdQoRqT7baSBmUo7sv6tbAToj6TO H+9w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=6nbzk+grNwWJCVKKrX2RqSkiedBgIv/Czybr1p/golw=; b=JH8n37fQ46PDrxOic3Suka/NkS2VQqyczjhBxX+7xxJWGTiIhuL563/zw1iu2UKepx jl0l8w9AP5W1esy71m/wCtsEYO3ob+5VU+zKZmBlo2CH6ImTsLCbPTX+KoCbdLnGvV2F 2C9uIWWfnsWI2bhm4rKzdxo5dy0uICcAvdnnoWKo/3ky3zEUrOJ+9xV9yeh5MuV5B7dm PcMCVHKWna04P2koMtfrYnyOMarkk53c/cGZiHPSlUISuIe4z2BDY4R/LJjFCRpi19aC Ixp4MnagEHFKw8tHVUKHGqmV8mJwAnPH6gohbmmYyE0YaM0eB/wop7rXuYFZCgj9h2tN yDtg== X-Gm-Message-State: APjAAAXu7IJTXL4i6ZqKh6HoxsMl21icrM9Us2+cyjILC37WHDLGn+0q iZiXZ5XxRDVziQSB0cun/h7kBcsumENwjqfVZOLg7waV X-Google-Smtp-Source: APXvYqzgc7QYVEIQcPmDzKZG9ioP2irzFHgSbeZshwihwmsTI9iqK+ujlYqxOYfZCMOoDZ+SAJyrRrJhfHLKBNOHXq4= X-Received: by 2002:a25:e7cf:: with SMTP id e198mr5663774ybh.334.1570714598424; Thu, 10 Oct 2019 06:36:38 -0700 (PDT) MIME-Version: 1.0 References: <83sgo1rpbx.fsf@gnu.org> In-Reply-To: <83sgo1rpbx.fsf@gnu.org> From: Carlos Pita Date: Thu, 10 Oct 2019 10:36:26 -0300 Message-ID: Subject: Re: bug#37689: Fringe pixmaps, widgets, etc. look ridiculously tiny in hidpi screen To: Eli Zaretskii Content-Type: multipart/mixed; boundary="000000000000aee7cd05948e7d6a" X-Debbugs-Envelope-To: 37689 Cc: 37689@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" --000000000000aee7cd05948e7d6a Content-Type: text/plain; charset="UTF-8" Hi Eli, > Please go ahead with making such an inventory, and thanks. I've attached some cases. In general, this seems to be related to hardcoded pixmaps. One option is to support at lease 1x, 1.5x and 2x version, using the one that best accommodates to current resolution (1.5x screens 1920x1080 are quite popular these days). Another options is to patch the underlying renderer of these pixmaps so that it scales them although I don't know if there is one single place to patch here. > Please also verify that the situation hasn't changed in Emacs 27. Yes, it's exactly the same. --000000000000aee7cd05948e7d6a Content-Type: image/png; name="Expand widget.png" Content-Disposition: attachment; filename="Expand widget.png" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_k1kqherm1 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 --000000000000aee7cd05948e7d6a Content-Type: image/png; name="Flymake fringe indicator.png" Content-Disposition: attachment; filename="Flymake fringe indicator.png" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_k1kqhert2 iVBORw0KGgoAAAANSUhEUgAAAG4AAAAsCAYAAACEy42cAAAABHNCSVQICAgIfAhkiAAAABl0RVh0 U29mdHdhcmUAZ25vbWUtc2NyZWVuc2hvdO8Dvz4AAAMwSURBVHic7ZtdSBRRFMf/s7PW7tqaBhvJ KiqBlhUkwVaSqPQQGCQohdBLBQlCL9JTgtRL2IMQvfqSESRRSRpEZFgPZR9Ghl8PGVmJX5RZs5uK +3F62DVccWfvzo7ZhfODYRnO7v8M/O+ZuefOXUXTNIIOTqdTL8ysE5b1vgDGGGycpLBxksLGSQob JylsnKSwcZLCxkmK1VQ1mkFf+2086h3A4IdtOHPrIg7bWMd0HQDQNI30joRYfE71eSoBINiqqM2X 2M9ZRxy+VUoKGycpbJyksHGSwsZJChsnKVHGOVvS4GxJ0/9FYBqvrl/AyfLdyMqwI2WDA+mZBThY WYcrdwfwMySYmXWSI6pnawZRM2L2ccGpLmo45CJVQbgX0Tt0+hTWSb6PE185mXuLy5VVaHrtBQFQ LA64i0pwYIcL6q9RvHvxBh9n/dDdB8E68XVEEas4Pw02ecgWGUkWVzld6p4k//IhMP+Vnl49Qfk2 RWdEsY6+jjhixs09obrsyFKNmk2nOmcotJpavCUd1vm3S17+3k48nAgCAFL2nMX5ii1QDFQ365iH gHEhjPf1YTIIACrcpWUoUI2kYh0zETAuiImxCYTHk4qc7bkwdl2sYyZRs0pvrbbKVwgL8wuR2ZAC R6rd4G2AdcxEoAFXYHcsXQzB5/UZnNKyjplEGeet1VapOhVZOVmR8g9gZHgEfkOpWMdMBJ5xFmR6 9iPPCgAhfHvcgZ55Y6lYxzyE2gFr0XFU54cfh8EvN9B4rR8LBpKxjnmIvR1IKcK5hkpstQAgH3oa j6K6qRvjiwlmYx3TUIT/ZhWaQPvpEtTc/AQ/AYCCja6d8HgK4d5sReD3LKZHh/B+aBzeIAG2KrR9 v4ea1BWCrKOvI0pCu7wWP9P9+mJyWZXkVr9ZJ+klL/GK+0sQP/o70Np6Bw+6XmJ4bAozWgCqfRPS XW7k5u/C3n0eFJdW4NiRQmTEbGpYR19HHwPGMf8Dcd/HKc/Cn1QWO8bxtYnrIbznZHkSPjf/PFHi GhdvJHB8beOxEKq4JfGlUbLy9slxc+KJkPD2vHglzvHk4qLwrFJSeEOspLBxksLGScof0kpUG5Rt dmgAAAAASUVORK5CYII= --000000000000aee7cd05948e7d6a Content-Type: image/png; name="Fringe wrap indicator.png" Content-Disposition: attachment; filename="Fringe wrap indicator.png" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_k1kqheru3 iVBORw0KGgoAAAANSUhEUgAAAJgAAADGCAYAAAAuRkmmAAAABHNCSVQICAgIfAhkiAAAABl0RVh0 U29mdHdhcmUAZ25vbWUtc2NyZWVuc2hvdO8Dvz4AAAXeSURBVHic7dxdaNV1HMfx7/88TM82zqK0 QWRzRnSz6ZSSKDKwi0gQygiiLnogogRvSq2EIoIermTdRFAWXUgXFRVENwU+BM4gWBKORAVzo0Kn 0X/NtcdvF5vjtJ3/Yf/gM87v/N8vEJzb3p6LDzucTb+Ru7sBSzQyMlLz/eVy2eI4nn87p35AyDYG BikGBikGBikGBikGBikGBikGBikGBikGBikGBikGBikGBikGBqmcmdk/g0fs/X2P232b1ll720or NrXaqrUbbOuje+29w4M2vsQYnWx2ajq+/0FfV4rczKr/ypV9w7Of+bkJTzZz2elkoxPHscdxvOjj K//86u/jOHZrieY+KGrxjjsf8meef8lf3v2cP7Kl01vn31fynn19PprwYA/t3eh0stFJGtjVYS0a mFnk+fat/tq3Qz7+n0cy7r9+udPXN8+uPGq+x985O73w0frlb572jnzkdLLRqRzPgiEt+moWx7Fb 1NTlu7+PvboJP/H6Jm+KzM2KvvntX3yq8t1TA/7W7Ss8MnM62ehUeypMerqM49jtmh0H/eJMwt/j 7lMDb/ptRXOzyEvbP/ZLFR872f+KdxVm30cnG51aT5HVBlZYXTxvXxz4wKKkVwFXztikmZm5TZ47 Y+enza4tzL59oe+YnZ4yM8sbnax0ksVxbOVyedGf11xj5a/8Tbv88Pyrignv23OL51N8Pp3wO2lf Rab6RqtPT9m0z79lY6NXzGt9Ap0G7FRX7SuXmVlh20fD9vUT1yV/qUwUWam5NPt50Urb9uEQnUx0 ZlX+38dacgM/Dcw916aVtzWdayxvZuaTRicrnXRyg199Ykf//l+fau2b77CbC2Zm00YnK520opL3 7Dnif9Z4yZpost9fXV/0yMzpZKOT9I3WxB8VmZlbrs17nnrXjw6OVY2O/d7vP5z6yxc/lhm/8Plj fkN+7tUEnYbvpB1Y1BKZj869QogKZbuxa6N1d7ZbWymyiXjYhs6etJ9PXbTVuw7Z6d67rbjwK6Bf su9euNce6D1hdBq/k/b4iR3b/7Df2lrjp+pmbhb5ivsPJH/nd2bY6WSjk/op0t19/LfjfvCNnb5j S7d3rGr1pnzOc8WSl69f6913bfcnX+z1T3/8w2v9CxA62eikfop05z4Ylo77YKgrDAxSDAxSDAxS DAxSDAxSDAxSDAxSDAxSDAxSDAxSDAxSDAxSDAxSDAxSDAxSDAxSDAxS3Gilw41WOvXT4UYrHW60 0gm3w41WOtxopRNuhxutdLjRSifcDjda6Yg71XGjlQ43WumE0EmHG610xBrkdiid5elwo5UON1rp hNvhRisdaYcbrXS40YpwcaMVdYWBQYqBQYqBQYqBQYqBQYqBQYqBQYqBQYqBQYqBQYqBQYqBQYqB QYqBQYqBQYqBQYqBQYobrXS40UqnfjrcaKXDjVY64Xa40UqHG610wu1wo5UON1rphNvhRisdcac6 brTS4UYrnRA66XCjlY5Yg9wOpbM8HW600uFGK51wO9xopSPtcKOVDjdaES5utKKuMDBIMTBIMTBI MTBIMTBIMTBIMTBIMTBIMTBIMTBIMTBIMTBIMTBIMTBIMTBIMTBIMTBIcaOVDjda6dRPhxutdLjR SifcDjda6XCjlU64HW600uFGK51wO9xopSPuVMeNVjrcaKUTQicdbrTSEWuQ26F0lqfDjVY63Gil E26HG610pB1utNLhRivCxY1W1BUGBikGBikGBikGBikGBikGBikGBikGBikGBikGBikGBikGBikG BikGBikGBikGBikGBilutNLhRiud+ulwo5UON1rphNvhRisdbrTSCbfDjVY63GilE26HG610xJ3q uNFKhxutdELopMONVjpiDXI7lM7ydLjRSocbrXTC7XCjlY60w41WOtxoRbi40Yq6wsAgxcAgxcAg xcAgxcAgxcAgxcAgxcAgxcAgxcAgxcAgxcAgxcAgxcAgxcAgxcAgxcAgxcAgxcAgxcAg9S+H8y0f +yzc4AAAAABJRU5ErkJggg== --000000000000aee7cd05948e7d6a Content-Type: image/png; name="Checkbox icons.png" Content-Disposition: attachment; filename="Checkbox icons.png" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_k1kqherh0 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 --000000000000aee7cd05948e7d6a-- From debbugs-submit-bounces@debbugs.gnu.org Thu Oct 10 09:37:56 2019 Received: (at 37689) by debbugs.gnu.org; 10 Oct 2019 13:37:56 +0000 Received: from localhost ([127.0.0.1]:55336 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iIYdg-0006Na-3q for submit@debbugs.gnu.org; Thu, 10 Oct 2019 09:37:56 -0400 Received: from mail-yw1-f50.google.com ([209.85.161.50]:45147) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iIYde-0006NN-Dv for 37689@debbugs.gnu.org; Thu, 10 Oct 2019 09:37:54 -0400 Received: by mail-yw1-f50.google.com with SMTP id x65so2151655ywf.12 for <37689@debbugs.gnu.org>; Thu, 10 Oct 2019 06:37:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=9alqj04XoyoVmaEfJYheV+sx9ZR8/NpWHjCekpaT0Bk=; b=jQrs8nvKY6e0zJWGouLRw0Cct1VTGIXEWLqIqahnoJxDTtSSrPOXsKC3F1AESfhpOl trtNxHAG6hb0IZprbIcAsL0fA7+CWtfrq7ilwVTkVSwWbveDQiEhl5jHnj9nNaNSwesK MF4T+4IQcL8hmdGh6zvnhHZG5MSQFokoq8KwdgtsZIj0Ty4HWGfZsgAHDdUpG100tcle kccC0/XHhG5noD4KzD+8ObWQS9vROZWqJj6asxqQ8nERbX/szmaqwzu9WQp9F0BUDTWn pEDPkLz0lx+medF6NQnqvEo3L+qaJF0+sDsEwdpt7gChTC/d+gVHUnJaAB5HwIYe/5Y/ i8PQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=9alqj04XoyoVmaEfJYheV+sx9ZR8/NpWHjCekpaT0Bk=; b=iT2MqgowF47LpBM5dST6U4S1wqC/3L3ZVnR7U+PESvAztiVo29vKZZgScT3HJK+wNh PJRsqQ2Wh0oYcE1OYHpe0UXPbX/ibPfkeXKnOOnhCRAruAT8i2uOq+4nZ/0FrJ8Qgbp6 +ovMywrt+XFhaDODjNh1WcOBaW4W3bmmiwo8M3upmZ3/Y2gLA845gR8s0tplfXaP7J9C dbeYk3EL7lLYnRgZr2PZujrSiyNgOzYB3BnNNmmiTsjy9M6CIxcTeugYCM0W1e2u+gpR CiQGpzMmyZkON2uJwt4mj463Xmq+cpBI00YlBkpuIBd6Z2uDZPnBZgj5C++XYX+lY7wC Va0A== X-Gm-Message-State: APjAAAVGw2hZC9Gb9QDYbnWOsTSOkdVtoX4WKMoQxBxY8ioXiGAfO89P UJSWWM36lHAhGxvBZD/n50DeKBKE98eO6Jr+jig= X-Google-Smtp-Source: APXvYqzCmEwoNNHk6z6TkOWqXJPV/C2wFEdJWL1I4IjMhYcrfOBtGsUTK4jMQD+bvbev1ZyEsAjcDxs48PZrJj1UcVU= X-Received: by 2002:a81:996:: with SMTP id 144mr7414981ywj.57.1570714668559; Thu, 10 Oct 2019 06:37:48 -0700 (PDT) MIME-Version: 1.0 References: <83sgo1rpbx.fsf@gnu.org> In-Reply-To: From: Carlos Pita Date: Thu, 10 Oct 2019 10:37:37 -0300 Message-ID: Subject: Re: bug#37689: Fringe pixmaps, widgets, etc. look ridiculously tiny in hidpi screen To: Robert Pluim Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 37689 Cc: Eli Zaretskii , 37689@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) > Is that a font scaling factor of 2 via the gnome-tweak-tool, or a 200% > scale factor via the 'display' settings? I have the latter, and > everything looks ok for me. No font scaling factor, just the display scaling factor. Also, no fractional scaling factor enabled. From debbugs-submit-bounces@debbugs.gnu.org Thu Oct 10 09:47:21 2019 Received: (at 37689) by debbugs.gnu.org; 10 Oct 2019 13:47:21 +0000 Received: from localhost ([127.0.0.1]:55345 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iIYmn-0006c1-6A for submit@debbugs.gnu.org; Thu, 10 Oct 2019 09:47:21 -0400 Received: from mail-wr1-f46.google.com ([209.85.221.46]:36255) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iIYml-0006bn-CC for 37689@debbugs.gnu.org; Thu, 10 Oct 2019 09:47:19 -0400 Received: by mail-wr1-f46.google.com with SMTP id y19so8002436wrd.3 for <37689@debbugs.gnu.org>; Thu, 10 Oct 2019 06:47:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:mail-copies-to:gmane-reply-to-list :date:in-reply-to:message-id:mime-version:content-transfer-encoding; bh=BTD1924a6PgEKp46Vf8qevPY/nta1jXk1q76qbSJErE=; b=MCvWz2O1wJsmQpDqS34s7GL3ForS1hcoJqvOFVSemJbRcmb+8c9TsVJKuHUkIZncyP qJV7P2e5/JhdZKHLTg6riGmVr3fc65LybH4O6OSVBCYrmdTt1ynoW6XFhUSTcNoYE59/ qvB3BPLRXrB0yIt7pRVm/PxApSFEGtHfqELT+vXtAog95Jz7taPq1xquyyqZ3jZt62Ht 0ulbGJCkT63Ex0Wv8iHhf/kx6W9o/MwQjxpu1Cf92vE4Nx/2pEIz95dm/U3I0avO3se/ OfnYaT8H2UqyUJVKmWWPQKmLb1VCbNpXO14XYnIBsE+Kg5CJUCQvLNgn26eBywbqasUm RE/Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:mail-copies-to :gmane-reply-to-list:date:in-reply-to:message-id:mime-version :content-transfer-encoding; bh=BTD1924a6PgEKp46Vf8qevPY/nta1jXk1q76qbSJErE=; b=ExXzHrq33/m+yywNJKdqwulqLUW9e91nJbiCC7Swwnr3Bh1AJlQw4dSq+duVZ3BiWK CNK+6ZCj9vh4p6WGr9lvRaGp7zDic803rGOA3EIFTDwq0mFUb7VehMYkjtKXETatZ8Gu 6RN0Gy8V5tR6mlQOcUnSMdrbLNB+uCO/0hTO/6TulKcRwDKPVOYqYEqEUdhnreQj8H+Q 4MdCL1UtTPi4PGdTvm78Af8ZuIIZ8zhPGp5AqB9KawDjIi2JepORjgRzZUlfs/tcH07O /Bm8rDroBWolQdrxHbkpZHC5Ulq5E5pxQZA2yFuHgd1nw+Gp0p/fIL2jBf9efmUGCcK+ 9TNQ== X-Gm-Message-State: APjAAAVVnNYKyBWS4z0Kj2Y1SHv/K/xu/h+jY9v285Meoi2xAjiwvSS7 Kv2LQU0GHm6gl1RI9TNBpcbJB47fwT0= X-Google-Smtp-Source: APXvYqxqUUAGYjrlxLLYrhA62oe4YXdOoZiil24eRkOvUdk4/JfUhgzHoOxmHhS3U8JAByjbHNjxcg== X-Received: by 2002:a5d:6592:: with SMTP id q18mr9263926wru.382.1570715232741; Thu, 10 Oct 2019 06:47:12 -0700 (PDT) Received: from rpluim-mac ([2a01:e34:ecfc:a860:44fb:6490:3ed:c3e8]) by smtp.gmail.com with ESMTPSA id 90sm7748641wrr.1.2019.10.10.06.47.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Oct 2019 06:47:11 -0700 (PDT) From: Robert Pluim To: Carlos Pita Subject: Re: bug#37689: Fringe pixmaps, widgets, etc. look ridiculously tiny in hidpi screen References: <83sgo1rpbx.fsf@gnu.org> X-Debbugs-No-Ack: yes Mail-Copies-To: never Gmane-Reply-To-List: yes Date: Thu, 10 Oct 2019 15:47:11 +0200 In-Reply-To: (Carlos Pita's message of "Thu, 10 Oct 2019 10:37:37 -0300") Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 37689 Cc: 37689@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) >>>>> On Thu, 10 Oct 2019 10:37:37 -0300, Carlos Pita said: >> Is that a font scaling factor of 2 via the gnome-tweak-tool, or a 20= 0% >> scale factor via the 'display' settings? I have the latter, and >> everything looks ok for me. Carlos> No font scaling factor, just the display scaling factor. Also, = no Carlos> fractional scaling factor enabled. You=CA=BCre on a much more recent version of GTK than I am, so I suspect that the way to query the display's scale factor has changed (again), so we=CA=BCre not applying it. Can you run emacs under gdb, put a breakpoint on 'xg_get_scale', and see what it returns? (perhaps I should add an internal variable to expose that, but I worry that people will abuse it). Robert From debbugs-submit-bounces@debbugs.gnu.org Thu Oct 10 10:21:27 2019 Received: (at 37689) by debbugs.gnu.org; 10 Oct 2019 14:21:27 +0000 Received: from localhost ([127.0.0.1]:56924 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iIZJm-0001Pa-Q7 for submit@debbugs.gnu.org; Thu, 10 Oct 2019 10:21:27 -0400 Received: from mail-wr1-f42.google.com ([209.85.221.42]:39750) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iIZJk-0001PK-AN for 37689@debbugs.gnu.org; Thu, 10 Oct 2019 10:21:25 -0400 Received: by mail-wr1-f42.google.com with SMTP id r3so8151603wrj.6 for <37689@debbugs.gnu.org>; Thu, 10 Oct 2019 07:21:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:mail-copies-to:gmane-reply-to-list :date:in-reply-to:message-id:mime-version; bh=wXGPfp7RfqtWfs8B6x3fQQ6BCznPvxcSMNvnh5bJqr8=; b=gtVFStncuFKlPzLIfAEEesTA9EnDgNjtdBwvDfPfM4S2SEkFChY7NJsMQVhEWzsC+O 3afiIuwo9gxyXpEvCm2bC+xNbabRdFkx32b+O1kjFf27xhyJRNrfN3lWZKYB1r6RJ+w6 9sZL5R1czRKdvccbTXYv82xu/nnlb6dHK3SSott5DRlbyIbIlb4fRQGZA7FefCBq4FMq 3CAPBvVbo7vXzMk5WNtul/gdr1NeeJxWCdiogPU6WllzmWAx911iJaaA/jTm/ZQxPsvD uqmsY9xfco7WZhRT0Nyno347oUKgRajPf0OUbntDvlNHCEdk7jmgTTy08gvSTXhxXXGN JJMQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:mail-copies-to :gmane-reply-to-list:date:in-reply-to:message-id:mime-version; bh=wXGPfp7RfqtWfs8B6x3fQQ6BCznPvxcSMNvnh5bJqr8=; b=idWxuVCdjza1jcieEK26nt8bHh9LpjxHDZJPnfHKW0vZGtjklRWdAxkfxl3ZUqjbKC KC/Km/+54lnhlYQVEd0OYNzo6Ng+HRaMzEGagQeH3Peflc22KeBX8IMmFPpzggfDx0JI V20M3FOJSzhIWKndvvS9HpA2Of5zTMe13yP+GnGQx3n10+g6dx8UqGvvn7yTxNecndhu /BGJFb5O8PfLzzRO9QyrQf6Uwg8hFxUTHZMEyPWFa05kgkQ0Wch5dH2Z22nBhbM/g/hV 1xmzIOS0hEygagZ7fAZ6QaDSRdJyz1uiLxzB90v9yr5yO2d3G7Pz9SX3RfBIgfrfANyl V4Xg== X-Gm-Message-State: APjAAAWbvi8tsAAoqvJH2SP1aKrE+B7HoXjkvm9VluAaLA98quOyt6/K xqGyPVcLAWD4NeSjrxNbh3SML3ZLPQE= X-Google-Smtp-Source: APXvYqxE6gwurZwUTVZzew/95Z7R3VLAxuDGiF2VkmIfZkqzNIB+g64IIdgwo7YH1yf4TtG48R7vpw== X-Received: by 2002:a5d:6984:: with SMTP id g4mr8818944wru.43.1570717278011; Thu, 10 Oct 2019 07:21:18 -0700 (PDT) Received: from rpluim-mac ([2a01:e34:ecfc:a860:44fb:6490:3ed:c3e8]) by smtp.gmail.com with ESMTPSA id v6sm10642147wma.24.2019.10.10.07.21.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Oct 2019 07:21:17 -0700 (PDT) From: Robert Pluim To: Carlos Pita Subject: Re: bug#37689: Fringe pixmaps, widgets, etc. look ridiculously tiny in hidpi screen References: <83sgo1rpbx.fsf@gnu.org> X-Debbugs-No-Ack: yes Mail-Copies-To: never Gmane-Reply-To-List: yes Date: Thu, 10 Oct 2019 16:21:16 +0200 In-Reply-To: (Carlos Pita's message of "Thu, 10 Oct 2019 10:36:26 -0300") Message-ID: MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 37689 Cc: Eli Zaretskii , 37689@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) >>>>> On Thu, 10 Oct 2019 10:36:26 -0300, Carlos Pita said: Carlos> Hi Eli, >> Please go ahead with making such an inventory, and thanks. Carlos> I've attached some cases. In general, this seems to be related to Carlos> hardcoded pixmaps. One option is to support at lease 1x, 1.5x and 2x Carlos> version, using the one that best accommodates to current resolution Carlos> (1.5x screens 1920x1080 are quite popular these days). Another options Carlos> is to patch the underlying renderer of these pixmaps so that it scales Carlos> them although I don't know if there is one single place to patch here. Perhaps we should convert those pixmaps to some scaleable format, and then autoscale them? Robert From debbugs-submit-bounces@debbugs.gnu.org Thu Oct 10 10:33:54 2019 Received: (at 37689) by debbugs.gnu.org; 10 Oct 2019 14:33:54 +0000 Received: from localhost ([127.0.0.1]:56943 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iIZVp-0001j5-SC for submit@debbugs.gnu.org; Thu, 10 Oct 2019 10:33:54 -0400 Received: from mail-yb1-f169.google.com ([209.85.219.169]:39444) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iIZVo-0001it-IT for 37689@debbugs.gnu.org; Thu, 10 Oct 2019 10:33:52 -0400 Received: by mail-yb1-f169.google.com with SMTP id v37so2001998ybi.6 for <37689@debbugs.gnu.org>; Thu, 10 Oct 2019 07:33:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=FSb9nrM6y+nt55YnIW28T6+4Ok4Xle+HoNfeR1UKAQE=; b=B8bz18otDXJVLrmZM5s+NbGbHZhgmicAJ8eBni8YSob/TldJYmxZDNY59fvvuIwz+s hoaX5K3WK2pFbWjHK1wzJSiI51xynnwqqTl8twnmWqx8N9sjHQOf4ctuQnabqJ55Q+jW LfjgkgZLbqRGlBcHZqH5KpfyEN9bhnkdQSJ7cYPrAt3LN/phk0b2EFk+58TlTcIMMWpV RN9pWSOm/HOv0ZrhrgkV+sneKZg8dhtA6d2JNr7YsRUywFwi8YPoiYVIyMgumKkNeGPF LtQcRb/sRaWs/TEysWtDGOdgs0U9DIHQ/nRm/xPG5/rBrJggL4jb+C0QZyCcGJet3gOr jF4g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=FSb9nrM6y+nt55YnIW28T6+4Ok4Xle+HoNfeR1UKAQE=; b=ijt1mRZp3DzVmzYIGw6HY5ho0PSvcLU8h4EDxovIBxs2lsx98ybySaiuRW98l102kZ HiAXH6vFJNkQprl4VNZMPha+o+02DK4HeQoU9MXmikKPNpNFzmngC4ITq36jiu2Ye+f0 TmsYhvqMmFU7RNrh21H6rwMJpgB8bh6hwD3JbhlHxoPJfwMw/7D7Fb2dFkUBwyoY5Sum 0TWYd+SEiW+WnoalazJL9RmzfJSLGFi2mKtFLVvPoBWRHJV/eDIkxx7HQ65JW9DzILp2 gBw0iExtQEsmomCnyI8CIH4jcmTF4qrNxPhNkX605EiV9CwCq9SaDunoOPvDKH9cjkQF fhfw== X-Gm-Message-State: APjAAAWofv7nGphY/FiOQFyiaOW5JdKXtXakYPXex9zOmbwSfF8+lXHl MdUSl9M4s1ShPh9TUQDs07goKp19L+XWrCuH9KQ= X-Google-Smtp-Source: APXvYqxShKEHg1uEGTGQJz/hA6YfUMgR3VvwE7BhpX2lZ2SwrzjiV2hyao4+mUIovsgUB9UQd4D4/DS7I7XdROllSs4= X-Received: by 2002:a25:e7cf:: with SMTP id e198mr5879252ybh.334.1570718026699; Thu, 10 Oct 2019 07:33:46 -0700 (PDT) MIME-Version: 1.0 References: <83sgo1rpbx.fsf@gnu.org> In-Reply-To: From: Carlos Pita Date: Thu, 10 Oct 2019 11:33:34 -0300 Message-ID: Subject: Re: bug#37689: Fringe pixmaps, widgets, etc. look ridiculously tiny in hidpi screen To: Robert Pluim Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 37689 Cc: Eli Zaretskii , 37689@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) > Perhaps we should convert those pixmaps to some scaleable format, and > then autoscale them? That could be done, but does this render you request for me to debug the scaling factor issue obsolete? Because it seems to imply that these particular problems won't be fixed by a correct detection of scale anyway, and pretty much everything else looks ok here. From debbugs-submit-bounces@debbugs.gnu.org Thu Oct 10 10:37:19 2019 Received: (at 37689) by debbugs.gnu.org; 10 Oct 2019 14:37:19 +0000 Received: from localhost ([127.0.0.1]:56951 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iIZZ9-0001oU-Iz for submit@debbugs.gnu.org; Thu, 10 Oct 2019 10:37:19 -0400 Received: from mail-yw1-f54.google.com ([209.85.161.54]:37710) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iIZZ7-0001oG-Hm for 37689@debbugs.gnu.org; Thu, 10 Oct 2019 10:37:17 -0400 Received: by mail-yw1-f54.google.com with SMTP id m7so2246991ywe.4 for <37689@debbugs.gnu.org>; Thu, 10 Oct 2019 07:37:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=IxcVGoAygK+l1uloUc0bAC0boyUYnIWQUiHFyy2QylU=; b=YTfFOwgZ6NvCV/hQFPfddkxceYfl8+I2U+h64y4xAZ42gqT+bax31dEFOhMssXdGVo t4mcDnRJR8pkRfAgvI8L0rgImuaUwWWxbOM8psaP+c7xe+FSB/K7pq3e2B4EadoLJ48r M7/edtT2WdW5x0mBibwkU7lRVXCktr822g8U6cBkN+ixlLkn13yviluxl4gR4IlQX+Ze Cfj0aGYJxdMf0eEP1uM1NswkMK1si2ZWhSMYiHCTs32AYHZVsKml7FSh0hGVMd3c51VJ 4cvopqZhAODQgPXGC/MOY06ZwABo1YJJT2Q1I55kPtkb10KeMkJgqv4nCFlpb7mvfgri HAtA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=IxcVGoAygK+l1uloUc0bAC0boyUYnIWQUiHFyy2QylU=; b=t0R0e2tYbQBaOXQ+2MYd0LTXj+9z7nW6H1pdgkyRDskkIPvfezROJrw8OTMsdHt7/q O/s/xfongQMRTb2ybZFouGTbD+M4YM9610K91YZwiyB8VkWe6YLHHTDPUfcjQ3rT3iiz 0ui/+hr2ueOJYzuLlATPLWywgA5IoJHCnce4gWs+pZxZebl1uP7rUcdzQa3I1Lc+zJFy vQ3+H6SnAaboyfzK+gEQUJNdg5ApFoWESaYD9smHz07FqfcvnkIIOVIZuTNc2BRjDA1u zVXM6DiiUqoykcW064HZQs7fgVzlb1goBtZ363pN1daq70k5ceJVHjb/EwanFlhcR9cG HpkA== X-Gm-Message-State: APjAAAXB4w+vB6H+QAdmKuWxujrK5ocvWbqKanJB23WhHgox5lcVEiOR bbG4Hj6B0h7IozqNFJkbdhgwenhq+u5G+p0H/GU= X-Google-Smtp-Source: APXvYqw0lPWFu+6zuMWSzntLG2RkzkkjYYkFIKvO7HpjGT15sHKbh3Mw/1Rc9N5uVErNsaXaPUq3c8ahNw0nCjLNzTo= X-Received: by 2002:a81:b616:: with SMTP id u22mr7516136ywh.80.1570718231935; Thu, 10 Oct 2019 07:37:11 -0700 (PDT) MIME-Version: 1.0 References: <83sgo1rpbx.fsf@gnu.org> In-Reply-To: From: Carlos Pita Date: Thu, 10 Oct 2019 11:37:00 -0300 Message-ID: Subject: Re: bug#37689: Fringe pixmaps, widgets, etc. look ridiculously tiny in hidpi screen To: Robert Pluim Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 37689 Cc: Eli Zaretskii , 37689@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Another option is to provide pixmaps at 1x and 2x. Scaling is trivial at 2x and any of them will look reasonable well at 1.5x. From debbugs-submit-bounces@debbugs.gnu.org Thu Oct 10 11:06:02 2019 Received: (at 37689) by debbugs.gnu.org; 10 Oct 2019 15:06:03 +0000 Received: from localhost ([127.0.0.1]:56964 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iIa0w-0002Uy-MQ for submit@debbugs.gnu.org; Thu, 10 Oct 2019 11:06:02 -0400 Received: from eggs.gnu.org ([209.51.188.92]:48900) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iIa0v-0002UU-AX for 37689@debbugs.gnu.org; Thu, 10 Oct 2019 11:06:01 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:41190) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1iIa0q-0007Z6-8n; Thu, 10 Oct 2019 11:05:56 -0400 Received: from [176.228.60.248] (port=4924 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1iIa0o-0008Os-ON; Thu, 10 Oct 2019 11:05:55 -0400 Date: Thu, 10 Oct 2019 18:05:41 +0300 Message-Id: <831rvksksa.fsf@gnu.org> From: Eli Zaretskii To: Robert Pluim In-reply-to: (message from Robert Pluim on Thu, 10 Oct 2019 16:21:16 +0200) Subject: Re: bug#37689: Fringe pixmaps, widgets, etc. look ridiculously tiny in hidpi screen References: <83sgo1rpbx.fsf@gnu.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 37689 Cc: carlosjosepita@gmail.com, 37689@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Robert Pluim > Cc: Eli Zaretskii , 37689@debbugs.gnu.org > Date: Thu, 10 Oct 2019 16:21:16 +0200 > > Perhaps we should convert those pixmaps to some scaleable format, and > then autoscale them? You mean, SVG? We could do that, but we'd like images to display well even if Emacs cannot display SVG. Also, I think fringe bitmaps and other icons we use in the UI cannot be scalable, we need to scale them ourselves. Not that I'm an expert on that (so don't take my words as definitive and/or final). From debbugs-submit-bounces@debbugs.gnu.org Thu Oct 10 11:06:52 2019 Received: (at 37689) by debbugs.gnu.org; 10 Oct 2019 15:06:52 +0000 Received: from localhost ([127.0.0.1]:56967 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iIa1k-0002W1-0h for submit@debbugs.gnu.org; Thu, 10 Oct 2019 11:06:52 -0400 Received: from eggs.gnu.org ([209.51.188.92]:48993) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iIa1i-0002Vn-6U for 37689@debbugs.gnu.org; Thu, 10 Oct 2019 11:06:50 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:41195) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1iIa1d-0007io-4u; Thu, 10 Oct 2019 11:06:45 -0400 Received: from [176.228.60.248] (port=4975 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1iIa1b-0008Rb-TE; Thu, 10 Oct 2019 11:06:44 -0400 Date: Thu, 10 Oct 2019 18:06:30 +0300 Message-Id: <83zhi8r66h.fsf@gnu.org> From: Eli Zaretskii To: Carlos Pita In-reply-to: (message from Carlos Pita on Thu, 10 Oct 2019 11:33:34 -0300) Subject: Re: bug#37689: Fringe pixmaps, widgets, etc. look ridiculously tiny in hidpi screen References: <83sgo1rpbx.fsf@gnu.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 37689 Cc: rpluim@gmail.com, 37689@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Carlos Pita > Date: Thu, 10 Oct 2019 11:33:34 -0300 > Cc: Eli Zaretskii , 37689@debbugs.gnu.org > > > Perhaps we should convert those pixmaps to some scaleable format, and > > then autoscale them? > > That could be done, but does this render you request for me to debug > the scaling factor issue obsolete? No, please go ahead with debugging this, and thanks. From debbugs-submit-bounces@debbugs.gnu.org Thu Oct 10 11:43:47 2019 Received: (at 37689) by debbugs.gnu.org; 10 Oct 2019 15:43:47 +0000 Received: from localhost ([127.0.0.1]:57005 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iIabT-0003Sj-Ht for submit@debbugs.gnu.org; Thu, 10 Oct 2019 11:43:47 -0400 Received: from mail-yw1-f65.google.com ([209.85.161.65]:42612) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iIabR-0003SU-GE for 37689@debbugs.gnu.org; Thu, 10 Oct 2019 11:43:46 -0400 Received: by mail-yw1-f65.google.com with SMTP id i207so2318137ywc.9 for <37689@debbugs.gnu.org>; Thu, 10 Oct 2019 08:43:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=LxXPzWvyUMcfdPKEL4/99JNlb9EVMQMQ/r209gQClDU=; b=FVYvyFE86IpesY+JkQzTidLpadpKRttCucyWcpfoSbcCagbzgdNjqSfgPcesqmqyx0 IrEycno4dYtFAsBPN9ZdT4S8XPVG7Iqpe214/YUnx8irZkEFgmACa4vZHd6ljQ0ichS2 QIcBwXwohqtrzNxLJXp0tmzFQuzmMprDTzqX4vT5LSMy4OF9PTwDXQAvwcc4rfRd5B2R ZbJZf9KX+BgXDu2A6crw56+uo6g/j4FM5cwENpH15heNBgx7sEuicMIbkN1w9kwm9oU6 vcTuCvEJM+x0qZcNp5xHXJES5hnFI5zSKVM1yAY8pJ+YYskw0BPxZZWt9DFG7wHxCMrw emHQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=LxXPzWvyUMcfdPKEL4/99JNlb9EVMQMQ/r209gQClDU=; b=iZmd0UtGU9Al8bv6WSZuS6fBJbH9izNjVmQAd1SbyiDZ03x+f2mHBipB/+cuKNNiS/ Vby7mT9l3WzcpjB/fMGsuvo1eeeWI1/vHyCFWT34b52n6+3udAqK/4bbs2VB+aTq5tjx +xDrE9eTiED1JZB/X51EFf8DAjsuGb7PZc1NagIMi9m6VDObzUAoaC56coLB1RkFzS8x f0t894U2sUdDuofGLjSBVVOoJvjDFTZ2MFmaBWq+GI1IBKSO/H1BoIIFeLjUyFUnqimq cPN2eYSBqYgXbDrk2UQtElu/h+9Fw+dVBJmc892MmigNYJSWaeBhRiXQodNI3TWyfwUO Gjhw== X-Gm-Message-State: APjAAAWzQRr4CoNUBSe0O93YAiCl0Wf/fYpsMFTiuIHMUGyYSRzOogbE sWf+v8wxVwMLICKVkyyX8XS7HYsxpaGFl+RoHO4= X-Google-Smtp-Source: APXvYqzrCOHynPBUfuD6Gk3s+McNmzso4tdqRvPkanDaQwTygo4cKl8MNQ+NbS+Wm8223b5/RHvz3wD/wOzJfIvkJO4= X-Received: by 2002:a81:b616:: with SMTP id u22mr7789701ywh.80.1570722219869; Thu, 10 Oct 2019 08:43:39 -0700 (PDT) MIME-Version: 1.0 References: <83sgo1rpbx.fsf@gnu.org> <83zhi8r66h.fsf@gnu.org> In-Reply-To: <83zhi8r66h.fsf@gnu.org> From: Carlos Pita Date: Thu, 10 Oct 2019 12:43:28 -0300 Message-ID: Subject: Re: bug#37689: Fringe pixmaps, widgets, etc. look ridiculously tiny in hidpi screen To: Eli Zaretskii Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 37689 Cc: Robert Pluim , 37689@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) > No, please go ahead with debugging this, and thanks. Ok, no problem, it looks fine to me: 3701 return scroll_bar_width_for_theme * xg_get_scale (f); Value returned is $1 = 2 From debbugs-submit-bounces@debbugs.gnu.org Thu Oct 10 11:52:15 2019 Received: (at 37689) by debbugs.gnu.org; 10 Oct 2019 15:52:15 +0000 Received: from localhost ([127.0.0.1]:57010 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iIajf-0003gP-Dd for submit@debbugs.gnu.org; Thu, 10 Oct 2019 11:52:15 -0400 Received: from mail-yb1-f180.google.com ([209.85.219.180]:33809) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iIaje-0003gF-Gj for 37689@debbugs.gnu.org; Thu, 10 Oct 2019 11:52:14 -0400 Received: by mail-yb1-f180.google.com with SMTP id m1so2101821ybm.1 for <37689@debbugs.gnu.org>; Thu, 10 Oct 2019 08:52:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=AqIxSgHDLRed5Cn88u1FXhNAyD50doH+AZC6a3Wi0vE=; b=ghmzG47pU4GPJdZpguZ9d4/SP4fUiRlL/0uWfUjc8AlmsFxa+h09lGSEiRkoHaGX2X uNRKqmqm0lw2BPTk3YcwwJfONxFnELwrkaGh+dSZ7mD5gUoWh09ZsKHk46ijjp6pc8zl qiUhqZoDALOTAsHhF/uwfBshIetG89r3Twj0TabLcX8R6cJj/8QzMhrfBZYx64YQGyOE UvrZUeiP4PbrRZlmm/7kmnklRMStW9ejdCaJp44QzpYRyumGjdws0aNioKcfUK/gnILt GduA+ini+rLE3OQcalpW/e/k4m74c5rPaoOea6DFn4zvBTPOgCRl5JX4VEpI4q1SZTdZ psTg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=AqIxSgHDLRed5Cn88u1FXhNAyD50doH+AZC6a3Wi0vE=; b=LZRZu0IQ+LuAxYIg4sPHJIdKqJex1G2F/3/niLG9AHD2WioEhpstgvPqiZ4hrl/l8J WPCsKMpfTsIy5ogha7apiZ+lL61fACgAKCykcNHrmks5T31HD3O5SXJv4tk0YpF+VDAs zQIvFqenhueVt+xlpRY54PO7O9e8aVVGxIxI4NzG0246UDrQDkv0b85axoHnXsNYcoeS jXkZB8cAs4ZL9GUJUxikXIh0MU9L0tnF8nn/K6Tx9u3e7R4PemaOO0LT1MvIayyT+1tG NQIxkQcMDQ6gaCWjcCyd43N099SHEfZt59M3Hnwc56OMYLbi/bcInblkckzfHvEps8Af 7tQQ== X-Gm-Message-State: APjAAAWoLUWaJ4dq/iB8BK48zzBZE0iUY6j9p/B0ivf/i9OnSdj/Ccue q2x0o62RmkKGqxn+aRqsDjUxpMuiUr6VtDnLouw= X-Google-Smtp-Source: APXvYqwaNcjkXxZdH6UuCtjpD6VdB2RLN13/3LUEBfDKo0/n03Dmo44Si2gx2xkduas2Nu4lLu5vRPa0V08WSX6Ci5Y= X-Received: by 2002:a25:be48:: with SMTP id d8mr6866027ybm.353.1570722728664; Thu, 10 Oct 2019 08:52:08 -0700 (PDT) MIME-Version: 1.0 References: <83sgo1rpbx.fsf@gnu.org> <831rvksksa.fsf@gnu.org> In-Reply-To: <831rvksksa.fsf@gnu.org> From: Carlos Pita Date: Thu, 10 Oct 2019 12:51:57 -0300 Message-ID: Subject: Re: bug#37689: Fringe pixmaps, widgets, etc. look ridiculously tiny in hidpi screen To: Eli Zaretskii Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 37689 Cc: Robert Pluim , 37689@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) On Thu, Oct 10, 2019 at 12:05 PM Eli Zaretskii wrote: > > > From: Robert Pluim > > Cc: Eli Zaretskii , 37689@debbugs.gnu.org > > Date: Thu, 10 Oct 2019 16:21:16 +0200 > > > > Perhaps we should convert those pixmaps to some scaleable format, and > > then autoscale them? > > You mean, SVG? We could do that, but we'd like images to display well > even if Emacs cannot display SVG. > > Also, I think fringe bitmaps and other icons we use in the UI cannot > be scalable, we need to scale them ourselves. Not that I'm an expert > on that (so don't take my words as definitive and/or final). At least for the fringe part, what do you think of modifying define-fringe-bitmap to take into account scaling factor? For example, if scaling factor > 1.5 make everything x2, if > 2.5 then x3, etc. It seems quite simple to achieve those integer scalings. From debbugs-submit-bounces@debbugs.gnu.org Thu Oct 10 12:02:00 2019 Received: (at 37689) by debbugs.gnu.org; 10 Oct 2019 16:02:00 +0000 Received: from localhost ([127.0.0.1]:57014 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iIat6-0003xS-DF for submit@debbugs.gnu.org; Thu, 10 Oct 2019 12:02:00 -0400 Received: from mail-yw1-f44.google.com ([209.85.161.44]:44193) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iIat4-0003xB-5p for 37689@debbugs.gnu.org; Thu, 10 Oct 2019 12:01:58 -0400 Received: by mail-yw1-f44.google.com with SMTP id m13so2339654ywa.11 for <37689@debbugs.gnu.org>; Thu, 10 Oct 2019 09:01:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=2WA4KYKjITlLwdHSy+9f+O0cW2E1jGezj75leIFVsYk=; b=JFJTYashLUt+sVA+TNICCn5olj9a18IwXY+yXBIztLXjoO59iB6jemw5NYOLfnYC6t rfLWhyyl6vioXtjhVKdfpz9bjWdnvGjcYrDwufX47CzRa7iVK9jTBnmfmZYr8fSt/z5k IcMGTq/nDTqin4hB5WIHrsNRkOO7PaMIwi/zD7Ul5V9nIMUT9VdLdKvIxIMNzYP/g41W sHV+n/4L7sD3+l1W/J5VIoDVBCp13BhniUyGUiofXL2KZi6fov0x5RrUuHdTRPzTiGk1 tzwfMc7LD8Zg1RJXj/Ce3PGBgyJXL+lqNL+SRnGxGb+Bq7AY6O85QXRMWUcWQncU4YSR 0RhA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=2WA4KYKjITlLwdHSy+9f+O0cW2E1jGezj75leIFVsYk=; b=pZe2VliwwyJlIn2PZCkrg071A37hx4Bfg4iIWcqlrx+phSF7TQIYw0AJnNT+NqUuHB wtc5fo03HGtlNotLUBbQz6aOFoMDxXZSIupBqBatevG8gh8Xo/TqBnMzSfTBRxLd18Hl EMTZ6yykOKDjpHpy3ZVhSKpYtdXoBnv38ehFv511jaAEMN37tifOmROcqI4dtwYJytER RNkzWoCD1emzzpls5abZTzcU+IsKPr5dtH+Lr0c5VGZPweiOLd/o4xrDsfSGhC4tSnKf FfMwmUuAfFeiKEuijTedlSdno2UZUQe3fuiHGN1YgMkCcHDXH2B9boHjjnp713jZJEB/ Bbnw== X-Gm-Message-State: APjAAAUXl+92yw4TFD5C5Y276YW1AqiKPEf6Zdi3VhEyeEraaN2MWPIq ZE9HuDjj7QhxM7mceZEx/Mtbd7EPCA2RwOjtds3c9yym X-Google-Smtp-Source: APXvYqzCl9X90rTPSpid5e1TrwiwkC9whzO3MdKpYcXM3dDx/pAuOXKladKQvdil0u7Ny6eyyEoC/iWv/pMKJs9+etc= X-Received: by 2002:a81:ab42:: with SMTP id d2mr7744356ywk.64.1570723312214; Thu, 10 Oct 2019 09:01:52 -0700 (PDT) MIME-Version: 1.0 References: <83sgo1rpbx.fsf@gnu.org> <831rvksksa.fsf@gnu.org> In-Reply-To: From: Carlos Pita Date: Thu, 10 Oct 2019 13:01:41 -0300 Message-ID: Subject: Re: bug#37689: Fringe pixmaps, widgets, etc. look ridiculously tiny in hidpi screen To: Eli Zaretskii Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 37689 Cc: Robert Pluim , 37689@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) > For example, if scaling factor > 1.5 make everything x2, if > 2.5 then > x3, etc. It seems quite simple to achieve those integer scalings. Or maybe, safer: 1. >= 3 then 3x 2. >= 2 then 2x 3. Otherwise 1x This way you are sure that the icon will fit the fringe. And anyway intermediate resolutions won't usually be 1.9x but 1.5x instead (although experimental fractional scaling configuration dialogs currently offer 1.25x and 1.75x). From debbugs-submit-bounces@debbugs.gnu.org Thu Oct 10 13:36:04 2019 Received: (at 37689) by debbugs.gnu.org; 10 Oct 2019 17:36:04 +0000 Received: from localhost ([127.0.0.1]:57064 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iIcM8-0006Zc-IG for submit@debbugs.gnu.org; Thu, 10 Oct 2019 13:36:04 -0400 Received: from eggs.gnu.org ([209.51.188.92]:41919) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iIcM7-0006Z9-Tm for 37689@debbugs.gnu.org; Thu, 10 Oct 2019 13:36:04 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:43656) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1iIcM2-0001CU-Ob; Thu, 10 Oct 2019 13:35:58 -0400 Received: from [176.228.60.248] (port=2129 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1iIcM2-0003Lm-6x; Thu, 10 Oct 2019 13:35:58 -0400 Date: Thu, 10 Oct 2019 20:35:45 +0300 Message-Id: <83v9swqz9q.fsf@gnu.org> From: Eli Zaretskii To: Carlos Pita In-reply-to: (message from Carlos Pita on Thu, 10 Oct 2019 12:51:57 -0300) Subject: Re: bug#37689: Fringe pixmaps, widgets, etc. look ridiculously tiny in hidpi screen References: <83sgo1rpbx.fsf@gnu.org> <831rvksksa.fsf@gnu.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 37689 Cc: rpluim@gmail.com, 37689@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Carlos Pita > Date: Thu, 10 Oct 2019 12:51:57 -0300 > Cc: Robert Pluim , 37689@debbugs.gnu.org > > At least for the fringe part, what do you think of modifying > define-fringe-bitmap to take into account scaling factor? Wouldn't that make the pixels show? From debbugs-submit-bounces@debbugs.gnu.org Thu Oct 10 13:40:06 2019 Received: (at 37689) by debbugs.gnu.org; 10 Oct 2019 17:40:06 +0000 Received: from localhost ([127.0.0.1]:57068 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iIcQ2-0006fr-3H for submit@debbugs.gnu.org; Thu, 10 Oct 2019 13:40:06 -0400 Received: from mail-yw1-f47.google.com ([209.85.161.47]:34132) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iIcQ1-0006fK-0P for 37689@debbugs.gnu.org; Thu, 10 Oct 2019 13:40:05 -0400 Received: by mail-yw1-f47.google.com with SMTP id d192so2482879ywa.1 for <37689@debbugs.gnu.org>; Thu, 10 Oct 2019 10:40:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=XCHQ8CwicO28DEllDMxa/4WhOScyLutcExz/gDymtOc=; b=cGgzOQhqhgN3u0iE7AVOBcMYmKiUYpbBWGaNHUMt7FPdBO4k10fg3sdnNIA2niIv4Y ofov4pYhlcKcv0vNx/Xt1+Ja6uDXaYgfGRnkq7Cs72xEMDqJ+KMPAV4zEo+JruXLZCyU bM/KRXxG6ZfgbhuTPpdQPS1ZHMS96tarjTDnbe6F+EEKQq9NxZjKXh55OvR4YEkQjFym gsw20h6X2N+nMaAPoN5lx1D4bdbSbh9IJeh9wV54IQCW+UbESC/h4CuOsj6IjNkYxBbt +Gfr5HgdpzFjU65ToPNDVq3l9f3r3iv86BQElxmHqRsim++GM1A7wTyXNbZf1vwRXHlQ z1AQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=XCHQ8CwicO28DEllDMxa/4WhOScyLutcExz/gDymtOc=; b=VfHFyBk/Cly4OKrwnlgz8/BsNMHKp1/AZL2RUJqq5E42dYSosbbARJWDkClUrUEKtm 8IrZYNLv6RN30qW5nffuxUYU9AQZI1kIEeQPPoFpujZb8ppKerupzIMRpIhev4V7MWgV meqwV+hnrh5kHH/pWWKvWlmdcSZI5nUDTD0O6tLUqDCqNq21LuvbmJMcdyIICeOJv1hr LeNho8hF871+32uXi9mjhHMLlUCQcV3D8ijmxiF/nPqL7d9BAEZIMPV2J/wXp71Ctm93 LCvFhBWB2B3mw5QN7j66GGpLGktHbx5ytn/wq+999ru5IWg97csj2Qo7OOftNxGK7W2F uypg== X-Gm-Message-State: APjAAAXYqIUpaGC77jYGrrVK23/SCSM+ZtzUdypQLbYgJ3dOitRyAFZq N3KNuD/PACHuXyaic6SaiOfCZMYkVHVZ+YUzkAE= X-Google-Smtp-Source: APXvYqxIIHyvFLB1LkSAet3AlZYOArqB4S4wMegaQu/+RV37N1CVEikUdNR5QyAH9Fvsl1kBOmimimIlqqSbCAfTdHQ= X-Received: by 2002:a81:70d6:: with SMTP id l205mr8584722ywc.297.1570729199340; Thu, 10 Oct 2019 10:39:59 -0700 (PDT) MIME-Version: 1.0 References: <83sgo1rpbx.fsf@gnu.org> <831rvksksa.fsf@gnu.org> <83v9swqz9q.fsf@gnu.org> In-Reply-To: <83v9swqz9q.fsf@gnu.org> From: Carlos Pita Date: Thu, 10 Oct 2019 14:39:47 -0300 Message-ID: Subject: Re: bug#37689: Fringe pixmaps, widgets, etc. look ridiculously tiny in hidpi screen To: Eli Zaretskii Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 37689 Cc: Robert Pluim , 37689@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) > Wouldn't that make the pixels show? Not more than in a low-dpi screen at 1x, since 4 pixels in a retina like screen are more or less the same size than 1 "traditional" pixel. From debbugs-submit-bounces@debbugs.gnu.org Thu Oct 10 23:27:17 2019 Received: (at 37689) by debbugs.gnu.org; 11 Oct 2019 03:27:17 +0000 Received: from localhost ([127.0.0.1]:57425 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iIlaG-0004Al-Ot for submit@debbugs.gnu.org; Thu, 10 Oct 2019 23:27:16 -0400 Received: from mail-yw1-f51.google.com ([209.85.161.51]:45167) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iIlaF-0004AS-0J for 37689@debbugs.gnu.org; Thu, 10 Oct 2019 23:27:15 -0400 Received: by mail-yw1-f51.google.com with SMTP id x65so2970135ywf.12 for <37689@debbugs.gnu.org>; Thu, 10 Oct 2019 20:27:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=q43lNhVKMgxkJCetSEgXcgg6Xw6mijzqtXUnNUYrKCM=; b=FDOPygpw+qqOxfEMkJa4EQEAQT9lrPXsZ2ikh5SZY8eTthXi2VMoomQ5L1DcsbtdWs dmzopdlUD75NolBYqpstQl1Rr881f5U4duXkGsYZrjBV4lGEcr7XayKC5bA8cufcvAcE lyFFUsYfw3hqjqbkDvaifdt21ANRMySOYtxZyyQVN+MxgMhecBKP5zBptsD4C/H5lrgG Apgol+pwE+VcjOWGEEUUkgrLvLGm2zfY5mRE6aNqVg9vOl19/gz6O+tsaEYYp3DdRrcw kwpJMEgOj7oKMY9USQ9sAWQdvWy66bfmQk1wtJVQqv7XNQ44wkkGl1wgJ0LLJOdRTwJ9 UtSw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=q43lNhVKMgxkJCetSEgXcgg6Xw6mijzqtXUnNUYrKCM=; b=pzTJ9KEZbkTNW6rieoWQ1mVmZJcl1h+fsR52iJso2pcHLzhKNuw79xRt2MJfAtHnGU RKKBBZe+rsEBS/U3MXQ50TfeXlOvBfkHiZXmomUex5297h+9/HkvRMCAelnWsNF8JQ01 Z0USOPCbqsj3+2hU0epsz+fEMDpMoCscXy8ptu1+bbMqrh8vqfLvY7D6/a2H01FDzgtZ Rk9NsjX+X+MCd8tKmFH3g7ksTi8cZglWs51H08j2rOD+oxifao5TeKi2eLL8tnVqtqN+ NsZi/dDrXqBZ+zavQPbr5HQfHOX9ABvc+zWyav4pNnhGehSY3QgoJxByUgqJguN9rEQa DCmA== X-Gm-Message-State: APjAAAX8KREozDbHtsu4s8rrdS0cDLdH7RusqK2y8OksODZ8iBiEJe2J Y/ZcgXA9Tu2m4qju5jNIkaoo0pI5F4o+2dKYCYE= X-Google-Smtp-Source: APXvYqwwxkUWmEzkJBaq/3bYdsERGdHwj38e/BJtaf1TY7a0ZzR4Q8lSAUCWow0lSJEGs+gPVetSeT2wMfEkn178afw= X-Received: by 2002:a81:996:: with SMTP id 144mr807958ywj.57.1570764429131; Thu, 10 Oct 2019 20:27:09 -0700 (PDT) MIME-Version: 1.0 References: <83sgo1rpbx.fsf@gnu.org> <831rvksksa.fsf@gnu.org> <83v9swqz9q.fsf@gnu.org> In-Reply-To: From: Carlos Pita Date: Fri, 11 Oct 2019 00:26:57 -0300 Message-ID: Subject: Re: bug#37689: Fringe pixmaps, widgets, etc. look ridiculously tiny in hidpi screen To: Eli Zaretskii Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 37689 Cc: Robert Pluim , 37689@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) I tried to hack around this problem with an advice: (defun my-define-fringe-bitmap-advice (fun bitmap bits &optional height width align) (when (<= (or width 8) 8) (setq width (* (or width 8) 2) height (when height (* height 2)) bits (vconcat (mapcan (lambda (in) (let ((out 0)) (dotimes (i 8 (list out out)) (setq out (+ out (lsh (* (logand in 1) 3) (* i 2))) in (/ in 2))))) bits)))) (funcall fun bitmap bits height width align)) (advice-add #'define-fringe-bitmap :around #'my-define-fringe-bitmap-advice) It works well but too late I realized that many pixmaps are built-in and don't go through define-fringe-bitmap at all :(. Maybe it could still be useful as a prototype. From debbugs-submit-bounces@debbugs.gnu.org Thu Oct 10 23:48:20 2019 Received: (at 37689) by debbugs.gnu.org; 11 Oct 2019 03:48:20 +0000 Received: from localhost ([127.0.0.1]:57430 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iIlue-0004r2-KU for submit@debbugs.gnu.org; Thu, 10 Oct 2019 23:48:20 -0400 Received: from mail-yb1-f170.google.com ([209.85.219.170]:42356) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iIlud-0004qh-3b for 37689@debbugs.gnu.org; Thu, 10 Oct 2019 23:48:19 -0400 Received: by mail-yb1-f170.google.com with SMTP id 4so2664712ybq.9 for <37689@debbugs.gnu.org>; Thu, 10 Oct 2019 20:48:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=vpcxSQUYSLCb2BQjmBQO7gWwXngohQ0k8cOBTcF6fMQ=; b=cmF4Mjpd2n7FojL53M0rfPD7zkEYbKNL3GlXn/23rV/PuXqQydL6SCuOx7vaeTZyce 5XvxaA4v65cGr62UNJkjo3booxVMEUTrBSOLe+gMHTxUV5Rn45nv13p5cMfb/yzp3BRy 2tcsDF+qsLHuKK9nM3eCWcrlSZU1FEVIq6sq//lKARzN8rCn6LaxS7Zz7bA99D7SnBtt jo37jLVCU8If4iMgQbkJbLZEXo/fczgH61P4V9px7dE26HJwDF4U6Yt+gQ3PlWzEefaE J9b9dkyhUhe5SV2WBbyoeagdDGISCSv2HbdSxj95OtaGCzRtYVbpaECqZwtVEpjE9RXY /JXw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=vpcxSQUYSLCb2BQjmBQO7gWwXngohQ0k8cOBTcF6fMQ=; b=U/nikt66fDx6QPdB4gWDYKdlSpvRgGt2yibUKCeP80w6pcut47z6omgHx7GvJXVQI4 NzaFcsuwI6tY2usU5vY56VFz00iICmpFAYKNllhUIh/mnm9iI9csi5grjpIXRjV0JjfO nAYNLMJKW81MQTXWfbbfUK59K3vi5wtannVMAoI8R7EQk5FYjKUVfZRJ+LcoZPirIrFa KpZfsUx6dCaPZVAKIuWPveEG9goR19CL8/rt+Ryq03V6QYP6vrvLt6bRrCBk/gKg8mIU XzgEDO+7jdSnjjN5eBEadHvtYKfjqiPT98sPkG3oCb/Prb8JSgiSBZDmHORzDs22Vsa9 wL7Q== X-Gm-Message-State: APjAAAU2iBDZGX0Sq+Ht28c/3evpZJBcebKabhMeIEPOncru3oQTMnzT cmMzkaRobKEPKOsSxrDaYN6s4IBLI48WiTiOVDk= X-Google-Smtp-Source: APXvYqx60j/qLIP0IpEhMTvKFWftwDdoT/pbK2J6xKSzmZ8ktZA34RNF1c9zDBiuPBeVzOrDCWAucbiDa41NpRzB4HA= X-Received: by 2002:a25:9947:: with SMTP id n7mr8434187ybo.263.1570765693527; Thu, 10 Oct 2019 20:48:13 -0700 (PDT) MIME-Version: 1.0 References: <83sgo1rpbx.fsf@gnu.org> <831rvksksa.fsf@gnu.org> <83v9swqz9q.fsf@gnu.org> In-Reply-To: From: Carlos Pita Date: Fri, 11 Oct 2019 00:48:02 -0300 Message-ID: Subject: Re: bug#37689: Fringe pixmaps, widgets, etc. look ridiculously tiny in hidpi screen To: Eli Zaretskii Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 37689 Cc: Robert Pluim , 37689@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) If you accept to recompute the pixmap on-the-fly each time it's demanded, then fringe.c: static struct fringe_bitmap *get_fringe_bitmap_data (int bn) seems like a good place to do the transformation above. In order to avoid rescaling it each time, the pixmap structure could contain an extra field with its scaling factor (initially 1) that is updated after the first rescaling so that get_fringe_bitmap_data knows (by comparing this number to the system scaling factor) that it's not necessary to rescale the pixmap afterwards. From debbugs-submit-bounces@debbugs.gnu.org Fri Oct 11 20:51:22 2019 Received: (at 37689) by debbugs.gnu.org; 12 Oct 2019 00:51:22 +0000 Received: from localhost ([127.0.0.1]:60513 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iJ5cw-0008Vj-5E for submit@debbugs.gnu.org; Fri, 11 Oct 2019 20:51:22 -0400 Received: from mail-yw1-f41.google.com ([209.85.161.41]:45685) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iJ5ct-0008VU-K1 for 37689@debbugs.gnu.org; Fri, 11 Oct 2019 20:51:20 -0400 Received: by mail-yw1-f41.google.com with SMTP id x65so4109319ywf.12 for <37689@debbugs.gnu.org>; Fri, 11 Oct 2019 17:51:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=z+q1o/TFzciKtU1WsXpPKIklq9THjt6AM0TRaIZNgNo=; b=QkdweZZ0sJNc/kna+xVwLrFJTZ3c4vqoh1SmX93lZZ0znSPRyvjv/wekwtJetMA5O2 hbrFrTzTq2c/iE3B4TRs49syulCZ8JXTsC7RPzOGa2CpTWVmq7PwPgOZtyYMyMvgC9xk 34FVgkIyqJSuJGSoO5ibkFfqwzThl5z21kwJhG2bnX0nwc97e2XGzAbCaGzhBZ7YReZq f/ywWTe5vEhoXLGYp8itscJxZ7XR4Qnj5XdkXh+KfAgYnCtuPs9rqZPy95Fen8yM1Q+w TsS/cpz9CEd9dJUyAm1f9o1aLaVP++fiuLBRcgo9UcP3wPqyBLLLiZPZvIFHd1XirS1f ySew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=z+q1o/TFzciKtU1WsXpPKIklq9THjt6AM0TRaIZNgNo=; b=rxES5lxM2aDnJMqXpABR0JWtJHh8NBvXncLTHPT/P5ZATognLC36zjvvjr4qvZ7CXw qeiT/601YEiFyvtHi5pgaQ2K7J0c+O3V6KrlCGMxzvhA0JbZQXB0xeyp4JkLNUXeyiDQ uRELh/4040ibb+BOyvPCfC3/1U6yYSrGKlhdf0FyNNdc81dz6iaHd6UyY+xnQThRTMjN e5k3SMf2/Q1cBWTjyF82KBhxGZ7ODPnCgbAa5oOAN1XNFrS7nFISzzJeIXBrrXxOCKap ZkwmzTjs7BidIJRMUk5XSom98DPJl7AKqDzytpbDwgH9De7SLFUnXUtyTGRXSqe2NlB9 yY6A== X-Gm-Message-State: APjAAAWwMs1m2DJdONdgwVZMVOM4EVe+acAgFRKHnSKE3REMNvO4wBXe ybqw8nGhKvaxOi1zdHe7HVTr9spTWxVIXU0cu0U= X-Google-Smtp-Source: APXvYqynipJkgSUpeji77EntaBbEt4XZsahw08XWXIM2aX1yjxGmPk22Ru8jE+0jHFr4Y5begbsToOknl7n5qadQ61M= X-Received: by 2002:a81:70d6:: with SMTP id l205mr4867417ywc.297.1570841473672; Fri, 11 Oct 2019 17:51:13 -0700 (PDT) MIME-Version: 1.0 References: <83sgo1rpbx.fsf@gnu.org> <831rvksksa.fsf@gnu.org> <83v9swqz9q.fsf@gnu.org> In-Reply-To: From: Carlos Pita Date: Fri, 11 Oct 2019 21:51:02 -0300 Message-ID: Subject: Re: bug#37689: Fringe pixmaps, widgets, etc. look ridiculously tiny in hidpi screen To: Eli Zaretskii Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 37689 Cc: Robert Pluim , 37689@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) > If you accept to recompute the pixmap on-the-fly each time I've been thinking that in a multi-monitor / multi-dpi world this (though maybe coupled with some caching strategy, as I proposed in my previous email) might be the only sensible approach. If you agree I might try implementing something like what my advice above does, but inside get_fringe_bitmap_data, with caching and generalizing it to more scaling factors; nevertheless, I would be keeping the integer scaling simplification since fractional scaling, specially for such tiny bitmaps, would require a lot of handcrafting. From debbugs-submit-bounces@debbugs.gnu.org Sat Oct 12 03:28:42 2019 Received: (at 37689) by debbugs.gnu.org; 12 Oct 2019 07:28:42 +0000 Received: from localhost ([127.0.0.1]:60670 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iJBpR-0001GU-Sn for submit@debbugs.gnu.org; Sat, 12 Oct 2019 03:28:42 -0400 Received: from eggs.gnu.org ([209.51.188.92]:41031) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iJBpQ-0001GH-BZ for 37689@debbugs.gnu.org; Sat, 12 Oct 2019 03:28:40 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:33825) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1iJBpL-00080I-7e; Sat, 12 Oct 2019 03:28:35 -0400 Received: from [176.228.60.248] (port=2245 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1iJBpK-0005Xg-C3; Sat, 12 Oct 2019 03:28:34 -0400 Date: Sat, 12 Oct 2019 10:28:25 +0300 Message-Id: <83k19ao21y.fsf@gnu.org> From: Eli Zaretskii To: Carlos Pita In-reply-to: (message from Carlos Pita on Fri, 11 Oct 2019 21:51:02 -0300) Subject: Re: bug#37689: Fringe pixmaps, widgets, etc. look ridiculously tiny in hidpi screen References: <83sgo1rpbx.fsf@gnu.org> <831rvksksa.fsf@gnu.org> <83v9swqz9q.fsf@gnu.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 37689 Cc: rpluim@gmail.com, 37689@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Carlos Pita > Date: Fri, 11 Oct 2019 21:51:02 -0300 > Cc: Robert Pluim , 37689@debbugs.gnu.org > > If you agree I might try implementing something like what my advice > above does, but inside get_fringe_bitmap_data, with caching and > generalizing it to more scaling factors; nevertheless, I would be > keeping the integer scaling simplification since fractional scaling, > specially for such tiny bitmaps, would require a lot of handcrafting. Fine with me, thanks. From debbugs-submit-bounces@debbugs.gnu.org Sat Oct 12 03:57:05 2019 Received: (at 37689) by debbugs.gnu.org; 12 Oct 2019 07:57:05 +0000 Received: from localhost ([127.0.0.1]:60682 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iJCGu-0001v5-UX for submit@debbugs.gnu.org; Sat, 12 Oct 2019 03:57:05 -0400 Received: from mail-yb1-f172.google.com ([209.85.219.172]:40636) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iJCGs-0001ub-VH for 37689@debbugs.gnu.org; Sat, 12 Oct 2019 03:57:03 -0400 Received: by mail-yb1-f172.google.com with SMTP id s7so3861484ybq.7 for <37689@debbugs.gnu.org>; Sat, 12 Oct 2019 00:57:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=dKgag/P+DiIuV1BRXpYDRX51+NNUcBzl/M7aAExmXXs=; b=PHfypJ0pkdhIf0EtcgS34WGtcfbGUUUFHQ7+g4+WN8VJjde2JewdWRYke2F5+0dxSt 9YHmP9qPBORg0fxqTFs7F/s652PD18uQH+BHIdbbx6vmhjXlHXVnTwXjMlDa63vDyPhg vfCbnOHIc4bhmofEaGERX6MT3Wb/g82txGH8an9zGQIegnY53R+Nftga7jc9aP5/F2gb 8CEZ+VHz26q+lL5swhWp/SLZUg78ATDX2GJmWjeL8IXpIlVGuzTncoUoFiJ1noFUpBEV WBn7OCaRnLmfpzeJFxSSVHcZ0rkeQZLTXWApXsXoMJTQ0wRzBKZYusFp1Tz5Uzr83j2U pOjg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=dKgag/P+DiIuV1BRXpYDRX51+NNUcBzl/M7aAExmXXs=; b=PQBNEW16Gb1tduDane/xT1ryRLbw2l45zuC6/yvMDPnkcTHON1uagR/Pi8x/2ZUNe+ wz/5OLpXkgf994Z/hJftBQCbzWmh65uvwWQBWEHnoBnm3Vow1AoA//GOSV7X18p/auB9 JaF9za0Z9Acso4SPHZldCFOSru9GnFVCOfjjm9p6miNpeTLiFmQxNAGoquzylT/rVFc9 D9Zv9yl8RXfdx5GBnmkQXV7ow8DjToa/FGBZoIHc2ABmDHkpjbsZYwTgGXzJm4W130oH 3r1oHOwpXnMG/IO+YLQSL+x7J4gYXRzTW1WWa9vnoXc57dYngnHWzNbdEly1uLxyIjPy Z7HA== X-Gm-Message-State: APjAAAWTsbxMi6phErf9dMlMbOBfYd5oKvImC86eNCiV38Ead/ZcsTpY DuxGQuwhbAhMvNdjg6WIwmFgKumeOXso9g3AoNg= X-Google-Smtp-Source: APXvYqx1guK2SfBnQro09lujEHhFrQZIiaIlbLvL8XsBcIPdLVshXS2KIgGlk+TNuCk2T6Rxvi0eU+hsud/wtqCgwOk= X-Received: by 2002:a25:e7cf:: with SMTP id e198mr11776408ybh.334.1570867016793; Sat, 12 Oct 2019 00:56:56 -0700 (PDT) MIME-Version: 1.0 References: <83sgo1rpbx.fsf@gnu.org> <831rvksksa.fsf@gnu.org> <83v9swqz9q.fsf@gnu.org> <83k19ao21y.fsf@gnu.org> In-Reply-To: <83k19ao21y.fsf@gnu.org> From: Carlos Pita Date: Sat, 12 Oct 2019 04:56:45 -0300 Message-ID: Subject: Re: bug#37689: Fringe pixmaps, widgets, etc. look ridiculously tiny in hidpi screen To: Eli Zaretskii Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 37689 Cc: Robert Pluim , 37689@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Hi Eli, after debugging the C part of the code I've changed my mind regarding what I'd said. First, I realized that the default build wasn't using cairo, so I changed that. Now I'm exploring how to change scale in xterm.c/x_cr_draw_image, I've tried changing the scale of the cairo context, of the surface and of the pattern, yet to no avail. I guess I will have to sit down and read about how all these parts interact instead of my current hit-and-miss approach. But maybe this will fix other problems, for example those small widgets in my screenshots. From debbugs-submit-bounces@debbugs.gnu.org Sat Oct 12 04:27:15 2019 Received: (at 37689) by debbugs.gnu.org; 12 Oct 2019 08:27:15 +0000 Received: from localhost ([127.0.0.1]:60708 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iJCk6-0002dG-Tm for submit@debbugs.gnu.org; Sat, 12 Oct 2019 04:27:15 -0400 Received: from mail-yw1-f41.google.com ([209.85.161.41]:43057) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iJCk4-0002d2-5M for 37689@debbugs.gnu.org; Sat, 12 Oct 2019 04:27:12 -0400 Received: by mail-yw1-f41.google.com with SMTP id q7so4341851ywe.10 for <37689@debbugs.gnu.org>; Sat, 12 Oct 2019 01:27:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=qcDtp7wZC0kiGwnFKfkDcLduKrgf42l5MjYXtgC08j0=; b=bKlQn+eZdkljJ4EEeg1pMqX1xkn6sH2w8V5o7jq07js5yxy6h+4hTZRkZy+Mf7nT6p g08BSGBjE/QwuBOe3eqrX5tDPV9XcQ6fvxP0qJyo+nag6wchTKWdguhCZjG6cVfL8XaF o5RlIrgW5yJsJ6xVSIREvXZQAcE+GJ7Nt7Gplrr6FLaANXeCykiUYt3JUioaA8uV6CXn YL3HJYugp5w5Tw+q3B2wPC9JXVWOQj2bVHheH/luW4ViUrohmeZCGmrjaQRQ8XtyJUUo +uueksbLt8fyJRYxB2eF7eLPCdKYFy2mmajrnbF7NEkOZ8iBudz9eaIrSWLxlsOGy24l jFaQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=qcDtp7wZC0kiGwnFKfkDcLduKrgf42l5MjYXtgC08j0=; b=TfhCs/8jTVwcyxofGHrEyqCy7/SnXMCZJYYMRG8gEslQzWb5M9upikYmKvNy1MQzA/ ARD6DX71EhBg1/YSn5k+hjk528xJwnqxd6Xu1WXpZOljhRK6df1vQrX9p0kBQbrTymNi o99cPUfPchrSlx2nINF0xhS06jEt3lm2A1qmmiv5fqCYMhivrqzHQiuidG9dScaGM1cN DtUoTWDbAjHCvZRMtCrVCRf2hQS7O4xpY0rNIoWFJ/hZz6qoOt96mfyKEhvkfpspHUJs 6+WEx7Lx4/VMt6A8R3Zi9K8+RZ1rQU5ZFCcfe2u4KzlAfTKtoESNm4Mf8kdhHoWTQUir faZw== X-Gm-Message-State: APjAAAUyYknRg6VCqJ4nbz7ky2X6jUpjP8+WpyaoOTxeCYUlgU2ZS6zs PJoT5Az2MJG0k5Sws5j+A+izi5kbrdtl3btjym4= X-Google-Smtp-Source: APXvYqwY2VBrLS/6UixrXc9eOL93luaDcZot4G5BXRI5TxFQJFJCUjBwcWZsnjg8NHWeK2qcliGpv/hMNBlFYEew/Bs= X-Received: by 2002:a81:70d6:: with SMTP id l205mr5780540ywc.297.1570868825919; Sat, 12 Oct 2019 01:27:05 -0700 (PDT) MIME-Version: 1.0 References: <83sgo1rpbx.fsf@gnu.org> <831rvksksa.fsf@gnu.org> <83v9swqz9q.fsf@gnu.org> <83k19ao21y.fsf@gnu.org> In-Reply-To: From: Carlos Pita Date: Sat, 12 Oct 2019 05:26:54 -0300 Message-ID: Subject: Re: bug#37689: Fringe pixmaps, widgets, etc. look ridiculously tiny in hidpi screen To: Eli Zaretskii Content-Type: multipart/mixed; boundary="0000000000005c084c0594b266ae" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 37689 Cc: Robert Pluim , 37689@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --0000000000005c084c0594b266ae Content-Type: text/plain; charset="UTF-8" Ok, I have arrived at something, I still have to understand the details but many things are correctly scaled, including widget images. Icons in the fringe seems to be ok but yet: 1. So checkboxes are weirdly clipped, even if correctly scaled. 2. Not sure about this, but I believe there is a slight vertical misalignment. 3. Default fringe sizes are too small for hidpi screen, they should change according to screen dpi. I'm attaching a diff so that you can have an idea of what I am changing and probably improve on that. --0000000000005c084c0594b266ae Content-Type: text/x-patch; charset="US-ASCII"; name="scale.diff" Content-Disposition: attachment; filename="scale.diff" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_k1nang0u0 ZGlmZiAtLWdpdCBhL3NyYy94dGVybS5jIGIvc3JjL3h0ZXJtLmMKaW5kZXggYjQ5YzlkNi4uYzA3 YmNlZCAxMDA2NDQKLS0tIGEvc3JjL3h0ZXJtLmMKKysrIGIvc3JjL3h0ZXJtLmMKQEAgLTYwOCw3 ICs2MDgsOSBAQCB4X2NyX2RyYXdfaW1hZ2UgKHN0cnVjdCBmcmFtZSAqZiwgR0MgZ2MsIGNhaXJv X3BhdHRlcm5fdCAqaW1hZ2UsCiAJCSBpbnQgZGVzdF94LCBpbnQgZGVzdF95LCBib29sIG92ZXJs YXlfcCkKIHsKICAgY2Fpcm9fdCAqY3IgPSB4X2JlZ2luX2NyX2NsaXAgKGYsIGdjKTsKLQorICBp bnQgc2NhbGUgPSB4Z19nZXRfc2NhbGUoZik7CisgIHdpZHRoICo9IHNjYWxlOworICBoZWlnaHQg Kj0gc2NhbGU7CiAgIGlmIChvdmVybGF5X3ApCiAgICAgY2Fpcm9fcmVjdGFuZ2xlIChjciwgZGVz dF94LCBkZXN0X3ksIHdpZHRoLCBoZWlnaHQpOwogICBlbHNlCkBAIC02MjIsNiArNjI0LDcgQEAg eF9jcl9kcmF3X2ltYWdlIChzdHJ1Y3QgZnJhbWUgKmYsIEdDIGdjLCBjYWlyb19wYXR0ZXJuX3Qg KmltYWdlLAogCiAgIGNhaXJvX3N1cmZhY2VfdCAqc3VyZmFjZTsKICAgY2Fpcm9fcGF0dGVybl9n ZXRfc3VyZmFjZSAoaW1hZ2UsICZzdXJmYWNlKTsKKyAgY2Fpcm9fc3VyZmFjZV9zZXRfZGV2aWNl X3NjYWxlIChzdXJmYWNlLCAxLiAvIHNjYWxlLCAxLiAvIHNjYWxlKTsKICAgY2Fpcm9fZm9ybWF0 X3QgZm9ybWF0ID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZm9ybWF0IChzdXJmYWNlKTsKICAg aWYgKGZvcm1hdCAhPSBDQUlST19GT1JNQVRfQTggJiYgZm9ybWF0ICE9IENBSVJPX0ZPUk1BVF9B MSkKICAgICB7Cg== --0000000000005c084c0594b266ae Content-Type: image/png; name="Screenshot from 2019-10-12 05-25-09.png" Content-Disposition: attachment; filename="Screenshot from 2019-10-12 05-25-09.png" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_k1naq97p1 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 D7ROpys3Xgf3AAAAAElFTkSuQmCC --0000000000005c084c0594b266ae Content-Type: image/png; name="Screenshot from 2019-10-12 05-26-09.png" Content-Disposition: attachment; filename="Screenshot from 2019-10-12 05-26-09.png" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_k1naq97z2 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 --0000000000005c084c0594b266ae-- From debbugs-submit-bounces@debbugs.gnu.org Sun Oct 13 20:40:33 2019 Received: (at 37689) by debbugs.gnu.org; 14 Oct 2019 00:40:33 +0000 Received: from localhost ([127.0.0.1]:37333 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iJoPZ-0005BX-9x for submit@debbugs.gnu.org; Sun, 13 Oct 2019 20:40:33 -0400 Received: from mail-yw1-f67.google.com ([209.85.161.67]:41473) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iJoPX-0005B5-Q6 for 37689@debbugs.gnu.org; Sun, 13 Oct 2019 20:40:32 -0400 Received: by mail-yw1-f67.google.com with SMTP id 129so5562563ywb.8 for <37689@debbugs.gnu.org>; Sun, 13 Oct 2019 17:40:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=98TbjnFPKE9uodcRUo7d+nBU0kpxCBJQ6OMW/2zsgek=; b=eL+ZREsNVoDIWOtQwCBcsDzwwCHXVzPwI19N8movyWV5WisRMrNXZHNX01dzbK7NTN 9V7oFhqwZTzpArCZ2/ttJp/ZcrvqmkHWiqWwb/MJI90XEORQVVywrSZVqIz7TQciUehB cYfODf26tXnK5zxKuqYuiT5186MzAuzlhBuY6btdlnJnXLmwjkcKqzC5ZkfnH6w3orh5 29Pex6UsPsQXp5NVnb6uIMyuU2jWazoBfIejekEX/cvisHLyMb0YQTLtoaK18cry6R3C tpH64GN3hVK2uFhl0oJPZ/Q19fdazaNmoVBnjncEsCYHxAh6xfVnlLRIv6551FZmblrl DWRg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=98TbjnFPKE9uodcRUo7d+nBU0kpxCBJQ6OMW/2zsgek=; b=SUPwQvIwv3E1Xks3AMq/zyVRgFy/epOEBpv3pB+VWWmKT2GOFRQYxXL6q7uHK2bL44 6dcxP9dHgmhq+Xk48u3jiKj6u09Xb5L/ZfZUWr4A9kRIyiFnkjrwy4vlME+kP5NDNp17 QcmbK+0xW9i/l38WRyPfuMONZAkPm3UAoLQK7Zu5W2Sud0Tjb7r8VmOJC7jd3fqUfefC vV9r4/cueSsQDG0EqJOExE6S+ocpnfLMDd0OTeLaqaDJoc7aki45cLxlfg1v23I7j6ny eR0hVwwk+37EYfoBUaZut9Tt1zWFAjBCRBpU3VZkhAEEIe+GQT1t7OUrhzFJFp2St4MA q2iw== X-Gm-Message-State: APjAAAUfItwR9Xj1Ueazl0/EJGieSDPAMD5y4KMaMOcnOZ1xAiLImcm7 4LaPZCwMlAlYgCL0CQ5rGXCzhKaa9pdR0b8VWhM= X-Google-Smtp-Source: APXvYqwNX4CxuIy30kW5w4qzY4hfMcCaDPm5RhWGKApzB28D03d2m/y3BciQmcqyiB59fdJkl8VMzW5gCqhuv7iF+MU= X-Received: by 2002:a81:996:: with SMTP id 144mr11691065ywj.57.1571013625957; Sun, 13 Oct 2019 17:40:25 -0700 (PDT) MIME-Version: 1.0 References: <83sgo1rpbx.fsf@gnu.org> <831rvksksa.fsf@gnu.org> <83v9swqz9q.fsf@gnu.org> <83k19ao21y.fsf@gnu.org> In-Reply-To: From: Carlos Pita Date: Sun, 13 Oct 2019 21:40:14 -0300 Message-ID: Subject: Re: bug#37689: Fringe pixmaps, widgets, etc. look ridiculously tiny in hidpi screen To: Eli Zaretskii Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 37689 Cc: Robert Pluim , 37689@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) 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 From debbugs-submit-bounces@debbugs.gnu.org Mon Oct 14 04:33:17 2019 Received: (at 37689) by debbugs.gnu.org; 14 Oct 2019 08:33:17 +0000 Received: from localhost ([127.0.0.1]:38095 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iJvn3-0006Rs-1X for submit@debbugs.gnu.org; Mon, 14 Oct 2019 04:33:17 -0400 Received: from eggs.gnu.org ([209.51.188.92]:45413) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iJvn0-0006Rc-1j for 37689@debbugs.gnu.org; Mon, 14 Oct 2019 04:33:14 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:48977) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1iJvmu-0007T1-Tw; Mon, 14 Oct 2019 04:33:08 -0400 Received: from [176.228.60.248] (port=3686 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1iJvmu-0005VF-3r; Mon, 14 Oct 2019 04:33:08 -0400 Date: Mon, 14 Oct 2019 11:33:02 +0300 Message-Id: <835zkrk9q9.fsf@gnu.org> From: Eli Zaretskii To: Carlos Pita In-reply-to: (message from Carlos Pita on Sun, 13 Oct 2019 21:40:14 -0300) Subject: Re: bug#37689: Fringe pixmaps, widgets, etc. look ridiculously tiny in hidpi screen References: <83sgo1rpbx.fsf@gnu.org> <831rvksksa.fsf@gnu.org> <83v9swqz9q.fsf@gnu.org> <83k19ao21y.fsf@gnu.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 37689 Cc: rpluim@gmail.com, 37689@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Carlos Pita > Date: Sun, 13 Oct 2019 21:40:14 -0300 > Cc: Robert Pluim , 37689@debbugs.gnu.org > > 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). Granted, I prefer the second approach. We should do as little code duplication as possible. I don't think individual backends do any scaling, but if some do, it should be easy to disable the scaling in our code for those backends. > 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. I'm not sure I understand how this is related to the issue at hand. Can you elaborate? Also, what exactly do you mean by "rendered"? In Emacs, there are generally 2 stages of displaying any "display element" (a character, an image, etc.): first, a backend-independent step of loading the display element, determining its metrics, and performing the display layout calculations derived from that; and then backend-dependent step of actually delivering the display element to the glass. Which one of those did you have in mind? Thanks. From debbugs-submit-bounces@debbugs.gnu.org Mon Oct 14 09:20:08 2019 Received: (at 37689) by debbugs.gnu.org; 14 Oct 2019 13:20:08 +0000 Received: from localhost ([127.0.0.1]:38332 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iK0Ge-0002eH-Eb for submit@debbugs.gnu.org; Mon, 14 Oct 2019 09:20:08 -0400 Received: from mail-wr1-f42.google.com ([209.85.221.42]:35746) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iK0Gc-0002de-UA for 37689@debbugs.gnu.org; Mon, 14 Oct 2019 09:20:07 -0400 Received: by mail-wr1-f42.google.com with SMTP id v8so19727128wrt.2 for <37689@debbugs.gnu.org>; Mon, 14 Oct 2019 06:20:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20161025; h=sender:date:from:to:cc:subject:message-id:references:mime-version :content-disposition:content-transfer-encoding:in-reply-to :user-agent; bh=KrdaXWiZuuOKpZRuTTGQcLIpBBYJ+HFq7eWcKrYg9/0=; b=V/V4alq2AXZpkXgKHgeWi9iDvW5cEE6mR24Wluf42tLI5zKq3xKGRVY9NzTWFcfoWX V29SbNHghMU1PrhiNpWofEeFLw66ySOrRSGcSaW1EROFpQatOvKWacK04xMU2jpprpla oHmK4tD+vHJvFlAc/nSGJeGKvvFXVkqIXL19gVLC4UAVaSTxC/Pkz4lwvyFCT1r3uhV5 z0eHxUJ/NR5ym/icY4SOlIXtx6YGuPhuFi8qF3j9YJeSVATcasfR3GY3bSAPsJFX6K+n jtnn+Xf9oElyM7UNLqJYCVgPpz08DkRjljT1cDPEkiBdK0KoHuHr5sUY9/PjGXE4Eb4/ Bscw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:date:from:to:cc:subject:message-id :references:mime-version:content-disposition :content-transfer-encoding:in-reply-to:user-agent; bh=KrdaXWiZuuOKpZRuTTGQcLIpBBYJ+HFq7eWcKrYg9/0=; b=QDCExS0Z+dZTL9BRjIZjx3x+qSJsEYzTJAS0YKAbzGYBYQU0GUa8YqaYivsTUA9bmm 5ZYWvBJaD0Gck+xybXck0UIn0mENP/Kg2pgd6PQysmqWWVOjZc/jau7FY2ldl17H6Fj1 uSvn3XhpjlRI2thllzQlchUtcIGviSh7c72VqYG+MRSIZ2nP2Hjbj6MOpM963gGvqmZm p4b+q7wxi/ZkPD40hQc/o7MWiezjH2UvLeUSrjaVU60xOPZTtSbEpAFSqqYphhW+tmhg y8P0pg7HbD6SbEn1IaELCqdvfX11KBSrIFBmXHJMxBo+oKGXPpJmQmCnXJGB8znY4Ykx WWjw== X-Gm-Message-State: APjAAAW0XJCjQr8RZ+u3rMpaS5VknMh5kyUAs0yz4WATDvWtci5358vL eb8mxWbRBEdvg77z71XvJuE= X-Google-Smtp-Source: APXvYqw5jknWR717gHoAZS0H7/bqanmjQgqwthXgFFjjQPHMEjC4AtHtStH/tNcwfLQpV0A30uUnVQ== X-Received: by 2002:adf:e646:: with SMTP id b6mr24885955wrn.373.1571059200850; Mon, 14 Oct 2019 06:20:00 -0700 (PDT) Received: from breton.holly.idiocy.org (ip6-2001-08b0-03f8-8129-d9f0-b530-d0ca-1914.holly.idiocy.org. [2001:8b0:3f8:8129:d9f0:b530:d0ca:1914]) by smtp.gmail.com with ESMTPSA id b22sm18341512wmj.36.2019.10.14.06.19.57 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 14 Oct 2019 06:19:57 -0700 (PDT) Date: Mon, 14 Oct 2019 14:19:55 +0100 From: Alan Third To: Eli Zaretskii Subject: Re: bug#37689: Fringe pixmaps, widgets, etc. look ridiculously tiny in hidpi screen Message-ID: <20191014131955.GC45622@breton.holly.idiocy.org> References: <83v9swqz9q.fsf@gnu.org> <83k19ao21y.fsf@gnu.org> <835zkrk9q9.fsf@gnu.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <835zkrk9q9.fsf@gnu.org> User-Agent: Mutt/1.12.0 (2019-05-25) X-Spam-Score: 0.3 (/) X-Debbugs-Envelope-To: 37689 Cc: Carlos Pita , rpluim@gmail.com, 37689@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.7 (/) On Mon, Oct 14, 2019 at 11:33:02AM +0300, Eli Zaretskii wrote: > > From: Carlos Pita > > Date: Sun, 13 Oct 2019 21:40:14 -0300 > > Cc: Robert Pluim , 37689@debbugs.gnu.org > > > > 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). > > Granted, I prefer the second approach. We should do as little code > duplication as possible. > > I don't think individual backends do any scaling, but if some do, it > should be easy to disable the scaling in our code for those backends. macOS automatically scales, so the UI code generally doesn’t need to know that it’s running on a hi‐DPI screen. The only exception is images where ideally the program presents an image that matches the physical DPI of the screen, but the rest of the UI code behaves as if the screen is half the DPI. I think it should be easy to make it do the right thing here. -- Alan Third From debbugs-submit-bounces@debbugs.gnu.org Mon Oct 14 10:00:40 2019 Received: (at 37689) by debbugs.gnu.org; 14 Oct 2019 14:00:40 +0000 Received: from localhost ([127.0.0.1]:41384 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iK0ts-0004Lh-4t for submit@debbugs.gnu.org; Mon, 14 Oct 2019 10:00:40 -0400 Received: from eggs.gnu.org ([209.51.188.92]:35408) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iK0tp-0004LT-CR for 37689@debbugs.gnu.org; Mon, 14 Oct 2019 10:00:38 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:53752) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1iK0tj-0007sB-Sj; Mon, 14 Oct 2019 10:00:31 -0400 Received: from [176.228.60.248] (port=1338 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1iK0ti-00023a-2Q; Mon, 14 Oct 2019 10:00:30 -0400 Date: Mon, 14 Oct 2019 17:00:22 +0300 Message-Id: <83v9srig09.fsf@gnu.org> From: Eli Zaretskii To: Alan Third In-reply-to: <20191014131955.GC45622@breton.holly.idiocy.org> (message from Alan Third on Mon, 14 Oct 2019 14:19:55 +0100) Subject: Re: bug#37689: Fringe pixmaps, widgets, etc. look ridiculously tiny in hidpi screen References: <83v9swqz9q.fsf@gnu.org> <83k19ao21y.fsf@gnu.org> <835zkrk9q9.fsf@gnu.org> <20191014131955.GC45622@breton.holly.idiocy.org> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 37689 Cc: carlosjosepita@gmail.com, rpluim@gmail.com, 37689@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Date: Mon, 14 Oct 2019 14:19:55 +0100 > From: Alan Third > Cc: Carlos Pita , rpluim@gmail.com, > 37689@debbugs.gnu.org > > macOS automatically scales, so the UI code generally doesn’t need to > know that it’s running on a hi‐DPI screen. Do the fringe bitmaps look good after scaling? From debbugs-submit-bounces@debbugs.gnu.org Mon Oct 14 10:37:26 2019 Received: (at 37689) by debbugs.gnu.org; 14 Oct 2019 14:37:26 +0000 Received: from localhost ([127.0.0.1]:41424 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iK1TS-0005Fy-B8 for submit@debbugs.gnu.org; Mon, 14 Oct 2019 10:37:26 -0400 Received: from mail-yw1-f68.google.com ([209.85.161.68]:39270) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iK1TO-0005Fj-Bg for 37689@debbugs.gnu.org; Mon, 14 Oct 2019 10:37:24 -0400 Received: by mail-yw1-f68.google.com with SMTP id n11so6175381ywn.6 for <37689@debbugs.gnu.org>; Mon, 14 Oct 2019 07:37:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=NGaDqS26v4YeBE8TX7381bXPY3O2B/nzlcCCxnhS2dU=; b=NLryj4spYD9dgpCVXI9tTPUflgFGR3Rt5IIPWwyQUvCUZDbsmB7TYJqyaOwcJ6AByq 2+Y/u/rsTLU6GMP5rg/8WECyw41SntIfSfejYIUcU7r/uGWQkVOMqDbtPJtfaG+poF7u eifBTul+FZHGQ7TLtfZJrHJz+1Zc/zltuzps+oVxLZkCxUViTR4L13c1SJJ6QscN/Vsj g4slZD+rzEk8hJbF8DV9qJ7lupIZYrG5W6DnpQ5u9GQVjGanwKarA05h8f7t70xz8RNB eVcFcUBb5DKDfNEw82Fs8S3ZAYFRHREDdTuYNY6U4u9tOVv6MZmCPsNSwZdZqgDJK8vh 3Esg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=NGaDqS26v4YeBE8TX7381bXPY3O2B/nzlcCCxnhS2dU=; b=RB0Xatm+u1KENwAGDv2ItYxKlh0lEzRdDDpLq7hvIvdufH7QKcg6LKZt7MJjmRSQMR I3TJoEIrd30O98399mSZXMq+6yqClhh73yZcFLYZWngNOP4YPJDELYcBgzA6Kd+l7iNX TD+t/FRTxqbHiOFzXii8dmPyTSkkXJQg6VvNaqkoEOCI0I9lAYfgTUT7ggtUzhOKFyRH IW9d5gO6mVRdOohTOe6M/io28iam+rADYBqsDQhSi2qBf0rbjX0Y9vo5EzV/xBUEyhPv 9797C2cJRx15JlT84u7Y26CgVERAQumhA+DrihAZW6L/HjKvGP1nca1zVMYzQqESPQPd mKdg== X-Gm-Message-State: APjAAAVTUaWQFAM0/EGmC6DFKjuWyG4NdEqPKJltTHV9qpNzYZoE1Z1h J5SwbJVqalF2PAIojls3poSYTAj00j1LikLYIrA= X-Google-Smtp-Source: APXvYqxYGH6qiXEN2WPXEVKMnSTIDF7x0sCa/W7JDWKjo6ArOxyL42ROZBSJ9+sVVPk1u0/J7ZO7DmO5FR0JdI3T9cw= X-Received: by 2002:a81:996:: with SMTP id 144mr13693716ywj.57.1571063836435; Mon, 14 Oct 2019 07:37:16 -0700 (PDT) MIME-Version: 1.0 References: <83v9swqz9q.fsf@gnu.org> <83k19ao21y.fsf@gnu.org> <835zkrk9q9.fsf@gnu.org> <20191014131955.GC45622@breton.holly.idiocy.org> In-Reply-To: <20191014131955.GC45622@breton.holly.idiocy.org> From: Carlos Pita Date: Mon, 14 Oct 2019 11:37:03 -0300 Message-ID: Subject: Re: bug#37689: Fringe pixmaps, widgets, etc. look ridiculously tiny in hidpi screen To: Alan Third Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 37689 Cc: Eli Zaretskii , Robert Pluim , 37689@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) > Granted, I prefer the second approach. We should do as little code duplication as possible. But we might be duplicating what backends already do. > I don't think individual backends do any scaling My understanding is that nowadays everything is up-scaled by the toolkit, except for fonts that use more sophisticated algorithms to fit the larger grid of available pixels. So an application using a modern toolkit should be mostly unaware of screen resolution. In fact, I've reported some hidpi bugs here and there and, in general, they were in places where the application did make some explicit geometry computation based on actual resolution. Or see how "supporting hidpi" translates in many cases to "port from gtk2 to gtk3". Or look at my screenshots above, do they look too big? Well, that's because they're taken from a hidpi screen; now, you might be in a lowdpi one and then it's obvious that they will look twice as big there; but even if you're in a hidpi screen I bet you probably will see them doubling the real thing, because many apps are unaware or ignore the original image resolution and just let the toolkit show it at 2x. There are plenty of questions (for both Linux and MacOS) around the web asking "why my screenshots look too big?", as a cursory google search will show, although I think the problem was eventually addressed in MacOS, perhaps in core apps or perhaps in general. That might be the reason why Alan says that "The only exception is images". > I think it should be easy to make it do the right thing here. If you had one single backend this would clearly simplify matters. But when you had to support three ones, it isn't that clear. Nevertheless, I think any approach that relies on emacs doing the scaling must be *carefully* evaluated, because it would mean solving a hard problem that even toolkits have a hard time to address. Consider for example having different frames in different monitors each one with its own dpi and geometry. Are you sure that all geometry/layout computations for a frame are done by emacs on-the-fly so as they adapt when the frame is moved from a monitor to another one? Is emacs doing all geometry calculations itself from the actual device geometry and resolution or is it most of a hodgepodge, with some things taken care by the backend and other ones by emacs itself? How clear-cut is the separation between the stages you mentioned (geometry calculation by emacs and actual "delivery to the glass" by the backend)? Is it that clear-cut for *all* supported backends? Now, that said, I don't think it's a bad idea for emacs to deal with these matters regardless of its backends (assuming it can force all backends to work at 1x), since it provides its own toolkit (and its own OS ;) ). What I would like to know is how close emacs is currently to one and to the other approach. > > 2. I'm clueless regarding were widgets (I mean checkboxes and things like that) are rendered. > I'm not sure I understand how this is related to the issue at hand. Can you elaborate? By widgets I was referring to the checkboxes, arrows and stuff that you can see, for example, in a customize-face buffer. When changing the scaling parameters in x_cr_render_image in emacs 26.3, fringe bitmaps were affected but those aforementioned widgets weren't. In emacs 27 they indeed were affected by the same changes in code, but they looked weirdly distorted and clipped, as you can see in my previous screenshot. So, in brief, I couldn't locate the C code path for the rendering of this stuff, specially in emacs 26.3. And by rendering I was indistinctly referring to both stages you describe. Best regards -- Carlos From debbugs-submit-bounces@debbugs.gnu.org Mon Oct 14 10:54:42 2019 Received: (at 37689) by debbugs.gnu.org; 14 Oct 2019 14:54:42 +0000 Received: from localhost ([127.0.0.1]:41441 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iK1kA-0005gh-6x for submit@debbugs.gnu.org; Mon, 14 Oct 2019 10:54:42 -0400 Received: from eggs.gnu.org ([209.51.188.92]:45119) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iK1k9-0005gT-47 for 37689@debbugs.gnu.org; Mon, 14 Oct 2019 10:54:41 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:54846) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1iK1k3-0008Jq-Lr; Mon, 14 Oct 2019 10:54:35 -0400 Received: from [176.228.60.248] (port=4733 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1iK1k3-0007Pd-0j; Mon, 14 Oct 2019 10:54:35 -0400 Date: Mon, 14 Oct 2019 17:54:28 +0300 Message-Id: <83pnizidi3.fsf@gnu.org> From: Eli Zaretskii To: Carlos Pita In-reply-to: (message from Carlos Pita on Mon, 14 Oct 2019 11:37:03 -0300) Subject: Re: bug#37689: Fringe pixmaps, widgets, etc. look ridiculously tiny in hidpi screen References: <83v9swqz9q.fsf@gnu.org> <83k19ao21y.fsf@gnu.org> <835zkrk9q9.fsf@gnu.org> <20191014131955.GC45622@breton.holly.idiocy.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 37689 Cc: alan@idiocy.org, rpluim@gmail.com, 37689@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Carlos Pita > Date: Mon, 14 Oct 2019 11:37:03 -0300 > Cc: Eli Zaretskii , Robert Pluim , 37689@debbugs.gnu.org > > > > 2. I'm clueless regarding were widgets (I mean checkboxes and things like that) are rendered. > > > I'm not sure I understand how this is related to the issue at hand. Can you elaborate? > > By widgets I was referring to the checkboxes, arrows and stuff that > you can see, for example, in a customize-face buffer. When changing > the scaling parameters in x_cr_render_image in emacs 26.3, fringe > bitmaps were affected but those aforementioned widgets weren't. In > emacs 27 they indeed were affected by the same changes in code, but > they looked weirdly distorted and clipped, as you can see in my > previous screenshot. So, in brief, I couldn't locate the C code path > for the rendering of this stuff, specially in emacs 26.3. And by > rendering I was indistinctly referring to both stages you describe. Maybe I'm confused: I thought we were talking about fringe bitmaps. But you seem to be talking about a more general issue. I'm not sure all of the graphic elements we show on our display should share the same solution wrt hidpi; in particular, I think fonts don't need anything to support that. From debbugs-submit-bounces@debbugs.gnu.org Mon Oct 14 11:07:04 2019 Received: (at 37689) by debbugs.gnu.org; 14 Oct 2019 15:07:04 +0000 Received: from localhost ([127.0.0.1]:41445 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iK1w8-00060N-Ex for submit@debbugs.gnu.org; Mon, 14 Oct 2019 11:07:04 -0400 Received: from mail-yw1-f67.google.com ([209.85.161.67]:35169) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iK1w6-0005zt-U5 for 37689@debbugs.gnu.org; Mon, 14 Oct 2019 11:07:03 -0400 Received: by mail-yw1-f67.google.com with SMTP id r134so6218741ywg.2 for <37689@debbugs.gnu.org>; Mon, 14 Oct 2019 08:07:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=7Se5i+skW8dyaxyCOR1JA7rSCh0QrCUOnWzuvIU856I=; b=aaZuLoiaTmbvJuFRhaKSp62/KKA6Sk0VwgvMrDbP/fa5+gLzG+X76+5FWi8LqJ0nSv HdNHyI7RMZypd0K9YCrjzuqVfdfBgYMIlyekJoUC83qGpHChsutTdJQpT/RoKD1LuMns m1W22hm3uNdn9C2X+xNZpvk7/myWip+0Cbe2HnFxxXuT5wPjdXA44qOgvQCMCaTW/bB1 ODxmAflm+utJwaZi2/u2+CtrsiTnNuYzMvVp+ifgIJurCau4L1H2FuitkW/oBQLzdqd5 +qX2xkj1Z9r3cETD5aApiZuzY/rNJSIgVDZR3M4xBhBBr20oTA9HPTDefZOIIdsDbcwh O11Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=7Se5i+skW8dyaxyCOR1JA7rSCh0QrCUOnWzuvIU856I=; b=fAK9BTn1osD54GfATXJ2t1maoSCPpCCozB2SDhNkOmA9ViqDLUwQwMXN1FFjze48F6 di/sroA2DDhaVlWONmcGDFEqSiTfCP/y07ZD6oKqrjXmdc59hf3Xmq8Kx8cGqbQdeijJ L493dx0pYUCZbCmLPfNm6yS/xImaafnXaupZ841tFrkvBjJgE4FQnEXeBOIx3EFZM5RN ZRkpJa+A1XCOvB1pPxuSk+pjNxCPoNYRuKoWPIGS0oowy01cOW3Cjxs2xTe7rjuHX/fe TuITEucV2glhR4+CxN0yUjadHQAbvDxmnmGhzphH1eFRhoy98x1ds0ttLBrOXBSC455O vWtg== X-Gm-Message-State: APjAAAVe8CyXazdCwLTU4CoJIWZK60VgyFFJn58pyCbFdFwys8jvvELO d0v4dCChdz1lhiqGOwVgh4lqMS8nAZugMzq2AFc= X-Google-Smtp-Source: APXvYqyepLyD6wUHLI7NFn+I2JNHO8lDDHORDoVkH/t8zadq0AJMnAi6VNA2KAQdH4zXSdJWXIBgDptCY0XLAKWl+Jc= X-Received: by 2002:a81:57d4:: with SMTP id l203mr12311941ywb.277.1571065617210; Mon, 14 Oct 2019 08:06:57 -0700 (PDT) MIME-Version: 1.0 References: <83v9swqz9q.fsf@gnu.org> <83k19ao21y.fsf@gnu.org> <835zkrk9q9.fsf@gnu.org> <20191014131955.GC45622@breton.holly.idiocy.org> <83pnizidi3.fsf@gnu.org> In-Reply-To: <83pnizidi3.fsf@gnu.org> From: Carlos Pita Date: Mon, 14 Oct 2019 12:06:45 -0300 Message-ID: Subject: Re: bug#37689: Fringe pixmaps, widgets, etc. look ridiculously tiny in hidpi screen To: Eli Zaretskii Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 37689 Cc: Alan Third , Robert Pluim , 37689@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) > Maybe I'm confused: I thought we were talking about fringe bitmaps. > But you seem to be talking about a more general issue. I'm not sure Yes, remember how all this started: > make an inventory of all the things that should be fixed towards hidpi Above I've been mostly talking about two things: i. fringe bitmaps and ii. widgets (checkbox-like stuff). My main interest is in (i) since I'm ok with text-only widgets but there is no replacement for fringe bitmaps. Anyway, I would like to fix both things at the same time. Moreover, there are other problems, which might be addressed by the same changes or not, take for example tetris, which looks laughably small in my screen. So I could go and change get_fringe_bitmap_data and hopefully fix the fringe issue but: i. This won't fix any other hidpi issues. ii. This might introduce regressions in backends that I'm unable to test (windows, macos) because they might be doing the scaling themselves. Therefore I believe a more nuanced understanding of how emacs is approaching the matter, if there is any strategy at all, is in order. From debbugs-submit-bounces@debbugs.gnu.org Mon Oct 14 11:15:26 2019 Received: (at 37689) by debbugs.gnu.org; 14 Oct 2019 15:15:26 +0000 Received: from localhost ([127.0.0.1]:41449 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iK24E-0006Cj-CL for submit@debbugs.gnu.org; Mon, 14 Oct 2019 11:15:26 -0400 Received: from eggs.gnu.org ([209.51.188.92]:47831) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iK24A-0006CS-3D for 37689@debbugs.gnu.org; Mon, 14 Oct 2019 11:15:22 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:55243) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1iK243-0005Jf-R9; Mon, 14 Oct 2019 11:15:16 -0400 Received: from [176.228.60.248] (port=2024 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1iK242-0000iT-CZ; Mon, 14 Oct 2019 11:15:14 -0400 Date: Mon, 14 Oct 2019 18:15:09 +0300 Message-Id: <83mue3icjm.fsf@gnu.org> From: Eli Zaretskii To: Carlos Pita In-reply-to: (message from Carlos Pita on Mon, 14 Oct 2019 12:06:45 -0300) Subject: Re: bug#37689: Fringe pixmaps, widgets, etc. look ridiculously tiny in hidpi screen References: <83v9swqz9q.fsf@gnu.org> <83k19ao21y.fsf@gnu.org> <835zkrk9q9.fsf@gnu.org> <20191014131955.GC45622@breton.holly.idiocy.org> <83pnizidi3.fsf@gnu.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 37689 Cc: alan@idiocy.org, rpluim@gmail.com, 37689@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Carlos Pita > Date: Mon, 14 Oct 2019 12:06:45 -0300 > Cc: Alan Third , Robert Pluim , 37689@debbugs.gnu.org > > Above I've been mostly talking about two things: i. fringe bitmaps and > ii. widgets (checkbox-like stuff). What you call "widgets" are images. Fringes are also images, but their format is fixed: they are always bitmaps. > i. This won't fix any other hidpi issues. > ii. This might introduce regressions in backends that I'm unable to > test (windows, macos) because they might be doing the scaling > themselves. > > Therefore I believe a more nuanced understanding of how emacs is > approaching the matter, if there is any strategy at all, is in order. I think we covered all that, what is left is coding. Right? From debbugs-submit-bounces@debbugs.gnu.org Mon Oct 14 11:33:23 2019 Received: (at 37689) by debbugs.gnu.org; 14 Oct 2019 15:33:23 +0000 Received: from localhost ([127.0.0.1]:41524 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iK2LW-0006kM-UA for submit@debbugs.gnu.org; Mon, 14 Oct 2019 11:33:23 -0400 Received: from mail-yb1-f196.google.com ([209.85.219.196]:36115) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iK2LU-0006k6-O2 for 37689@debbugs.gnu.org; Mon, 14 Oct 2019 11:33:17 -0400 Received: by mail-yb1-f196.google.com with SMTP id t4so2877712ybk.3 for <37689@debbugs.gnu.org>; Mon, 14 Oct 2019 08:33:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=XA1zipocCSevQen9VGUs4kkJGcDfnFMnmtbCtawaEWw=; b=uIcHUXwS/I5FvuQl25i+pMmG96Sey/iQQ8NvamacRPob6ZqbEN0owW/Iccg5FaQHwS C1Kn0dvtErVAOuJPdzeHdXsTFmUamliHMa9/jqHZ9CyTx00QGvwH1Ci83tfyQJ9alpS7 euFRLeABmMNRnMWvPtf4ka+XzGUbuBpD+VEgF1RgTskpTkPdBLS9lQHV4CAhy5/atyD8 iQNrJ2W/+El/sHK28XBZAltD2GWrm4zTJbH8xC1t5G62k3gjGrjH35BiisvbpsGqA90j D0EPSdKjKatD3z96E0gograGBRTgSnS65wxoMxi84tsWmKfFARLYl0PCkQed4Stj/b9N Ocbg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=XA1zipocCSevQen9VGUs4kkJGcDfnFMnmtbCtawaEWw=; b=UiJF0WHufRPwgdbWBVQ71gMhxGhJi/tSAPWaiCL0IySKXypbx8Fu8joKjHr7MEB8dl 2A+5TPQx0URGTNtx6aDu5yXEK+DI6KwNyEehez0kH3sHQnlJW3DfZpkTS4SkOCbuPwY5 nNseSSTUgmfhG47oycpPl5NA54umoSBRtMWnDv8PhDjt7bMjOIVPBY/QbmMleSXHQu64 ENY2azLaCComOgrNg3FBqEkHRy21r9MssW9UnaAOBBiv6BwGXcrPtf2RoJG0pgPdb8sh lRvO/23nRR7d6uXdY+lQliwuNfSqrOi76fRpoY7ECHkyLL49qOKlBb5LDBteD719CF8F XV1g== X-Gm-Message-State: APjAAAUftYA31K8EgS691PyCDnJuAfA2uQRCZE/i2wH5gFCPm9LX5wSY Nr+KtgFbFDLFQR6tdcQwMTzW7Gv7R4mu4fv2wwI= X-Google-Smtp-Source: APXvYqzHDJVyRZLhFcsZEFMNSx+qwwdAMzdjaHWWJZ61wwn6+yvAGPBMaUkvs+e/k7NcrRg3NeyCVM0+Emxf5w1ApWk= X-Received: by 2002:a25:9947:: with SMTP id n7mr20118155ybo.263.1571067190951; Mon, 14 Oct 2019 08:33:10 -0700 (PDT) MIME-Version: 1.0 References: <83v9swqz9q.fsf@gnu.org> <83k19ao21y.fsf@gnu.org> <835zkrk9q9.fsf@gnu.org> <20191014131955.GC45622@breton.holly.idiocy.org> <83pnizidi3.fsf@gnu.org> <83mue3icjm.fsf@gnu.org> In-Reply-To: <83mue3icjm.fsf@gnu.org> From: Carlos Pita Date: Mon, 14 Oct 2019 12:32:58 -0300 Message-ID: Subject: Re: bug#37689: Fringe pixmaps, widgets, etc. look ridiculously tiny in hidpi screen To: Eli Zaretskii Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 37689 Cc: Alan Third , Robert Pluim , 37689@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) > What you call "widgets" are images. Fringes are also images, but their format is fixed: they are always bitmaps. > I think we covered all that, what is left is coding. Right? Well, I know they're images, I even known which images they are, I just haven't spotted the place where they're actually dealt with in the low level code and I was surprised that, being images, changes to x_cr_render_image weren't having any effect on them (with the cairo backend enabled, of course). To add to my confusion there are the aforementioned differences between 26.3 and 27 in this regard. The question of which code is dealing with these images (as opposed to fringe bitmaps) was indeed left unanswered but, nevermind, I'll keep looking for it myself. Any additional hint would be much appreciated, though. For the time being I will focus on fringe bitmaps and work under this assumption (which I'm not sure is that mild as you seem to suggest): > I don't think individual backends do any scaling, but if some do, it > should be easy to disable the scaling in our code for those backends. Later we can tackle "widgets" (which is the right name for them? They are indeed defined in widget.el and wid-edit.el AFAICS). Best regards -- Carlos From debbugs-submit-bounces@debbugs.gnu.org Mon Oct 14 12:52:52 2019 Received: (at 37689) by debbugs.gnu.org; 14 Oct 2019 16:52:52 +0000 Received: from localhost ([127.0.0.1]:41603 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iK3aV-0002QG-Re for submit@debbugs.gnu.org; Mon, 14 Oct 2019 12:52:52 -0400 Received: from eggs.gnu.org ([209.51.188.92]:35471) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iK3aU-0002Q1-9w for 37689@debbugs.gnu.org; Mon, 14 Oct 2019 12:52:51 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:56851) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1iK3aO-0002sL-SO; Mon, 14 Oct 2019 12:52:44 -0400 Received: from [176.228.60.248] (port=4050 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1iK3aO-0000Bs-7b; Mon, 14 Oct 2019 12:52:44 -0400 Date: Mon, 14 Oct 2019 19:52:38 +0300 Message-Id: <83lftni815.fsf@gnu.org> From: Eli Zaretskii To: Carlos Pita In-reply-to: (message from Carlos Pita on Mon, 14 Oct 2019 12:32:58 -0300) Subject: Re: bug#37689: Fringe pixmaps, widgets, etc. look ridiculously tiny in hidpi screen References: <83v9swqz9q.fsf@gnu.org> <83k19ao21y.fsf@gnu.org> <835zkrk9q9.fsf@gnu.org> <20191014131955.GC45622@breton.holly.idiocy.org> <83pnizidi3.fsf@gnu.org> <83mue3icjm.fsf@gnu.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 37689 Cc: alan@idiocy.org, rpluim@gmail.com, 37689@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Carlos Pita > Date: Mon, 14 Oct 2019 12:32:58 -0300 > Cc: Alan Third , Robert Pluim , 37689@debbugs.gnu.org > > > What you call "widgets" are images. Fringes are also images, but > their format is fixed: they are always bitmaps. > > > I think we covered all that, what is left is coding. Right? > > Well, I know they're images, I even known which images they are, I > just haven't spotted the place where they're actually dealt with in > the low level code The image-handling code is in image.c. The display engine in xdisp.c uses that to perform layout calculations, and then the backends actually display the images, e.g. look at x_draw_image_glyph_string and its subroutines. Fringe bitmaps use separate backend-dependent code for the actual display, see x_draw_fringe_bitmap as one example. > Later we can tackle "widgets" (which is the right name for them? I suggest "images". From debbugs-submit-bounces@debbugs.gnu.org Mon Oct 14 16:00:19 2019 Received: (at 37689) by debbugs.gnu.org; 14 Oct 2019 20:00:20 +0000 Received: from localhost ([127.0.0.1]:41789 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iK6Vt-0001Jf-LB for submit@debbugs.gnu.org; Mon, 14 Oct 2019 16:00:19 -0400 Received: from mail-yb1-f195.google.com ([209.85.219.195]:46038) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iK6Vr-0001JK-LX for 37689@debbugs.gnu.org; Mon, 14 Oct 2019 16:00:16 -0400 Received: by mail-yb1-f195.google.com with SMTP id q143so5796515ybg.12 for <37689@debbugs.gnu.org>; Mon, 14 Oct 2019 13:00:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=bh3lWZXCtdiqZBecof+B1IcTt/0IUtfCsvYIv7Hek9c=; b=hC3avE+3aAGbvy5KMXsdcSl9nkV/C1xRhLXdp/co/MKdY77Pf9dEr6jkhZ5Dl9iCTD 9gM1yGRyQl5dfqmfz7JpSDLg8kCw/7bfKqfnUcpXzk2gmW2sW36XBZg9ODnuMMlVRjEJ 6Vmi19vT/6+70kK527oEP8EX0iWLoGcYvwJK4EN9qWAgsI8GsOPVSD0pGAwXenxKLjeT GbH6MDgSJpnz6ALfxKYZ6Om81FE+LZJHmAFzKeP7vJtzp93+MjlhSyyFO51SnfQUCSI0 n8B4Xw1uxjCzJso2iBMoswLTh6LC0rR682WKe+cbp2bCfLOZv9OLs5vblMNdWdqBAOBf fTEQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=bh3lWZXCtdiqZBecof+B1IcTt/0IUtfCsvYIv7Hek9c=; b=KaZGUSUCjtKgnxsBxTAuFuKKNOrD1Br4rt7FkvcvfeVOIowDBXTagf4qohe8WN5xxq 7ai1fHPS252YKnz6DXaHBbjSq/KAc07EXNJ0RraQQr+IW7Q3YL5Pl3mbUHVER0/mPNP5 qZiDLCet9e3EOW0xXn/YYr/m92x1mgaSJt5k++7+UoesG7beIW2g55l05LDPznPdb92S d7ZrtVaLk5woKuW7JKQpr6VUZwmOdaD05DgjV3tiB+fR18+MDmTJizofd9blyXE9RtfO EdUCUIv2oHVf0Fs15Uk2tOtuABwehE0FOlb24ngOCvjyhb9j24O7m62eN7e82Gv6G54F TaqQ== X-Gm-Message-State: APjAAAUbwtRDMRZKJ4fjjwb0jSK0gvJm7Y9wHif0vBTlazN8LQLazoNQ wc7PEGQYwek9zwK3IguH3qSNK2sleLA58zhij6c= X-Google-Smtp-Source: APXvYqw9e1vyiZ30M8DHq/hLGpYo3BPVXgjXm9EAcWMhT7gsTiexUDBJVLsOBumyoxrnfrxYBRUqeW1wKhyU6IgiLfY= X-Received: by 2002:a25:9947:: with SMTP id n7mr20931999ybo.263.1571083209833; Mon, 14 Oct 2019 13:00:09 -0700 (PDT) MIME-Version: 1.0 References: <83v9swqz9q.fsf@gnu.org> <83k19ao21y.fsf@gnu.org> <835zkrk9q9.fsf@gnu.org> <20191014131955.GC45622@breton.holly.idiocy.org> <83pnizidi3.fsf@gnu.org> <83mue3icjm.fsf@gnu.org> <83lftni815.fsf@gnu.org> In-Reply-To: <83lftni815.fsf@gnu.org> From: Carlos Pita Date: Mon, 14 Oct 2019 16:59:58 -0300 Message-ID: Subject: Re: bug#37689: Fringe pixmaps, widgets, etc. look ridiculously tiny in hidpi screen To: Eli Zaretskii Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 37689 Cc: Alan Third , Robert Pluim , 37689@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Ok, while working on this I bumped into a new problem and I'm stuck again. In order to scale things "upstream" I need the scaling factor, but the functions that compute the scaling factor are static functions defined "downstream" in each backend: x_get_scale_factor in w32term.c, in xterm.c. Or, in other places, some code that is conditional to GTK simply calls xg_get_scale. Do you know of any backend-agnostic way to get the scaling factor for a frame? I don't want to replicate complex backend dependant code in fringe.c. From debbugs-submit-bounces@debbugs.gnu.org Mon Oct 14 19:43:18 2019 Received: (at 37689) by debbugs.gnu.org; 14 Oct 2019 23:43:18 +0000 Received: from localhost ([127.0.0.1]:42404 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iK9zi-0006Bt-AC for submit@debbugs.gnu.org; Mon, 14 Oct 2019 19:43:18 -0400 Received: from mail-yb1-f194.google.com ([209.85.219.194]:36011) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iK9zg-0006Bb-KP for 37689@debbugs.gnu.org; Mon, 14 Oct 2019 19:43:17 -0400 Received: by mail-yb1-f194.google.com with SMTP id t4so3303117ybk.3 for <37689@debbugs.gnu.org>; Mon, 14 Oct 2019 16:43:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=ZVufiGlZCX9HgS2o838s7wPFRJLygcBiDbpoBaIw2ro=; b=cWr/E2sI4Br4/YME4YvEw/pgq6ymNpzBaO8pHIeRi+MDpxNDONJMTrRXMQB8TWh6nB CXhV9C6KU7vRi/hIrYcQcTWpdRO/m5EBXnHWIK6b5X1zdVDgKAUMZ5M0x6zePt6GEgZG MUjYB6F8KSy9QbreQhWom86I6NZt2l6n0m02m7cFkBei04vLbD1WejavdC1aXyOIJ1PI 1FywfXH2rc7Hm9zgIvr8ZVjwQEIGia/L5Ew+8KZ3QWzm7AdfYbj39JXdlMleb9XufNMN pcGzY8WIbwc6MwRQAKTAgCExXgDsMry4ZxQrovFvg70jrxijBmS5zK0JbBPFhBNu2MRy ko+g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=ZVufiGlZCX9HgS2o838s7wPFRJLygcBiDbpoBaIw2ro=; b=EHte+x+fDK91WL4wM6clsXUJSyCA0+I47x+sd4f8NNpbByM7Hj0lY2zYdpRP1eIk6C VmoiCfQKJwgi6hQpsKlLRPYKndzibSzERi4Bpx+nr9H0t4eKXpnibNE7BPoIT7ZjC2lt RqPaUk7g5Ye1AFgL3ZJ+v7fEa1Z3a97bcGQnlCKYXNe5CFIVAaKM8ERsiZjJpifGSB7X CfKn2YyddcrF87fXa0n60SyTMWs2GFUrToSDqCeIeM9xwQxbwPRtnHgDHl8BtaW3Fm4E mDBKCG8JGKz8C1Ruigkmiqmgzop8E8Myf5UewbxxzhRvMqohCXLJHkpKu+I10CGgjzTo dWJA== X-Gm-Message-State: APjAAAXZgoIxR116TEBNInP8mN6KDsM+59I1Df6vEF6YBRBt29KB2luB bZS6hos6YXG4AGO0MjkbgFNjLJjAFrutKsUJFvE= X-Google-Smtp-Source: APXvYqyum7KXVNCnG2sA9SOZnQ0NjawGINvSxlq29PLADxy858EXOmpIl3nOumaxy0CO12GKUxg1J1EgzK3aJ6YMbrA= X-Received: by 2002:a25:4d87:: with SMTP id a129mr21331989ybb.82.1571096590769; Mon, 14 Oct 2019 16:43:10 -0700 (PDT) MIME-Version: 1.0 References: <83v9swqz9q.fsf@gnu.org> <83k19ao21y.fsf@gnu.org> <835zkrk9q9.fsf@gnu.org> <20191014131955.GC45622@breton.holly.idiocy.org> <83pnizidi3.fsf@gnu.org> <83mue3icjm.fsf@gnu.org> <83lftni815.fsf@gnu.org> In-Reply-To: From: Carlos Pita Date: Mon, 14 Oct 2019 20:42:59 -0300 Message-ID: Subject: Re: bug#37689: Fringe pixmaps, widgets, etc. look ridiculously tiny in hidpi screen To: Eli Zaretskii Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 37689 Cc: Alan Third , Robert Pluim , 37689@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) I'm finding non-trivial difficulties that make me think this is not the best approach. I've already mentioned one above: 1. I need the scaling factor in fringe.c yet it's not part of the redisplay_interface. Functions that compute scaling factor are backend specific and static. Also: 2. init_fringe_bitmap does non-trivial manipulations to the original bit sequence (nibble swapping, shifting, casting) to produce a platform/backend-specific representation. redisplay_interface is ill-defined in this regard, bitmap representation is not part of the interface. For some backends init_fringe_bitmap even compresses shorts to chars if width < 8, so I can't reliably detect row limits in a platform/backend-agnostic way, which I need in order to scale the bitmap. 3. The unsigned short representation is unfortunate. For 3x we need at least int64_t. Then we need to modify all that backend-dependent nibble swapping, shifting and casting that gives me the creeps. Finally backends would have to be adapted to take an int64_t array as input. Given those considerable difficulties, I propose to scale bitmaps in two stages instead: a. At the level of fringe.c we only modify the geometry (width, height) of the image, so that calculations that are independent of the bitmap itself are correctly done. This way we can keep the unsigned short representation, we don't need to touch that complex platform/backend-dependent bit and we don't need to query the scaling factor, thus solving points 1, 2 and 3 above. b. Then each backend should set a transformation matrix or something like that so that the bitmap is scaled to the appropriate resolution. I already know how to do that for Cairo, it's trivial. Eli, what do you think? From debbugs-submit-bounces@debbugs.gnu.org Mon Oct 14 19:49:33 2019 Received: (at 37689) by debbugs.gnu.org; 14 Oct 2019 23:49:33 +0000 Received: from localhost ([127.0.0.1]:42408 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iKA5l-0006NQ-13 for submit@debbugs.gnu.org; Mon, 14 Oct 2019 19:49:33 -0400 Received: from mail-yw1-f68.google.com ([209.85.161.68]:38909) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iKA5j-0006N9-CA for 37689@debbugs.gnu.org; Mon, 14 Oct 2019 19:49:31 -0400 Received: by mail-yw1-f68.google.com with SMTP id s6so6698480ywe.5 for <37689@debbugs.gnu.org>; Mon, 14 Oct 2019 16:49:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=sggvUdmz613Xs4W/pjaRBOYqQaIkni4uGmYQ/Phv0dM=; b=i3bFDzcGVB/NQMF8IzaHy21mla//BR3i9wJxK8JME2cQJREi3yb78ED2ugAv+aKch1 g2qsn3SzE9JdWgp4wEVcIjC/f9yOcxvyCqSjctpDRV0AvwKCfbQlHyxRl+klWGuWxYYJ j+VmW8vrRq43VNOYg13ZbbweZBX55oKpH756POzYzFlTNnGgeXQMLCSD2At7cuKx7dkF 5RWLu6+vKs9W9olhmmZegBU8JLQEct1H66cwTx1FaYH0tH0SMM6QAsQelRu0f9R7SY/9 HQG+v9v1FgblHbOC0YFIVQjWOCLmj65zUBjJNPsivtPXPhetymU8UD+u++YvueTYrLow axOA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=sggvUdmz613Xs4W/pjaRBOYqQaIkni4uGmYQ/Phv0dM=; b=JiSq0dwFP4MnuhSyBAittNjRcU3atK2zXs87lnWkbh9djgC1MvQIt3sWd3LZ6OwlEe mtW8N9+DI4UTvyuyj+eCzQxdi7pTFGOo09Hsst8/6qzPAmQcsvMzMHY3Ns+pUYzgTvmM yuTpWHls2+nnhKdINMimx39pgctobX5t4vHnYa07W7+bYZFv5El9daHq8QHlOYT9+ql9 zg1X18lNAFJr9K0+WTPvJnKpHkh/30TGGxg6A6muQ0Ha12WZkHIbSUIEBTJzDw7OvWNr QgkvkdoeIVIAs8yhSIYygm69tc0TweWVNtJGQ5hQiHFXBM3yliFvKIAeb/k8egODVg/2 yMMA== X-Gm-Message-State: APjAAAUvixRjtIOt3/f7NaJRfPerMRLUxmvdGFrfarzAVfDu23hxUpHv zGqtfaMEIlYIWVqgZXGytDTr4SXc18WhhUgzaao= X-Google-Smtp-Source: APXvYqyE6xV51+r7QuEoQMC4wSLFdaCRU+bE+OEr9RCF8mhXi5+ZhhGR8k0EtN1US3ZgToprP6zkXrpze9hzcfpzo48= X-Received: by 2002:a81:57d4:: with SMTP id l203mr13800567ywb.277.1571096965625; Mon, 14 Oct 2019 16:49:25 -0700 (PDT) MIME-Version: 1.0 References: <83v9swqz9q.fsf@gnu.org> <83k19ao21y.fsf@gnu.org> <835zkrk9q9.fsf@gnu.org> <20191014131955.GC45622@breton.holly.idiocy.org> <83pnizidi3.fsf@gnu.org> <83mue3icjm.fsf@gnu.org> <83lftni815.fsf@gnu.org> In-Reply-To: From: Carlos Pita Date: Mon, 14 Oct 2019 20:49:14 -0300 Message-ID: Subject: Re: bug#37689: Fringe pixmaps, widgets, etc. look ridiculously tiny in hidpi screen To: Eli Zaretskii Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 37689 Cc: Alan Third , Robert Pluim , 37689@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) > factor, thus solving points 1, 2 and 3 above. Sorry, problem 1 is still unsolved by the proposed approach, not without extending redisplay_interface. From debbugs-submit-bounces@debbugs.gnu.org Mon Oct 14 21:50:32 2019 Received: (at 37689) by debbugs.gnu.org; 15 Oct 2019 01:50:32 +0000 Received: from localhost ([127.0.0.1]:42498 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iKByp-0003TW-FI for submit@debbugs.gnu.org; Mon, 14 Oct 2019 21:50:32 -0400 Received: from mail-yw1-f67.google.com ([209.85.161.67]:43366) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iKByn-0003TG-3J for 37689@debbugs.gnu.org; Mon, 14 Oct 2019 21:50:29 -0400 Received: by mail-yw1-f67.google.com with SMTP id q7so6768907ywe.10 for <37689@debbugs.gnu.org>; Mon, 14 Oct 2019 18:50:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=o1w9BHFthAD6n53UfzycqKnx16hxrfNTbrSF0HPvPec=; b=KI2P9lUq49Dr5DULbtgki2TZ/ESpuit2k4CNYTcis/OB4G8JEs19xlpZBR2tYRjY6Z s95kTL4J6PEgX14tmtPorrAYL+V8dtXAUBzPdd3i3J18uTWC4d8avwgwBSJHWHc+JeLr oJn4wd5IEE2hNPLGvdNf39reZ1xkLwHj0CENbTRsXwQlwII76a9uborkcAVtoeGZS0Kp r7P5ZhwsC+taZC/aK62Vae6aHq04/0WEN2chGJV/tq1R6jfJcj1AGNjVJVuvxnq8lIub IEHcHHz3dt0djQfysrP1VBfKoq178W3lV3LZ1m2pbG6eCwyn8+2El9rP/xZ9kH5B1mTl 6Xyw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=o1w9BHFthAD6n53UfzycqKnx16hxrfNTbrSF0HPvPec=; b=LHoZYQZrmh0H3UdriU+R97ihD7zelRshH6jlVEh03n5H0KiLv+m3PHVXfDl4V/Dv3L yM5dSE9ZSihnRipQ/LHE5GB+uxzRfMgnbjHBvT/8Se2CBve0f1xE0dvq9R1ryWE6Uelw 7eEK4Z5RjdIsVp0Hw1lYbdWqlGDCoZcXaG4Uup3ZpuhgLETR8hXegGwXlMjWZ++OLraH euAx1zG09syH2cGXSK1ahPWlHJOxTDLTXOR0Epa2Yo7sODHNJdkg702LGspxT+re/ZRR k3opLq+estTxzdxVf89uCbZSU2g0wKdVOzHf4NWZTAExaF3Gq32iyddBlZ+QWzY2Chg3 8L5A== X-Gm-Message-State: APjAAAUU56sFiXHmuav/nCEcruUCgGnk0FblwYIDpVLnitRoxButENTK 9vlmZux/VcqU9Yy0ieKSdIQ6W05lsqWvRJxX49o= X-Google-Smtp-Source: APXvYqwFgJgexHCbpIBxRYzlhmNwACx/La+cVDqqCnLUVtqGgK4E3agqdHgtYyysKAa9AIHoK8s0leoHKC2pl1b1z84= X-Received: by 2002:a81:254e:: with SMTP id l75mr14327838ywl.90.1571104223365; Mon, 14 Oct 2019 18:50:23 -0700 (PDT) MIME-Version: 1.0 References: <83v9swqz9q.fsf@gnu.org> <83k19ao21y.fsf@gnu.org> <835zkrk9q9.fsf@gnu.org> <20191014131955.GC45622@breton.holly.idiocy.org> <83pnizidi3.fsf@gnu.org> <83mue3icjm.fsf@gnu.org> <83lftni815.fsf@gnu.org> In-Reply-To: From: Carlos Pita Date: Mon, 14 Oct 2019 22:50:11 -0300 Message-ID: Subject: Re: bug#37689: Fringe pixmaps, widgets, etc. look ridiculously tiny in hidpi screen To: Eli Zaretskii Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 37689 Cc: Alan Third , Robert Pluim , 37689@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) > > factor, thus solving points 1, 2 and 3 above. > > Sorry, problem 1 is still unsolved by the proposed approach, not > without extending redisplay_interface. Also, the scaling factor should probably be exposed to frame.c, since it sets a default width of 8 that assumes a standard dpi monitor: gui_set_left/right_fringe (struct frame *f, Lisp_Object new_value, Lisp_Object old_value) ... new_width = (RANGED_FIXNUMP (-INT_MAX, new_value, INT_MAX) ? eabs (XFIXNUM (new_value)) : 8); I've reached a point from where I'm unable to continue ahead on my own, except for writing a private patch targeting my specific resolution and backend. I would like to contribute but I see no way without extending the interface and that's far beyond than what I can decide. From debbugs-submit-bounces@debbugs.gnu.org Tue Oct 15 05:27:55 2019 Received: (at 37689) by debbugs.gnu.org; 15 Oct 2019 09:27:55 +0000 Received: from localhost ([127.0.0.1]:42741 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iKJ7T-00020X-3J for submit@debbugs.gnu.org; Tue, 15 Oct 2019 05:27:55 -0400 Received: from eggs.gnu.org ([209.51.188.92]:56640) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iKJ7Q-00020K-SF for 37689@debbugs.gnu.org; Tue, 15 Oct 2019 05:27:53 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:43541) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1iKJ7L-0002q0-2O; Tue, 15 Oct 2019 05:27:47 -0400 Received: from [176.228.60.248] (port=4952 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1iKJ7J-0006CT-7b; Tue, 15 Oct 2019 05:27:46 -0400 Date: Tue, 15 Oct 2019 12:27:38 +0300 Message-Id: <83eezegxyt.fsf@gnu.org> From: Eli Zaretskii To: Carlos Pita In-reply-to: (message from Carlos Pita on Mon, 14 Oct 2019 20:42:59 -0300) Subject: Re: bug#37689: Fringe pixmaps, widgets, etc. look ridiculously tiny in hidpi screen References: <83v9swqz9q.fsf@gnu.org> <83k19ao21y.fsf@gnu.org> <835zkrk9q9.fsf@gnu.org> <20191014131955.GC45622@breton.holly.idiocy.org> <83pnizidi3.fsf@gnu.org> <83mue3icjm.fsf@gnu.org> <83lftni815.fsf@gnu.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 37689 Cc: alan@idiocy.org, rpluim@gmail.com, 37689@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Carlos Pita > Date: Mon, 14 Oct 2019 20:42:59 -0300 > Cc: Alan Third , Robert Pluim , 37689@debbugs.gnu.org > > I'm finding non-trivial difficulties that make me think this is not > the best approach. > > I've already mentioned one above: > > 1. I need the scaling factor in fringe.c yet it's not part of the > redisplay_interface. Functions that compute scaling factor are backend > specific and static. Adding them to frame redisplay interface would solve this. > 2. init_fringe_bitmap does non-trivial manipulations to the original > bit sequence (nibble swapping, shifting, casting) to produce a > platform/backend-specific representation. redisplay_interface is > ill-defined in this regard, bitmap representation is not part of the > interface. For some backends init_fringe_bitmap even compresses shorts > to chars if width < 8, so I can't reliably detect row limits in a > platform/backend-agnostic way, which I need in order to scale the > bitmap. The code in init_fringe_bitmap obviously need some refactoring to rely on redisplay interface. You could make such refactoring part of the job, or you could leave the current code intact and use its results. I don't think I understand the difficulty of detecting row limits, but you could begin by doing that for one platform, and then asking others to do the same for other platforms. > 3. The unsigned short representation is unfortunate. For 3x we need at > least int64_t. Then we need to modify all that backend-dependent > nibble swapping, shifting and casting that gives me the creeps. > Finally backends would have to be adapted to take an int64_t array as > input. Couldn't we use the existing image-scaling code for that? It is implemented in each backend already. > a. At the level of fringe.c we only modify the geometry (width, > height) of the image, so that calculations that are independent of the > bitmap itself are correctly done. This way we can keep the unsigned > short representation, we don't need to touch that complex > platform/backend-dependent bit and we don't need to query the scaling > factor, thus solving points 1, 2 and 3 above. > > b. Then each backend should set a transformation matrix or something > like that so that the bitmap is scaled to the appropriate resolution. > I already know how to do that for Cairo, it's trivial. > > Eli, what do you think? I don't think I understand what will stage (a) do under this proposal. Stage (b) is already implemented, you just need to use it, and you need to tell the transformation code the correct scale factor. From debbugs-submit-bounces@debbugs.gnu.org Tue Oct 15 05:31:02 2019 Received: (at 37689) by debbugs.gnu.org; 15 Oct 2019 09:31:02 +0000 Received: from localhost ([127.0.0.1]:42749 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iKJAT-00026m-SJ for submit@debbugs.gnu.org; Tue, 15 Oct 2019 05:31:02 -0400 Received: from eggs.gnu.org ([209.51.188.92]:56990) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iKJAR-00026O-MV for 37689@debbugs.gnu.org; Tue, 15 Oct 2019 05:30:59 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:43567) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1iKJAM-0003dm-II; Tue, 15 Oct 2019 05:30:54 -0400 Received: from [176.228.60.248] (port=1154 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1iKJA8-0002cj-1r; Tue, 15 Oct 2019 05:30:46 -0400 Date: Tue, 15 Oct 2019 12:30:31 +0300 Message-Id: <83bluigxu0.fsf@gnu.org> From: Eli Zaretskii To: Carlos Pita In-reply-to: (message from Carlos Pita on Mon, 14 Oct 2019 22:50:11 -0300) Subject: Re: bug#37689: Fringe pixmaps, widgets, etc. look ridiculously tiny in hidpi screen References: <83v9swqz9q.fsf@gnu.org> <83k19ao21y.fsf@gnu.org> <835zkrk9q9.fsf@gnu.org> <20191014131955.GC45622@breton.holly.idiocy.org> <83pnizidi3.fsf@gnu.org> <83mue3icjm.fsf@gnu.org> <83lftni815.fsf@gnu.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 37689 Cc: alan@idiocy.org, rpluim@gmail.com, 37689@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Carlos Pita > Date: Mon, 14 Oct 2019 22:50:11 -0300 > Cc: Alan Third , Robert Pluim , 37689@debbugs.gnu.org > > Also, the scaling factor should probably be exposed to frame.c, since > it sets a default width of 8 that assumes a standard dpi monitor: > > gui_set_left/right_fringe (struct frame *f, Lisp_Object new_value, > Lisp_Object old_value) > ... > new_width = (RANGED_FIXNUMP (-INT_MAX, new_value, INT_MAX) > ? eabs (XFIXNUM (new_value)) : 8); > > I've reached a point from where I'm unable to continue ahead on my > own, except for writing a private patch targeting my specific > resolution and backend. I would like to contribute but I see no way > without extending the interface and that's far beyond than what I can > decide. Extending the frame redisplay interface is a no-brainer, please go ahead. From debbugs-submit-bounces@debbugs.gnu.org Tue Oct 15 19:01:57 2019 Received: (at 37689) by debbugs.gnu.org; 15 Oct 2019 23:01:57 +0000 Received: from localhost ([127.0.0.1]:45010 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iKVpE-00064i-Vx for submit@debbugs.gnu.org; Tue, 15 Oct 2019 19:01:57 -0400 Received: from mail-yw1-f68.google.com ([209.85.161.68]:40115) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iKVpC-00064U-Sf for 37689@debbugs.gnu.org; Tue, 15 Oct 2019 19:01:56 -0400 Received: by mail-yw1-f68.google.com with SMTP id e205so7972851ywc.7 for <37689@debbugs.gnu.org>; Tue, 15 Oct 2019 16:01:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=bSZQ4drfEnxj6GGU8BJpLGJvxxYQBWeTkGz86y6hRKE=; b=Wvij4sv33hFlc6Hbv9CyAUzVlBPToliqozlfcijjGtHEDLCrup65qVKP+h9O1xyu5K JoMD4UpECoR3Tu86K6h1C2pNSbX2CcSJc1MYc3CEnkzLIrDFlf1eq8qZOS1nJkqPcUab KVCT7ZauBXGdjvoQZU8Oxx9V6e+gvVvWQkwAfKuRi798DPNjkC0FXg8nW7I/m5yqCkky Yf4v9G4c7Rv9s+1WJxdl8q/bIAeR3rQL7xtzKoVNj+ym2xifhqCh1OSJoZm5PRMMRa/P g4tbykBrGqzXuS9mdsGbeTX3EuqcT8WQ5xd02nqfrNDpPdLPI/F/J9cHNwrN9a/9XBnL 6Xaw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=bSZQ4drfEnxj6GGU8BJpLGJvxxYQBWeTkGz86y6hRKE=; b=Y5MXBHg6KsjP1t0YNAp3M7jk9ewuC4sS/+bPvpVxFKOJaizyjcxi2ctJ6xRf3Fykv2 +L/2QpMEdbPoZAXegZhxqr/WDKcYwmetY3BbqYIdfJi90xObQXmWNUQoFoPeqrfdBQ0e ARJUp6Y2gLg7JLLVTn9FGNkYcEhreWHPdKcsLL4E5J+tFj1CMABnBDBO+96itMilMAno 8QLOoWpJsPIi1t3RpNDslMx1wtBvvY/EJqqDa7nN6U4cc5VR5BMXk0nm5z1Hsp5TMfSD bBByIEe3aSFD9LRU3tPapE5V2RD4fQTQyk1GnWMGhP/SflQOl2Je4VaSLcYcETuVItXh cbnA== X-Gm-Message-State: APjAAAWugnT16fP+1k2SFskoMptxwneQYazt6R6G5HyIi6NQqIgWuMN6 dtyZE+nIMAWhVotdJcY3rcpLk9CJUf8CN9Ddm24= X-Google-Smtp-Source: APXvYqwZHQHI3bKvFIGgdbTeeipog9cHf60Mdj79D3QGw1Tkf97oIA4X3YEKhfWEWbc794raZbIWikN4jz9v9yRrUQw= X-Received: by 2002:a81:254e:: with SMTP id l75mr17824690ywl.90.1571180509045; Tue, 15 Oct 2019 16:01:49 -0700 (PDT) MIME-Version: 1.0 References: <83v9swqz9q.fsf@gnu.org> <83k19ao21y.fsf@gnu.org> <835zkrk9q9.fsf@gnu.org> <20191014131955.GC45622@breton.holly.idiocy.org> <83pnizidi3.fsf@gnu.org> <83mue3icjm.fsf@gnu.org> <83lftni815.fsf@gnu.org> <83bluigxu0.fsf@gnu.org> In-Reply-To: <83bluigxu0.fsf@gnu.org> From: Carlos Pita Date: Tue, 15 Oct 2019 20:01:37 -0300 Message-ID: Subject: Re: bug#37689: Fringe pixmaps, widgets, etc. look ridiculously tiny in hidpi screen To: Eli Zaretskii Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 37689 Cc: Alan Third , Robert Pluim , 37689@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) I decided to follow a more incremental strategy because I feel this is getting unwieldy. I split the issue in three parts for now: 1. Expose scale factor in the rif (patch in https://debbugs.gnu.org/cgi/bugreport.cgi?bug=37770) 2. Implement image scaling in Cairo and maybe X11 backends (this ticket) 3. Some code cleanups / refactors pertaining the initialization sequence of backends (patch in https://debbugs.gnu.org/cgi/bugreport.cgi?bug=37755) 1 is a must-have for 2, 3 is a nice-to-have. I'm writing a proper patch for 2 on top of my patch for 1 that I will be attaching here soon. Are you ok with this strategy? It's not the one-hack-to-rule-them-all approach envisioned at the beginning but it simplify things a lot for anyone wanting to make macos and win backends actually scale their bitmaps, which shouldn't be difficult at all (or even necessary, I still have doubts regarding macos). Plus it hopefully brings some code improvements and a necessary API. From debbugs-submit-bounces@debbugs.gnu.org Wed Oct 16 00:25:50 2019 Received: (at 37689) by debbugs.gnu.org; 16 Oct 2019 04:25:50 +0000 Received: from localhost ([127.0.0.1]:45097 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iKasg-00081B-3P for submit@debbugs.gnu.org; Wed, 16 Oct 2019 00:25:50 -0400 Received: from mail-yb1-f195.google.com ([209.85.219.195]:39106) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iKasf-00080y-1D for 37689@debbugs.gnu.org; Wed, 16 Oct 2019 00:25:49 -0400 Received: by mail-yb1-f195.google.com with SMTP id z2so4324730ybn.6 for <37689@debbugs.gnu.org>; Tue, 15 Oct 2019 21:25:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=d0dEPlMoIZgnDzwx+doxRQ3CRpb5nM2JTP6s5cZp430=; b=r0Bk66aZTL1EHWvep/gvt2RA+MTWANS2iByhZbmt7P+QXNiXCnD8iO2BcDYTP5E4/t pbM5R2SWEdhuFZRfWlFCAr6vurpbPqPa6Y9DS5PtY06OnCV13N4xrN8cSQXQcz+DiEiY k56kPCE0q6hrSp+3bFQhm02RkSwonR+7BcuGlq8O6iWS/A/yBAnoUs4juom3hBQBaq44 T1cNo+VD5ovdoVW9aeuj/sXbNJrdySYUvm/zuC8UDCmKRzfGh97TCl9asXDYHR45VqGB NOkcr/iMCP4VlP0tWbFxtK9SWb+aSaQ7WSy02znGiB7KodkdZiOW34JOfFzV1HiFgC0/ 48ow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=d0dEPlMoIZgnDzwx+doxRQ3CRpb5nM2JTP6s5cZp430=; b=D5q7oZkxHUaCyyGptMxbmTyOp6vEyZ/LtJzaZAz2i2cvtqiA6haIaFUOfCK/W0ODVn hLdF823kFhnk5ZlPcwau+RUsdgqRwSJlL0FefQt7zI5DB/MsN0NbP5LM3Dgy7vtfnWq4 r9xCBPi8STVcQm4jDPyBOUSUnLlSFiDah3tNrK2AHGN3wr1Djs+hY8oRkyYAUm8crUhK 8hHyGyjD1ghcY/9Hk1kcu3imRTJw25/yuqmabzvH3Tw0Fc0tyhChYAiubugMDzY+Kj2b ID5e/MokNJg9xRz1XzsinFo++L42Usjw2SRGPCMS/plPT1sEN86P/fkznGPqisZ/Yy7+ z4Yg== X-Gm-Message-State: APjAAAXCIGjW+apo2vIXhUERM5S0Bv9P5aqqvABymGn5k65sYVLUbf6i 4VgTsszvz8Tiojq1ucKTyDwXVnEUKZ3zJpqK5SM= X-Google-Smtp-Source: APXvYqwulE7KLYDCkl6I08R4Qelut8EEl+o8k91SLVP0eN0SUk7Li2AzRcLUXwosCEo2MBOcFCszMApUTCSnRGIqJTg= X-Received: by 2002:a25:be48:: with SMTP id d8mr26773848ybm.353.1571199943230; Tue, 15 Oct 2019 21:25:43 -0700 (PDT) MIME-Version: 1.0 References: <83v9swqz9q.fsf@gnu.org> <83k19ao21y.fsf@gnu.org> <835zkrk9q9.fsf@gnu.org> <20191014131955.GC45622@breton.holly.idiocy.org> <83pnizidi3.fsf@gnu.org> <83mue3icjm.fsf@gnu.org> <83lftni815.fsf@gnu.org> <83bluigxu0.fsf@gnu.org> In-Reply-To: From: Carlos Pita Date: Wed, 16 Oct 2019 01:25:31 -0300 Message-ID: Subject: Re: bug#37689: Fringe pixmaps, widgets, etc. look ridiculously tiny in hidpi screen To: Eli Zaretskii Content-Type: multipart/mixed; boundary="0000000000007cea120594ff7ed2" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 37689 Cc: Alan Third , Robert Pluim , 37689@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --0000000000007cea120594ff7ed2 Content-Type: text/plain; charset="UTF-8" Tags: patch Here is a patch to be applied on top of https://debbugs.gnu.org/cgi/bugreport.cgi?bug=37770. I tried to postpone scaling calculations whenever possible so as to be prepared for a multi-monitor/multi-dpi future. Of course, this is at the expense of fetching scaling factors every time, but I believe it is a reasonable price to pay. --0000000000007cea120594ff7ed2 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Make-fringe-honour-scale-factor-in-Cairo-backend.patch" Content-Disposition: attachment; filename="0001-Make-fringe-honour-scale-factor-in-Cairo-backend.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_k1srudjy0 RnJvbSAwYWE1YjAzMzkyMjhmYTg1NTk0ZGU3YmI5Zjc4ZmVlZTkzOGJkN2U4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBtZW1lcGxleCA8Y2FybG9zam9zZXBpdGFAZ21haWwuY29tPgpE YXRlOiBXZWQsIDE2IE9jdCAyMDE5IDAxOjE4OjQ5IC0wMzAwClN1YmplY3Q6IFtQQVRDSF0gTWFr ZSBmcmluZ2UgaG9ub3VyIHNjYWxlIGZhY3RvciBpbiBDYWlybyBiYWNrZW5kCgoqIHNyYy9mcmlu Z2UuYzogc2NhbGUgYml0bWFwIHdpdGggYW5kIGhlaWdodAoqIHNyYy94dGVybS5jOiBzZXQgZGV2 aWNlIHNjYWxlLgoqIHNlYy93aW5kb3cuaDogc2NhbGUgV0lORE9XX0xFRlQvUklHSFRfRlJJTkdF X1dJRFRIIG1hY3JvcwotLS0KIHNyYy9mcmluZ2UuYyB8ICA1ICsrKy0tCiBzcmMvd2luZG93Lmgg fCAxNCArKysrKysrKysrLS0tLQogc3JjL3h0ZXJtLmMgIHwgIDIgKysKIDMgZmlsZXMgY2hhbmdl ZCwgMTUgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvZnJp bmdlLmMgYi9zcmMvZnJpbmdlLmMKaW5kZXggMjJmM2JkYy4uNTI0MmU4NCAxMDA2NDQKLS0tIGEv c3JjL2ZyaW5nZS5jCisrKyBiL3NyYy9mcmluZ2UuYwpAQCAtNTYzLDYgKzU2Myw3IEBAIGRyYXdf ZnJpbmdlX2JpdG1hcF8xIChzdHJ1Y3Qgd2luZG93ICp3LCBzdHJ1Y3QgZ2x5cGhfcm93ICpyb3cs IGludCBsZWZ0X3AsIGludCBvCiAgIGludCBwZXJpb2Q7CiAgIGludCBmYWNlX2lkID0gREVGQVVM VF9GQUNFX0lEOwogICBpbnQgb2Zmc2V0LCBoZWFkZXJfbGluZV9oZWlnaHQ7CisgIGRvdWJsZSBz Y2FsZSA9IEZSQU1FX1JJRiAoZiktPmdldF9zY2FsZV9mYWN0b3IgKGYpOwogCiAgIHAub3Zlcmxh eV9wID0gKG92ZXJsYXkgJiAxKSA9PSAxOwogICBwLmN1cnNvcl9wID0gKG92ZXJsYXkgJiAyKSA9 PSAyOwpAQCAtNjAyLDkgKzYwMyw5IEBAIGRyYXdfZnJpbmdlX2JpdG1hcF8xIChzdHJ1Y3Qgd2lu ZG93ICp3LCBzdHJ1Y3QgZ2x5cGhfcm93ICpyb3csIGludCBsZWZ0X3AsIGludCBvCiAKICAgcC53 aGljaCA9IHdoaWNoOwogICBwLmJpdHMgPSBmYi0+Yml0czsKLSAgcC53ZCA9IGZiLT53aWR0aDsK KyAgcC53ZCA9IGZiLT53aWR0aCAqIHNjYWxlOwogCi0gIHAuaCA9IGZiLT5oZWlnaHQ7CisgIHAu aCA9IGZiLT5oZWlnaHQgKiBzY2FsZTsKICAgcC5kaCA9IChwZXJpb2QgPiAwID8gKHAueSAlIHBl cmlvZCkgOiAwKTsKICAgcC5oIC09IHAuZGg7CiAKZGlmZiAtLWdpdCBhL3NyYy93aW5kb3cuaCBi L3NyYy93aW5kb3cuaAppbmRleCA3MTk0NmE1Li43OTM3ZDFlIDEwMDY0NAotLS0gYS9zcmMvd2lu ZG93LmgKKysrIGIvc3JjL3dpbmRvdy5oCkBAIC04MjcsMTYgKzgyNywyMiBAQCAjZGVmaW5lIFdJ TkRPV19NQVJHSU5TX1dJRFRIKFcpCQkJXAogICAoV0lORE9XX0xFRlRfTUFSR0lOX1dJRFRIIChX KQkJCVwKICAgICsgV0lORE9XX1JJR0hUX01BUkdJTl9XSURUSCAoVykpCiAKKyNkZWZpbmUgV0lO RE9XX1NDQUxFX0ZBQ1RPUihXKQkJCQkJCQlcCisgIChGUkFNRV9SSUYgKFdJTkRPV19YRlJBTUUg KFcpKSA9PSAwID8gMQkJCQkJXAorICAgOiBGUkFNRV9SSUYgKFdJTkRPV19YRlJBTUUgKFcpKS0+ Z2V0X3NjYWxlX2ZhY3RvciAoV0lORE9XX1hGUkFNRSAoVykpKQorCiAvKiBQaXhlbC13aWR0aHMg b2YgZnJpbmdlcy4gICovCiAjZGVmaW5lIFdJTkRPV19MRUZUX0ZSSU5HRV9XSURUSChXKQkJCVwK LSAgKFctPmxlZnRfZnJpbmdlX3dpZHRoID49IDAJCQkJXAorICAoKFctPmxlZnRfZnJpbmdlX3dp ZHRoID49IDAJCQkJXAogICAgPyBXLT5sZWZ0X2ZyaW5nZV93aWR0aAkJCQlcCi0gICA6IEZSQU1F X0xFRlRfRlJJTkdFX1dJRFRIIChXSU5ET1dfWEZSQU1FIChXKSkpCisgICA6IEZSQU1FX0xFRlRf RlJJTkdFX1dJRFRIIChXSU5ET1dfWEZSQU1FIChXKSkpCVwKKyAgICogV0lORE9XX1NDQUxFX0ZB Q1RPUiAoVykpCiAKICNkZWZpbmUgV0lORE9XX1JJR0hUX0ZSSU5HRV9XSURUSChXKQkJCVwKLSAg KFctPnJpZ2h0X2ZyaW5nZV93aWR0aCA+PSAwCQkJCVwKKyAgKChXLT5yaWdodF9mcmluZ2Vfd2lk dGggPj0gMAkJCQlcCiAgICA/IFctPnJpZ2h0X2ZyaW5nZV93aWR0aAkJCQlcCi0gICA6IEZSQU1F X1JJR0hUX0ZSSU5HRV9XSURUSCAoV0lORE9XX1hGUkFNRSAoVykpKQorICAgOiBGUkFNRV9SSUdI VF9GUklOR0VfV0lEVEggKFdJTkRPV19YRlJBTUUgKFcpKSkJXAorICAgKiBXSU5ET1dfU0NBTEVf RkFDVE9SIChXKSkKIAogI2RlZmluZSBXSU5ET1dfRlJJTkdFU19XSURUSChXKQkJXAogICAoV0lO RE9XX0xFRlRfRlJJTkdFX1dJRFRIIChXKSArIFdJTkRPV19SSUdIVF9GUklOR0VfV0lEVEggKFcp KQpkaWZmIC0tZ2l0IGEvc3JjL3h0ZXJtLmMgYi9zcmMveHRlcm0uYwppbmRleCA2NzI1M2E2Li5i ZjFhYmEyIDEwMDY0NAotLS0gYS9zcmMveHRlcm0uYworKysgYi9zcmMveHRlcm0uYwpAQCAtNjA4 LDYgKzYwOCw3IEBAIHhfY3JfZHJhd19pbWFnZSAoc3RydWN0IGZyYW1lICpmLCBHQyBnYywgY2Fp cm9fcGF0dGVybl90ICppbWFnZSwKIAkJIGludCBkZXN0X3gsIGludCBkZXN0X3ksIGJvb2wgb3Zl cmxheV9wKQogewogICBjYWlyb190ICpjciA9IHhfYmVnaW5fY3JfY2xpcCAoZiwgZ2MpOworICBk b3VibGUgc2NhbGUgPSBGUkFNRV9SSUYgKGYpLT5nZXRfc2NhbGVfZmFjdG9yIChmKTsKIAogICBp ZiAob3ZlcmxheV9wKQogICAgIGNhaXJvX3JlY3RhbmdsZSAoY3IsIGRlc3RfeCwgZGVzdF95LCB3 aWR0aCwgaGVpZ2h0KTsKQEAgLTYyMiw2ICs2MjMsNyBAQCB4X2NyX2RyYXdfaW1hZ2UgKHN0cnVj dCBmcmFtZSAqZiwgR0MgZ2MsIGNhaXJvX3BhdHRlcm5fdCAqaW1hZ2UsCiAKICAgY2Fpcm9fc3Vy ZmFjZV90ICpzdXJmYWNlOwogICBjYWlyb19wYXR0ZXJuX2dldF9zdXJmYWNlIChpbWFnZSwgJnN1 cmZhY2UpOworICBjYWlyb19zdXJmYWNlX3NldF9kZXZpY2Vfc2NhbGUgKHN1cmZhY2UsIDEuIC8g c2NhbGUsIDEuIC8gc2NhbGUpOwogICBjYWlyb19mb3JtYXRfdCBmb3JtYXQgPSBjYWlyb19pbWFn ZV9zdXJmYWNlX2dldF9mb3JtYXQgKHN1cmZhY2UpOwogICBpZiAoZm9ybWF0ICE9IENBSVJPX0ZP Uk1BVF9BOCAmJiBmb3JtYXQgIT0gQ0FJUk9fRk9STUFUX0ExKQogICAgIHsKLS0gCjIuMjAuMQoK --0000000000007cea120594ff7ed2-- From debbugs-submit-bounces@debbugs.gnu.org Wed Oct 16 00:27:09 2019 Received: (at control) by debbugs.gnu.org; 16 Oct 2019 04:27:09 +0000 Received: from localhost ([127.0.0.1]:45101 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iKatx-00083S-HS for submit@debbugs.gnu.org; Wed, 16 Oct 2019 00:27:09 -0400 Received: from mail-yw1-f49.google.com ([209.85.161.49]:45396) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iKatw-00083E-3k for control@debbugs.gnu.org; Wed, 16 Oct 2019 00:27:08 -0400 Received: by mail-yw1-f49.google.com with SMTP id x65so8172102ywf.12 for ; Tue, 15 Oct 2019 21:27:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=0W0xgZhd8wBIBUPvrMUXMxO7CvMI4yZ2c0crColGOgw=; b=fKt3yS19eJMtaO2ClVCeQ+2ThnoME488A/U4kF39iWpOzjw7ftZfXWfeI9R5MNHs25 8pEGoT7Um6UH50A6eZGV1HwZor/iITltUonXdGKW9rPFVsQaux2bf+6UwyKeOL7Wz+/J qAK0hfBg/JFjReZdfkM+pME4Lg94bbSG1EZSJZa810a/nDDMRZnChW6znYQPeAOjiszO KlKPtk0RULIvIywdlbsxECxX+vDUycYWnN0rBdW8w1wu1mhaTkSClOMZLSwKQ+NUTbwn ELWvQIjBzTY3BC+UEqk3kS6u4su7Id4TWb9sdvNMGbPTo6Hp72CWxOGT9qD3cRBvRZKn Y2hg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=0W0xgZhd8wBIBUPvrMUXMxO7CvMI4yZ2c0crColGOgw=; b=OmvCP1UOouu58BjrR4Q6jtvMLpFPNZJ6mY+kTu6F/vEVqoK0CgbwcJDfoVyBX+3UHJ cBaGEnvAHjIHXfRAbkYIPeWWaksDFyODeadWTDPb7J68BX/de14cZNZplx38+MWe9AHf NbLzPk5VVXjNe5bID0Jo/moLyzYLe+okxEBHwOz2mWp3Yk6OrM9IBWlr6gT86caohgBT k/TDY2F9BCFx6PFzzkNlLgHugVoNxeNFKRm+hYCWrFOlCNAfZxo3Crvufj1i8pfe10/D xWPPJ9Lf3kcK+9HMMZzYzUW87Ta0joa2HVqoiUtP3XSbHqW0BLz9kMBTVAdyyZ6D6Icz 3AMA== X-Gm-Message-State: APjAAAUipPTiD6n7y3HGXsE4ktnyKmJSXTT/fd3aWOMNwWPdC8FSiaSI 4Z3gggB8W0wsOOb3bNHsHqOvJquBiJUAx9tHSVO3GzUk X-Google-Smtp-Source: APXvYqzlNEb94uhEQLt6Jw5wuI9vcGsR42VEzKr926vqP2VPZYyqpreMKwSZiLP1/3XFwmnQDCxZE5mLmZgAuE+40FY= X-Received: by 2002:a81:b616:: with SMTP id u22mr19436938ywh.80.1571200022343; Tue, 15 Oct 2019 21:27:02 -0700 (PDT) MIME-Version: 1.0 From: Carlos Pita Date: Wed, 16 Oct 2019 01:26:51 -0300 Message-ID: Subject: To: control@debbugs.gnu.org Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 2.0 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: tags 37689 patch Content analysis details: (2.0 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 SPF_PASS SPF: sender matches SPF record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (carlosjosepita[at]gmail.com) -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [209.85.161.49 listed in list.dnswl.org] 0.0 RCVD_IN_MSPIKE_H3 RBL: Good reputation (+3) [209.85.161.49 listed in wl.mailspike.net] 0.0 RCVD_IN_MSPIKE_WL Mailspike good senders 2.0 BLANK_SUBJECT Subject is present but empty X-Debbugs-Envelope-To: control X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 1.0 (+) tags 37689 patch From debbugs-submit-bounces@debbugs.gnu.org Wed Oct 16 05:17:21 2019 Received: (at 37689) by debbugs.gnu.org; 16 Oct 2019 09:17:21 +0000 Received: from localhost ([127.0.0.1]:45238 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iKfQn-0000NF-1c for submit@debbugs.gnu.org; Wed, 16 Oct 2019 05:17:21 -0400 Received: from mout.gmx.net ([212.227.15.18]:38405) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iKfQh-0000Ml-If for 37689@debbugs.gnu.org; Wed, 16 Oct 2019 05:17:17 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1571217416; bh=+Q+CSUk18OI4P2quj2LuR0fznu0LKpXkQX45t4AMU5A=; h=X-UI-Sender-Class:Subject:To:Cc:References:From:Date:In-Reply-To; b=P0G1/01x5wujvOXlbbZgekDJY87RMO5LWXhqSu7t1kyhRkU6F+e3LD878HOKml0HN jZshYmVzccTacato0jQdC8Bz7WtK0fe6yVsW2/ChaCcBAt6AxdRuAASlmvnyuA6Nzf D3veYmNQgOh5+td6i7+xq8oQwcGdYduMJf+k6wzM= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from [192.168.1.101] ([46.125.249.109]) by mail.gmx.com (mrgmx005 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MI5Q5-1iEsoR1cJD-00F8K6; Wed, 16 Oct 2019 11:16:56 +0200 Subject: Re: bug#37689: Fringe pixmaps, widgets, etc. look ridiculously tiny in hidpi screen To: Carlos Pita , Eli Zaretskii References: <83v9swqz9q.fsf@gnu.org> <835zkrk9q9.fsf@gnu.org> <20191014131955.GC45622@breton.holly.idiocy.org> <83pnizidi3.fsf@gnu.org> <83mue3icjm.fsf@gnu.org> <83lftni815.fsf@gnu.org> <83bluigxu0.fsf@gnu.org> From: martin rudalics Message-ID: <0a1ca6fb-ce34-2ace-ad32-5b3b0193c4e4@gmx.at> Date: Wed, 16 Oct 2019 11:16:54 +0200 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: de-AT Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K1:yhlDJRcnbmhGdskjvhWBoak3nCw5DS/DwyIbL/2JtsGP+Fei2k3 sugFaZPBSV+MJv49VMO4EIFWdeHKZqAb22OXBB7S5BMv5KbHH5MPJVTVbMeiapMxeQXXR/S 9KBix2fzoMRv4IfF79+aQs/dIgXBT6Qi1lRc/SgKM6K+s7d2Eh6FF4nCDr8iFHBlwnqhaE0 GR8/POPvKl6W8VWhIJT3w== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:atJZS/eRTcQ=:wSO+ObyYDLxW3MZHt/I3SQ p2nokLEJoXblOBS3j1F0eiQa++cwbbJKIkpeFf4S+RNvDSPmReKEYnf6j+tNsVcPNOzkylcjs +B9YoUKsDPfH8A9I0crB4F01XYESjO0PDEZdBJcuAJcfbjJOWhAaI4yI76hnrHhugeBuNqJWP qUAVvwDdiQJjFp8rJ/D3U7qypYeb8toq6VHBUp550XVXpOhsL91ZCbij2m1taPHZQNhBkX0Tr PawIVGcyvBLkB4z82CxnPckDO8d3joIg0JcZ6ghYVDpTOoBOMMvwLlpuJocnVuIxvvh0QgaAw Jne0yDvQOyu0+pRsh8/5vCN197o1o+wGHm8R0x2zpNFg9F4UC6WQ3WrgRg72cuSNcVQIhu2OO ALm1D8BuZol6pmJm3rLbvdIk1NYRR5hxwP0jkQiN/eU5WngorReXbF57TFppQBdXAB3JLLRBb CGmmayMOUUYSwL7PS/8R5giJcdvxVpBxMTrExtE139799Z/J4+RnoBdJLPLZM5Uuwt7z/b6N8 /uFK0kPCw72gNCAqVrebjw1MGoE1tp4dTQ9bB42UEZqfLBZg1s5N+OPaKb2cqSHzkfpdj4Ftz A6PZrIJZiyBSL5H3aMVogCDexR1HELuRClyHCM5EXInWq6caEB6R81k5a+1hu9YJUQL9I+pWv UevMCk0hyK6fGo0KsgP97T87y8YAZ0pUEyd5da5LpPOj8bFVGcc+wHRpROZkkNQlzv7wpbeWc 2WYHUm4EJXnzWlOhsAiGeTmsHCGOSjz5MA8XwvjaQ9k0FYWN9CIooxiGKN5bZl+9Ui1LZ3CD6 yjfKvTKEp/WBRXeF9cdckG1RTmL1F9g4z2A6UMS6bLm2gZ64obQAgopFQ0aXumxWaQs5xQ4Ch gTGpyLeauDG5vvp5CgabjVG5xdastPs0BPuhNI78Eex+GmMzlPTx2ukffO1vO9hODp4myY2ri lqZP3Xh2i6jlyABA2sRY5eUhajyN3EhwlLWF4taw8WCphSMa1VbgaC6XRwKpZDVzU33zmDcU1 CFkjpdHdPiaRojLw1YxDbA3/VBpGFiufDTryfVsMPw5MMqnIw8f89o8MI1LARj1Raqe9aYwvW AjBlqSgbR5xrQO+zB2CSlAXW+e9nwVRckifB6YccNYuqNqUjE87ezRvCqvSanlI+8RCDpApnW ZfxNKjCb/cj1N+g+Vro0eSS8HDiYM/tE1iHXzUWOwPBUNIMjo+lbtUsiar4+B2YZkI3BkMCiT Hv2jtXFEkwwst5iEq4KNLZSUr1H8NKZuBqKSZE7QXYGpLMmobdZ8c+mAkedo= X-Spam-Score: 3.6 (+++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: > +#define WINDOW_SCALE_FACTOR(W) \ Please just call it WINDOW_FRAME_SCALE_FACTOR or FRAME_SCALE_FACTOR. WINDOW_SCALE_FACTOR implies that it could be different for different windows on the same frame. Content analysis details: (3.6 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [212.227.15.18 listed in list.dnswl.org] 3.6 RCVD_IN_SBL_CSS RBL: Received via a relay in Spamhaus SBL-CSS [46.125.249.109 listed in zen.spamhaus.org] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 SPF_PASS SPF: sender matches SPF record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (rudalics[at]gmx.at) X-Debbugs-Envelope-To: 37689 Cc: Alan Third , Robert Pluim , 37689@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 2.6 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: > +#define WINDOW_SCALE_FACTOR(W) \ Please just call it WINDOW_FRAME_SCALE_FACTOR or FRAME_SCALE_FACTOR. WINDOW_SCALE_FACTOR implies that it could be different for different windows on the same frame. Content analysis details: (2.6 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [212.227.15.18 listed in list.dnswl.org] 3.6 RCVD_IN_SBL_CSS RBL: Received via a relay in Spamhaus SBL-CSS [46.125.249.109 listed in zen.spamhaus.org] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 SPF_PASS SPF: sender matches SPF record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (rudalics[at]gmx.at) -1.0 MAILING_LIST_MULTI Multiple indicators imply a widely-seen list manager > +#define WINDOW_SCALE_FACTOR(W) \ Please just call it WINDOW_FRAME_SCALE_FACTOR or FRAME_SCALE_FACTOR. WINDOW_SCALE_FACTOR implies that it could be different for different windows on the same frame. martin From debbugs-submit-bounces@debbugs.gnu.org Wed Oct 16 12:31:27 2019 Received: (at 37689) by debbugs.gnu.org; 16 Oct 2019 16:31:27 +0000 Received: from localhost ([127.0.0.1]:46437 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iKmCt-0004mN-7v for submit@debbugs.gnu.org; Wed, 16 Oct 2019 12:31:27 -0400 Received: from mail-yw1-f66.google.com ([209.85.161.66]:40235) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iKmCr-0004m8-KO for 37689@debbugs.gnu.org; Wed, 16 Oct 2019 12:31:26 -0400 Received: by mail-yw1-f66.google.com with SMTP id e205so8864115ywc.7 for <37689@debbugs.gnu.org>; Wed, 16 Oct 2019 09:31:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=YD0XuV+Vzqv6tRdm0ErIAzVdeLeeUhv3hbvov2gfrI4=; b=FH6vFweHZyy/87nLOPTI/Ii0CNy5sMkwIxqdfaLdzGSntckl0sU7pU/mAlUGrBL+vg 2baaAw/T9+SZduNeHpCTP50/5ld99U0J0pmUQWWX8V8ovOobtH+QaKahjLXkn4k+9pNl Mlt/GbFxErw9zdfL0W1AKkzcSoKCI05PHyYctIXnuMYBkeDlEIyJzSNnQBmlhfGjXs5V ntkCBmU50tC9vbOvk7cu4DE5HxBAfTef53/F80TazJCtyaq6FpBDX45gWHP1iOx2M1s8 65jBUrB2hFCcHYicGgBO60B81HHWuxUiNUACgWcA7a30jPcWqSpYeNTGRzhowA0A16w5 rWzQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=YD0XuV+Vzqv6tRdm0ErIAzVdeLeeUhv3hbvov2gfrI4=; b=HFUftvFLPDxUipVnyE3GHp/hXr+GqVWr1GOK2NlOyusnsHiiXPNEekjsX/RUAMUaVe C42rMKTtNqn24yvp4eFN8+B3ypqtbkjqXmUHHnkDqt499cVs7vSrsGccVYs+Lvenwags wagVtJdO2oPmjBxzHXBJ5a9RNlCDnx1CaNa5QvWOAdZoaaeEbsQj2qzmoQdcBTWTzXpV JE6+BAtqON0bCLcF0uXiIw8mQxW+mo1i5LUkr+VQGfgpyviogdCk2cjBcW8Iy8PF12o+ UO+kQBTYW1gC+KeyoTrJciS2mo6IO/OiyTYqbnQkEe30k2fPbLksDdtJiKKbO6czlGnY kg2g== X-Gm-Message-State: APjAAAXFnOUw2q5oP9Idpuw5df0TlirJVK1B1SORB1th4ycjjb2o/bsV KnlawAcMzcFl5fIdOZJhBEUudhodAU2/BjdT0Uc= X-Google-Smtp-Source: APXvYqyOXVWksnEX9xerRydCYvB3bygTy9X8dq97VqMxeI3EgU/ltc2LQqmAs5X6A0Y/H416saGM01jsOGNCzEOSmvE= X-Received: by 2002:a81:996:: with SMTP id 144mr22468612ywj.57.1571243478624; Wed, 16 Oct 2019 09:31:18 -0700 (PDT) MIME-Version: 1.0 References: <83v9swqz9q.fsf@gnu.org> <835zkrk9q9.fsf@gnu.org> <20191014131955.GC45622@breton.holly.idiocy.org> <83pnizidi3.fsf@gnu.org> <83mue3icjm.fsf@gnu.org> <83lftni815.fsf@gnu.org> <83bluigxu0.fsf@gnu.org> <0a1ca6fb-ce34-2ace-ad32-5b3b0193c4e4@gmx.at> In-Reply-To: <0a1ca6fb-ce34-2ace-ad32-5b3b0193c4e4@gmx.at> From: Carlos Pita Date: Wed, 16 Oct 2019 13:31:06 -0300 Message-ID: Subject: Re: bug#37689: Fringe pixmaps, widgets, etc. look ridiculously tiny in hidpi screen To: martin rudalics Content-Type: multipart/mixed; boundary="00000000000066e2d0059509a1b5" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 37689 Cc: Eli Zaretskii , Alan Third , 37689@debbugs.gnu.org, Robert Pluim X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --00000000000066e2d0059509a1b5 Content-Type: text/plain; charset="UTF-8" > Please just call it WINDOW_FRAME_SCALE_FACTOR or FRAME_SCALE_FACTOR. > WINDOW_SCALE_FACTOR implies that it could be different for different > windows on the same frame. Good point, I've changed the name to WINDOW_FRAME_SCALE_FACTOR. I've a bad feeling towards the conditional hidden behind that macro, though. It's necessary because WINDOW_LEFT/RIGHT_FRINGE_WIDTH are being called in contexts where the rif is still unavailable; so knowing of no other sensible default, I just defaulted to 1. Now, there is a bad smell in these requests for geometry parameters in places where the exact geometry may still be unknown (although I believe geometry is indeed known because, even if there isn't a rif, cursory debugging shows that there already is a frame in all problematic cases). So either these usages asume geometry is not dependent on the current screen or, less problematically and more probably, the rif is being initialized too late. A careful inspection of every use place is a lot of work (I might be doing some of it next weekend, though) so for now I'm just returning a sane default so that we can safely move forward. --00000000000066e2d0059509a1b5 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Make-fringe-honour-scale-factor-in-Cairo-backend.patch" Content-Disposition: attachment; filename="0001-Make-fringe-honour-scale-factor-in-Cairo-backend.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_k1thnx920 RnJvbSA2Y2U4NjIzNjBiYzkzNjk5MTZhMjVjOTMzYmY0YTg0Yjk4OTg0OWI2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBtZW1lcGxleCA8Y2FybG9zam9zZXBpdGFAZ21haWwuY29tPgpE YXRlOiBXZWQsIDE2IE9jdCAyMDE5IDAxOjE4OjQ5IC0wMzAwClN1YmplY3Q6IFtQQVRDSF0gTWFr ZSBmcmluZ2UgaG9ub3VyIHNjYWxlIGZhY3RvciBpbiBDYWlybyBiYWNrZW5kCgoqIHNyYy9mcmlu Z2UuYzogc2NhbGUgYml0bWFwIHdpdGggYW5kIGhlaWdodAoqIHNyYy94dGVybS5jOiBzZXQgZGV2 aWNlIHNjYWxlLgoqIHNlYy93aW5kb3cuaDogc2NhbGUgV0lORE9XX0xFRlQvUklHSFRfRlJJTkdF X1dJRFRIIG1hY3JvcwotLS0KIHNyYy9mcmluZ2UuYyB8ICA1ICsrKy0tCiBzcmMvd2luZG93Lmgg fCAxNCArKysrKysrKysrLS0tLQogc3JjL3h0ZXJtLmMgIHwgIDIgKysKIDMgZmlsZXMgY2hhbmdl ZCwgMTUgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvZnJp bmdlLmMgYi9zcmMvZnJpbmdlLmMKaW5kZXggMjJmM2JkYy4uNTI0MmU4NCAxMDA2NDQKLS0tIGEv c3JjL2ZyaW5nZS5jCisrKyBiL3NyYy9mcmluZ2UuYwpAQCAtNTYzLDYgKzU2Myw3IEBAIGRyYXdf ZnJpbmdlX2JpdG1hcF8xIChzdHJ1Y3Qgd2luZG93ICp3LCBzdHJ1Y3QgZ2x5cGhfcm93ICpyb3cs IGludCBsZWZ0X3AsIGludCBvCiAgIGludCBwZXJpb2Q7CiAgIGludCBmYWNlX2lkID0gREVGQVVM VF9GQUNFX0lEOwogICBpbnQgb2Zmc2V0LCBoZWFkZXJfbGluZV9oZWlnaHQ7CisgIGRvdWJsZSBz Y2FsZSA9IEZSQU1FX1JJRiAoZiktPmdldF9zY2FsZV9mYWN0b3IgKGYpOwogCiAgIHAub3Zlcmxh eV9wID0gKG92ZXJsYXkgJiAxKSA9PSAxOwogICBwLmN1cnNvcl9wID0gKG92ZXJsYXkgJiAyKSA9 PSAyOwpAQCAtNjAyLDkgKzYwMyw5IEBAIGRyYXdfZnJpbmdlX2JpdG1hcF8xIChzdHJ1Y3Qgd2lu ZG93ICp3LCBzdHJ1Y3QgZ2x5cGhfcm93ICpyb3csIGludCBsZWZ0X3AsIGludCBvCiAKICAgcC53 aGljaCA9IHdoaWNoOwogICBwLmJpdHMgPSBmYi0+Yml0czsKLSAgcC53ZCA9IGZiLT53aWR0aDsK KyAgcC53ZCA9IGZiLT53aWR0aCAqIHNjYWxlOwogCi0gIHAuaCA9IGZiLT5oZWlnaHQ7CisgIHAu aCA9IGZiLT5oZWlnaHQgKiBzY2FsZTsKICAgcC5kaCA9IChwZXJpb2QgPiAwID8gKHAueSAlIHBl cmlvZCkgOiAwKTsKICAgcC5oIC09IHAuZGg7CiAKZGlmZiAtLWdpdCBhL3NyYy93aW5kb3cuaCBi L3NyYy93aW5kb3cuaAppbmRleCA3MTk0NmE1Li43OTM3ZDFlIDEwMDY0NAotLS0gYS9zcmMvd2lu ZG93LmgKKysrIGIvc3JjL3dpbmRvdy5oCkBAIC04MjcsMTYgKzgyNywyMiBAQCAjZGVmaW5lIFdJ TkRPV19NQVJHSU5TX1dJRFRIKFcpCQkJXAogICAoV0lORE9XX0xFRlRfTUFSR0lOX1dJRFRIIChX KQkJCVwKICAgICsgV0lORE9XX1JJR0hUX01BUkdJTl9XSURUSCAoVykpCiAKKyNkZWZpbmUgV0lO RE9XX1NDQUxFX0ZBQ1RPUihXKQkJCQkJCQlcCisgIChGUkFNRV9SSUYgKFdJTkRPV19YRlJBTUUg KFcpKSA9PSAwID8gMQkJCQkJXAorICAgOiBGUkFNRV9SSUYgKFdJTkRPV19YRlJBTUUgKFcpKS0+ Z2V0X3NjYWxlX2ZhY3RvciAoV0lORE9XX1hGUkFNRSAoVykpKQorCiAvKiBQaXhlbC13aWR0aHMg b2YgZnJpbmdlcy4gICovCiAjZGVmaW5lIFdJTkRPV19MRUZUX0ZSSU5HRV9XSURUSChXKQkJCVwK LSAgKFctPmxlZnRfZnJpbmdlX3dpZHRoID49IDAJCQkJXAorICAoKFctPmxlZnRfZnJpbmdlX3dp ZHRoID49IDAJCQkJXAogICAgPyBXLT5sZWZ0X2ZyaW5nZV93aWR0aAkJCQlcCi0gICA6IEZSQU1F X0xFRlRfRlJJTkdFX1dJRFRIIChXSU5ET1dfWEZSQU1FIChXKSkpCisgICA6IEZSQU1FX0xFRlRf RlJJTkdFX1dJRFRIIChXSU5ET1dfWEZSQU1FIChXKSkpCVwKKyAgICogV0lORE9XX1NDQUxFX0ZB Q1RPUiAoVykpCiAKICNkZWZpbmUgV0lORE9XX1JJR0hUX0ZSSU5HRV9XSURUSChXKQkJCVwKLSAg KFctPnJpZ2h0X2ZyaW5nZV93aWR0aCA+PSAwCQkJCVwKKyAgKChXLT5yaWdodF9mcmluZ2Vfd2lk dGggPj0gMAkJCQlcCiAgICA/IFctPnJpZ2h0X2ZyaW5nZV93aWR0aAkJCQlcCi0gICA6IEZSQU1F X1JJR0hUX0ZSSU5HRV9XSURUSCAoV0lORE9XX1hGUkFNRSAoVykpKQorICAgOiBGUkFNRV9SSUdI VF9GUklOR0VfV0lEVEggKFdJTkRPV19YRlJBTUUgKFcpKSkJXAorICAgKiBXSU5ET1dfU0NBTEVf RkFDVE9SIChXKSkKIAogI2RlZmluZSBXSU5ET1dfRlJJTkdFU19XSURUSChXKQkJXAogICAoV0lO RE9XX0xFRlRfRlJJTkdFX1dJRFRIIChXKSArIFdJTkRPV19SSUdIVF9GUklOR0VfV0lEVEggKFcp KQpkaWZmIC0tZ2l0IGEvc3JjL3h0ZXJtLmMgYi9zcmMveHRlcm0uYwppbmRleCA2NzI1M2E2Li5i ZjFhYmEyIDEwMDY0NAotLS0gYS9zcmMveHRlcm0uYworKysgYi9zcmMveHRlcm0uYwpAQCAtNjA4 LDYgKzYwOCw3IEBAIHhfY3JfZHJhd19pbWFnZSAoc3RydWN0IGZyYW1lICpmLCBHQyBnYywgY2Fp cm9fcGF0dGVybl90ICppbWFnZSwKIAkJIGludCBkZXN0X3gsIGludCBkZXN0X3ksIGJvb2wgb3Zl cmxheV9wKQogewogICBjYWlyb190ICpjciA9IHhfYmVnaW5fY3JfY2xpcCAoZiwgZ2MpOworICBk b3VibGUgc2NhbGUgPSBGUkFNRV9SSUYgKGYpLT5nZXRfc2NhbGVfZmFjdG9yIChmKTsKIAogICBp ZiAob3ZlcmxheV9wKQogICAgIGNhaXJvX3JlY3RhbmdsZSAoY3IsIGRlc3RfeCwgZGVzdF95LCB3 aWR0aCwgaGVpZ2h0KTsKQEAgLTYyMiw2ICs2MjMsNyBAQCB4X2NyX2RyYXdfaW1hZ2UgKHN0cnVj dCBmcmFtZSAqZiwgR0MgZ2MsIGNhaXJvX3BhdHRlcm5fdCAqaW1hZ2UsCiAKICAgY2Fpcm9fc3Vy ZmFjZV90ICpzdXJmYWNlOwogICBjYWlyb19wYXR0ZXJuX2dldF9zdXJmYWNlIChpbWFnZSwgJnN1 cmZhY2UpOworICBjYWlyb19zdXJmYWNlX3NldF9kZXZpY2Vfc2NhbGUgKHN1cmZhY2UsIDEuIC8g c2NhbGUsIDEuIC8gc2NhbGUpOwogICBjYWlyb19mb3JtYXRfdCBmb3JtYXQgPSBjYWlyb19pbWFn ZV9zdXJmYWNlX2dldF9mb3JtYXQgKHN1cmZhY2UpOwogICBpZiAoZm9ybWF0ICE9IENBSVJPX0ZP Uk1BVF9BOCAmJiBmb3JtYXQgIT0gQ0FJUk9fRk9STUFUX0ExKQogICAgIHsKLS0gCjIuMjAuMQoK --00000000000066e2d0059509a1b5-- From debbugs-submit-bounces@debbugs.gnu.org Wed Oct 16 12:40:44 2019 Received: (at 37689) by debbugs.gnu.org; 16 Oct 2019 16:40:44 +0000 Received: from localhost ([127.0.0.1]:46446 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iKmLs-000509-GL for submit@debbugs.gnu.org; Wed, 16 Oct 2019 12:40:44 -0400 Received: from mail-yb1-f196.google.com ([209.85.219.196]:37200) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iKmLq-0004zx-VH for 37689@debbugs.gnu.org; Wed, 16 Oct 2019 12:40:43 -0400 Received: by mail-yb1-f196.google.com with SMTP id z125so8022716ybc.4 for <37689@debbugs.gnu.org>; Wed, 16 Oct 2019 09:40:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=WaapqgQ3FP8qJX5YUsWcExUruhzulvHZxOMfnyQCKjw=; b=QTfj/k1HdbrwNTKjfF0CMl+Yr+odNj6wmmwj6DOu3YAZpq/+QTNqoCda38zm3i/KmO RZpgmUwsD4Rdm2xPsa+6iA2g660VdChfxxSsGkP/+3pzbT8UChOI1RTqafMQjc+Zuhb9 DnKZkUUWGwhf3qo6dkzPpTxpKHfX+lc2HuR61zp4j+7w3gZUZj8GDTtx3Wm79rRVKwQy vru/xnI5N4/tfPxpcs0E09gizk/eCFANeQpIo4J2B04CVhcqljY6Rhrthr7om5fqFB6z sJxGwbQCFP+05dvevInpbPUGD47ddKnERrGScdtXWON3gR8TzrvbxZzROsBFWfIrzOdO r0cw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=WaapqgQ3FP8qJX5YUsWcExUruhzulvHZxOMfnyQCKjw=; b=BrQYVnbt6l0/9qC1M66UfQzHiVKtqeQTY5ZZXzQ8PaeJ5kOmvdQH7U7ND7PjqFrUaK S5f6ORrsfk05YMi4Vr1hYKrByiHdwgS3DOpC73wQjgvPDVgVbh4lMtbByDIaX5jw0t8B TrQ162iN4funo412PGALyL4r54fVhY7sf9FGK2yAQozq0strL/bJi635daekwHJSwW6Z X2OUyM9V05+fQxB8/bdDRf3nRSJg1UWesVJ3VINPGVTFaNOMqLOdwLBIwCUwf+81AR+g AihckhbWCmR6+9rMmQC+MW9BWxYcqHlDa/c7kpnQwtdt3ITDk3QHiHt5SMcYDIb3tPaA Yu3g== X-Gm-Message-State: APjAAAXyYr+N93KOW7PGEZ410BlrrPFni8ogv4WhpvplTKvVjEZVEx6m 0Hu9V9KZRFUpW5nqbkCY0miqbPfvr3Xxdxt+oZ0= X-Google-Smtp-Source: APXvYqzuNZPp4Rb2MVN70/OalGgKSQdhzlTlDrfi4JmmI52FZVe8m6an1uUzy5AciUmn1icf9JF5daHqNLz0huGraUg= X-Received: by 2002:a25:e7cf:: with SMTP id e198mr26049928ybh.334.1571244037197; Wed, 16 Oct 2019 09:40:37 -0700 (PDT) MIME-Version: 1.0 References: <83v9swqz9q.fsf@gnu.org> <835zkrk9q9.fsf@gnu.org> <20191014131955.GC45622@breton.holly.idiocy.org> <83pnizidi3.fsf@gnu.org> <83mue3icjm.fsf@gnu.org> <83lftni815.fsf@gnu.org> <83bluigxu0.fsf@gnu.org> <0a1ca6fb-ce34-2ace-ad32-5b3b0193c4e4@gmx.at> In-Reply-To: From: Carlos Pita Date: Wed, 16 Oct 2019 13:40:25 -0300 Message-ID: Subject: Re: bug#37689: Fringe pixmaps, widgets, etc. look ridiculously tiny in hidpi screen To: martin rudalics Content-Type: multipart/mixed; boundary="000000000000b16a96059509c252" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 37689 Cc: Eli Zaretskii , Alan Third , 37689@debbugs.gnu.org, Robert Pluim X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --000000000000b16a96059509c252 Content-Type: text/plain; charset="UTF-8" Sorry, this is the right patch. --000000000000b16a96059509c252 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Make-fringe-honour-scale-factor-in-Cairo-backend.patch" Content-Disposition: attachment; filename="0001-Make-fringe-honour-scale-factor-in-Cairo-backend.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_k1ti3mg10 RnJvbSA2YjhkYmM4MDU1YzY3ZmVhMWIwMWVjZjg0ZTllNzUxZjk5MTllOWM1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBtZW1lcGxleCA8Y2FybG9zam9zZXBpdGFAZ21haWwuY29tPgpE YXRlOiBXZWQsIDE2IE9jdCAyMDE5IDAxOjE4OjQ5IC0wMzAwClN1YmplY3Q6IFtQQVRDSF0gTWFr ZSBmcmluZ2UgaG9ub3VyIHNjYWxlIGZhY3RvciBpbiBDYWlybyBiYWNrZW5kCgoqIHNyYy9mcmlu Z2UuYzogc2NhbGUgYml0bWFwIHdpdGggYW5kIGhlaWdodAoqIHNyYy94dGVybS5jOiBzZXQgZGV2 aWNlIHNjYWxlLgoqIHNlYy93aW5kb3cuaDogc2NhbGUgV0lORE9XX0xFRlQvUklHSFRfRlJJTkdF X1dJRFRIIG1hY3JvcwotLS0KIHNyYy9mcmluZ2UuYyB8ICA1ICsrKy0tCiBzcmMvd2luZG93Lmgg fCAxNCArKysrKysrKysrLS0tLQogc3JjL3h0ZXJtLmMgIHwgIDIgKysKIDMgZmlsZXMgY2hhbmdl ZCwgMTUgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvZnJp bmdlLmMgYi9zcmMvZnJpbmdlLmMKaW5kZXggMjJmM2JkYy4uNTI0MmU4NCAxMDA2NDQKLS0tIGEv c3JjL2ZyaW5nZS5jCisrKyBiL3NyYy9mcmluZ2UuYwpAQCAtNTYzLDYgKzU2Myw3IEBAIGRyYXdf ZnJpbmdlX2JpdG1hcF8xIChzdHJ1Y3Qgd2luZG93ICp3LCBzdHJ1Y3QgZ2x5cGhfcm93ICpyb3cs IGludCBsZWZ0X3AsIGludCBvCiAgIGludCBwZXJpb2Q7CiAgIGludCBmYWNlX2lkID0gREVGQVVM VF9GQUNFX0lEOwogICBpbnQgb2Zmc2V0LCBoZWFkZXJfbGluZV9oZWlnaHQ7CisgIGRvdWJsZSBz Y2FsZSA9IEZSQU1FX1JJRiAoZiktPmdldF9zY2FsZV9mYWN0b3IgKGYpOwogCiAgIHAub3Zlcmxh eV9wID0gKG92ZXJsYXkgJiAxKSA9PSAxOwogICBwLmN1cnNvcl9wID0gKG92ZXJsYXkgJiAyKSA9 PSAyOwpAQCAtNjAyLDkgKzYwMyw5IEBAIGRyYXdfZnJpbmdlX2JpdG1hcF8xIChzdHJ1Y3Qgd2lu ZG93ICp3LCBzdHJ1Y3QgZ2x5cGhfcm93ICpyb3csIGludCBsZWZ0X3AsIGludCBvCiAKICAgcC53 aGljaCA9IHdoaWNoOwogICBwLmJpdHMgPSBmYi0+Yml0czsKLSAgcC53ZCA9IGZiLT53aWR0aDsK KyAgcC53ZCA9IGZiLT53aWR0aCAqIHNjYWxlOwogCi0gIHAuaCA9IGZiLT5oZWlnaHQ7CisgIHAu aCA9IGZiLT5oZWlnaHQgKiBzY2FsZTsKICAgcC5kaCA9IChwZXJpb2QgPiAwID8gKHAueSAlIHBl cmlvZCkgOiAwKTsKICAgcC5oIC09IHAuZGg7CiAKZGlmZiAtLWdpdCBhL3NyYy93aW5kb3cuaCBi L3NyYy93aW5kb3cuaAppbmRleCA3MTk0NmE1Li5hYzY2YWY4IDEwMDY0NAotLS0gYS9zcmMvd2lu ZG93LmgKKysrIGIvc3JjL3dpbmRvdy5oCkBAIC04MjcsMTYgKzgyNywyMiBAQCAjZGVmaW5lIFdJ TkRPV19NQVJHSU5TX1dJRFRIKFcpCQkJXAogICAoV0lORE9XX0xFRlRfTUFSR0lOX1dJRFRIIChX KQkJCVwKICAgICsgV0lORE9XX1JJR0hUX01BUkdJTl9XSURUSCAoVykpCiAKKyNkZWZpbmUgV0lO RE9XX0ZSQU1FX1NDQUxFX0ZBQ1RPUihXKQkJXAorICAoRlJBTUVfUklGIChXSU5ET1dfWEZSQU1F IChXKSkgPT0gMCA/IDEJXAorICAgOiBGUkFNRV9SSUYgKFdJTkRPV19YRlJBTUUgKFcpKS0+Z2V0 X3NjYWxlX2ZhY3RvciAoV0lORE9XX1hGUkFNRSAoVykpKQorCiAvKiBQaXhlbC13aWR0aHMgb2Yg ZnJpbmdlcy4gICovCiAjZGVmaW5lIFdJTkRPV19MRUZUX0ZSSU5HRV9XSURUSChXKQkJCVwKLSAg KFctPmxlZnRfZnJpbmdlX3dpZHRoID49IDAJCQkJXAorICAoKFctPmxlZnRfZnJpbmdlX3dpZHRo ID49IDAJCQkJXAogICAgPyBXLT5sZWZ0X2ZyaW5nZV93aWR0aAkJCQlcCi0gICA6IEZSQU1FX0xF RlRfRlJJTkdFX1dJRFRIIChXSU5ET1dfWEZSQU1FIChXKSkpCisgICA6IEZSQU1FX0xFRlRfRlJJ TkdFX1dJRFRIIChXSU5ET1dfWEZSQU1FIChXKSkpCVwKKyAgICogV0lORE9XX0ZSQU1FX1NDQUxF X0ZBQ1RPUiAoVykpCiAKICNkZWZpbmUgV0lORE9XX1JJR0hUX0ZSSU5HRV9XSURUSChXKQkJCVwK LSAgKFctPnJpZ2h0X2ZyaW5nZV93aWR0aCA+PSAwCQkJCVwKKyAgKChXLT5yaWdodF9mcmluZ2Vf d2lkdGggPj0gMAkJCQlcCiAgICA/IFctPnJpZ2h0X2ZyaW5nZV93aWR0aAkJCQlcCi0gICA6IEZS QU1FX1JJR0hUX0ZSSU5HRV9XSURUSCAoV0lORE9XX1hGUkFNRSAoVykpKQorICAgOiBGUkFNRV9S SUdIVF9GUklOR0VfV0lEVEggKFdJTkRPV19YRlJBTUUgKFcpKSkJXAorICAgKiBXSU5ET1dfRlJB TUVfU0NBTEVfRkFDVE9SIChXKSkKIAogI2RlZmluZSBXSU5ET1dfRlJJTkdFU19XSURUSChXKQkJ XAogICAoV0lORE9XX0xFRlRfRlJJTkdFX1dJRFRIIChXKSArIFdJTkRPV19SSUdIVF9GUklOR0Vf V0lEVEggKFcpKQpkaWZmIC0tZ2l0IGEvc3JjL3h0ZXJtLmMgYi9zcmMveHRlcm0uYwppbmRleCA2 NzI1M2E2Li5iZjFhYmEyIDEwMDY0NAotLS0gYS9zcmMveHRlcm0uYworKysgYi9zcmMveHRlcm0u YwpAQCAtNjA4LDYgKzYwOCw3IEBAIHhfY3JfZHJhd19pbWFnZSAoc3RydWN0IGZyYW1lICpmLCBH QyBnYywgY2Fpcm9fcGF0dGVybl90ICppbWFnZSwKIAkJIGludCBkZXN0X3gsIGludCBkZXN0X3ks IGJvb2wgb3ZlcmxheV9wKQogewogICBjYWlyb190ICpjciA9IHhfYmVnaW5fY3JfY2xpcCAoZiwg Z2MpOworICBkb3VibGUgc2NhbGUgPSBGUkFNRV9SSUYgKGYpLT5nZXRfc2NhbGVfZmFjdG9yIChm KTsKIAogICBpZiAob3ZlcmxheV9wKQogICAgIGNhaXJvX3JlY3RhbmdsZSAoY3IsIGRlc3RfeCwg ZGVzdF95LCB3aWR0aCwgaGVpZ2h0KTsKQEAgLTYyMiw2ICs2MjMsNyBAQCB4X2NyX2RyYXdfaW1h Z2UgKHN0cnVjdCBmcmFtZSAqZiwgR0MgZ2MsIGNhaXJvX3BhdHRlcm5fdCAqaW1hZ2UsCiAKICAg Y2Fpcm9fc3VyZmFjZV90ICpzdXJmYWNlOwogICBjYWlyb19wYXR0ZXJuX2dldF9zdXJmYWNlIChp bWFnZSwgJnN1cmZhY2UpOworICBjYWlyb19zdXJmYWNlX3NldF9kZXZpY2Vfc2NhbGUgKHN1cmZh Y2UsIDEuIC8gc2NhbGUsIDEuIC8gc2NhbGUpOwogICBjYWlyb19mb3JtYXRfdCBmb3JtYXQgPSBj YWlyb19pbWFnZV9zdXJmYWNlX2dldF9mb3JtYXQgKHN1cmZhY2UpOwogICBpZiAoZm9ybWF0ICE9 IENBSVJPX0ZPUk1BVF9BOCAmJiBmb3JtYXQgIT0gQ0FJUk9fRk9STUFUX0ExKQogICAgIHsKLS0g CjIuMjAuMQoK --000000000000b16a96059509c252-- From debbugs-submit-bounces@debbugs.gnu.org Wed Oct 16 15:01:50 2019 Received: (at 37689) by debbugs.gnu.org; 16 Oct 2019 19:01:50 +0000 Received: from localhost ([127.0.0.1]:46555 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iKoYP-00009B-TH for submit@debbugs.gnu.org; Wed, 16 Oct 2019 15:01:50 -0400 Received: from mail-yw1-f67.google.com ([209.85.161.67]:42800) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iKoYO-00008x-1B for 37689@debbugs.gnu.org; Wed, 16 Oct 2019 15:01:48 -0400 Received: by mail-yw1-f67.google.com with SMTP id i207so9016890ywc.9 for <37689@debbugs.gnu.org>; Wed, 16 Oct 2019 12:01:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=g1bLXPdtNh9vyF0oWUGB0E7QMjT+1xyArGmaiByw/sc=; b=njE+YZJJ7Xr8lr0ZN75y1G1Ayv/l7laICfxraOf42v5rRxmIRw72rz9Smcv9Y1AcBs P8fpKt1vT2NePHPqx8JlfJJtE3sRDnjgiPmsxjzgq0Ho6NoUvK4Wy/62xwkzjGfPdzEX +EJxqtPfyk4VqTQJOOH9LeDUdQRBaXt7nFcvE7VqyqI9o/T3EuQK8nj65JjVQ/D2CWML juMIYmcrT42sinIkrSKYCTCeSSCPg7YIAXNrdJNGX5hKT0EMeOE75u4Tcqme6mzBdET/ WgLiHebQAd6JDlf4bZSP9Pf9VuRZV4AcfYFwpJEdHN3DRlcXJDvLgvlth7nBmua/5gva BR0w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=g1bLXPdtNh9vyF0oWUGB0E7QMjT+1xyArGmaiByw/sc=; b=gC/G9by8UkjA9He6i1QkMRzak0Xr5zTAZtJP3r3TBtZwGHkjv3OlC8uqE2pFqTTzmQ KiID9NcX63fJOdKEiR8mhyJI//5wKc45vRJSHudVjYRvKOHpb61Om68W6hMvVu0dqIy0 Jl99sTzlKXK5DSi1evx/Y6zuqh5T5+FmhzwdyZj/Qkg9ZRFW+AOhCgz/ypYf4fWL3txK 02XpjZwyR6tyCUgSpCSoxAzLPaaosXORkOHLNaERKRcLRDLPlG3Mn9Mha17El9fCW+v4 VMqif96PvyvkEFtfwZ8fcQGwRYlwMqUie9UmK1cfN0BlyiSsEJDeJH6FklSti0SHInfT jzlg== X-Gm-Message-State: APjAAAVMUqrDjvvXqoefgWGVM8GkIogB8UJSdBaD14Ev6L72A+CGXWXL mjRBY0ZkKOJItSzT4cFY+xn4JZ4/o0ngIPY5GfwNuOJC X-Google-Smtp-Source: APXvYqxUOArDUeua8qpYZWxyhTbFetosEmrniwLRVvgANYXc9CANqxM5h4nWUkRj2UN2DPDNTFbmYmFTAxJuJqJm4l4= X-Received: by 2002:a81:70d6:: with SMTP id l205mr22852948ywc.297.1571252502227; Wed, 16 Oct 2019 12:01:42 -0700 (PDT) MIME-Version: 1.0 References: <83v9swqz9q.fsf@gnu.org> <835zkrk9q9.fsf@gnu.org> <20191014131955.GC45622@breton.holly.idiocy.org> <83pnizidi3.fsf@gnu.org> <83mue3icjm.fsf@gnu.org> <83lftni815.fsf@gnu.org> <83bluigxu0.fsf@gnu.org> <0a1ca6fb-ce34-2ace-ad32-5b3b0193c4e4@gmx.at> In-Reply-To: From: Carlos Pita Date: Wed, 16 Oct 2019 16:01:30 -0300 Message-ID: Subject: Re: bug#37689: Fringe pixmaps, widgets, etc. look ridiculously tiny in hidpi screen To: martin rudalics Content-Type: multipart/mixed; boundary="0000000000003fbf8905950bbb60" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 37689 Cc: Eli Zaretskii , Alan Third , 37689@debbugs.gnu.org, Robert Pluim X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --0000000000003fbf8905950bbb60 Content-Type: text/plain; charset="UTF-8" Improved the commit message to hopefully match CONTRIBUTING rules. --0000000000003fbf8905950bbb60 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Make-fringe-honour-scale-factor-in-Cairo-backend-Bug.patch" Content-Disposition: attachment; filename="0001-Make-fringe-honour-scale-factor-in-Cairo-backend-Bug.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_k1tn543h0 RnJvbSBlYWU0ODJlNTEwM2I4MjY0MjMwNmU1NWMwYzZmYzk4NWQ0NmIzNmJiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBtZW1lcGxleCA8Y2FybG9zam9zZXBpdGFAZ21haWwuY29tPgpE YXRlOiBXZWQsIDE2IE9jdCAyMDE5IDAxOjE4OjQ5IC0wMzAwClN1YmplY3Q6IFtQQVRDSF0gTWFr ZSBmcmluZ2UgaG9ub3VyIHNjYWxlIGZhY3RvciBpbiBDYWlybyBiYWNrZW5kIChCdWcjMzc2ODkp CgoqIHNyYy9mcmluZ2UuYyAoZHJhd19mcmluZ2VfYml0bWFwXzEpOiBTY2FsZSBiaXRtYXAgd2lk dGggYW5kIGhlaWdodC4KKiBzcmMveHRlcm0uYyAoeF9jcl9kcmF3X2ltYWdlKTogU2V0IGRldmlj ZSBzY2FsZS4KKiBzZWMvd2luZG93LmggKFdJTkRPV19GUkFNRV9TQ0FMRV9GQUNUT1IsIFdJTkRP V19MRUZUX0ZSSU5HRV9XSURUSCkKKFdJTkRPV19SSUdIVF9GUklOR0VfV0lEVEgpOiBBZGQgaGVs cGVyIG1hY3JvIHRvIHNjYWxlIHJlc3VsdC4KLS0tCiBzcmMvZnJpbmdlLmMgfCAgNSArKystLQog c3JjL3dpbmRvdy5oIHwgMTQgKysrKysrKysrKy0tLS0KIHNyYy94dGVybS5jICB8ICAyICsrCiAz IGZpbGVzIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvc3JjL2ZyaW5nZS5jIGIvc3JjL2ZyaW5nZS5jCmluZGV4IDIyZjNiZGMuLjUyNDJlODQg MTAwNjQ0Ci0tLSBhL3NyYy9mcmluZ2UuYworKysgYi9zcmMvZnJpbmdlLmMKQEAgLTU2Myw2ICs1 NjMsNyBAQCBkcmF3X2ZyaW5nZV9iaXRtYXBfMSAoc3RydWN0IHdpbmRvdyAqdywgc3RydWN0IGds eXBoX3JvdyAqcm93LCBpbnQgbGVmdF9wLCBpbnQgbwogICBpbnQgcGVyaW9kOwogICBpbnQgZmFj ZV9pZCA9IERFRkFVTFRfRkFDRV9JRDsKICAgaW50IG9mZnNldCwgaGVhZGVyX2xpbmVfaGVpZ2h0 OworICBkb3VibGUgc2NhbGUgPSBGUkFNRV9SSUYgKGYpLT5nZXRfc2NhbGVfZmFjdG9yIChmKTsK IAogICBwLm92ZXJsYXlfcCA9IChvdmVybGF5ICYgMSkgPT0gMTsKICAgcC5jdXJzb3JfcCA9IChv dmVybGF5ICYgMikgPT0gMjsKQEAgLTYwMiw5ICs2MDMsOSBAQCBkcmF3X2ZyaW5nZV9iaXRtYXBf MSAoc3RydWN0IHdpbmRvdyAqdywgc3RydWN0IGdseXBoX3JvdyAqcm93LCBpbnQgbGVmdF9wLCBp bnQgbwogCiAgIHAud2hpY2ggPSB3aGljaDsKICAgcC5iaXRzID0gZmItPmJpdHM7Ci0gIHAud2Qg PSBmYi0+d2lkdGg7CisgIHAud2QgPSBmYi0+d2lkdGggKiBzY2FsZTsKIAotICBwLmggPSBmYi0+ aGVpZ2h0OworICBwLmggPSBmYi0+aGVpZ2h0ICogc2NhbGU7CiAgIHAuZGggPSAocGVyaW9kID4g MCA/IChwLnkgJSBwZXJpb2QpIDogMCk7CiAgIHAuaCAtPSBwLmRoOwogCmRpZmYgLS1naXQgYS9z cmMvd2luZG93LmggYi9zcmMvd2luZG93LmgKaW5kZXggNzE5NDZhNS4uYWM2NmFmOCAxMDA2NDQK LS0tIGEvc3JjL3dpbmRvdy5oCisrKyBiL3NyYy93aW5kb3cuaApAQCAtODI3LDE2ICs4MjcsMjIg QEAgI2RlZmluZSBXSU5ET1dfTUFSR0lOU19XSURUSChXKQkJCVwKICAgKFdJTkRPV19MRUZUX01B UkdJTl9XSURUSCAoVykJCQlcCiAgICArIFdJTkRPV19SSUdIVF9NQVJHSU5fV0lEVEggKFcpKQog CisjZGVmaW5lIFdJTkRPV19GUkFNRV9TQ0FMRV9GQUNUT1IoVykJCVwKKyAgKEZSQU1FX1JJRiAo V0lORE9XX1hGUkFNRSAoVykpID09IDAgPyAxCVwKKyAgIDogRlJBTUVfUklGIChXSU5ET1dfWEZS QU1FIChXKSktPmdldF9zY2FsZV9mYWN0b3IgKFdJTkRPV19YRlJBTUUgKFcpKSkKKwogLyogUGl4 ZWwtd2lkdGhzIG9mIGZyaW5nZXMuICAqLwogI2RlZmluZSBXSU5ET1dfTEVGVF9GUklOR0VfV0lE VEgoVykJCQlcCi0gIChXLT5sZWZ0X2ZyaW5nZV93aWR0aCA+PSAwCQkJCVwKKyAgKChXLT5sZWZ0 X2ZyaW5nZV93aWR0aCA+PSAwCQkJCVwKICAgID8gVy0+bGVmdF9mcmluZ2Vfd2lkdGgJCQkJXAot ICAgOiBGUkFNRV9MRUZUX0ZSSU5HRV9XSURUSCAoV0lORE9XX1hGUkFNRSAoVykpKQorICAgOiBG UkFNRV9MRUZUX0ZSSU5HRV9XSURUSCAoV0lORE9XX1hGUkFNRSAoVykpKQlcCisgICAqIFdJTkRP V19GUkFNRV9TQ0FMRV9GQUNUT1IgKFcpKQogCiAjZGVmaW5lIFdJTkRPV19SSUdIVF9GUklOR0Vf V0lEVEgoVykJCQlcCi0gIChXLT5yaWdodF9mcmluZ2Vfd2lkdGggPj0gMAkJCQlcCisgICgoVy0+ cmlnaHRfZnJpbmdlX3dpZHRoID49IDAJCQkJXAogICAgPyBXLT5yaWdodF9mcmluZ2Vfd2lkdGgJ CQkJXAotICAgOiBGUkFNRV9SSUdIVF9GUklOR0VfV0lEVEggKFdJTkRPV19YRlJBTUUgKFcpKSkK KyAgIDogRlJBTUVfUklHSFRfRlJJTkdFX1dJRFRIIChXSU5ET1dfWEZSQU1FIChXKSkpCVwKKyAg ICogV0lORE9XX0ZSQU1FX1NDQUxFX0ZBQ1RPUiAoVykpCiAKICNkZWZpbmUgV0lORE9XX0ZSSU5H RVNfV0lEVEgoVykJCVwKICAgKFdJTkRPV19MRUZUX0ZSSU5HRV9XSURUSCAoVykgKyBXSU5ET1df UklHSFRfRlJJTkdFX1dJRFRIIChXKSkKZGlmZiAtLWdpdCBhL3NyYy94dGVybS5jIGIvc3JjL3h0 ZXJtLmMKaW5kZXggNjcyNTNhNi4uYmYxYWJhMiAxMDA2NDQKLS0tIGEvc3JjL3h0ZXJtLmMKKysr IGIvc3JjL3h0ZXJtLmMKQEAgLTYwOCw2ICs2MDgsNyBAQCB4X2NyX2RyYXdfaW1hZ2UgKHN0cnVj dCBmcmFtZSAqZiwgR0MgZ2MsIGNhaXJvX3BhdHRlcm5fdCAqaW1hZ2UsCiAJCSBpbnQgZGVzdF94 LCBpbnQgZGVzdF95LCBib29sIG92ZXJsYXlfcCkKIHsKICAgY2Fpcm9fdCAqY3IgPSB4X2JlZ2lu X2NyX2NsaXAgKGYsIGdjKTsKKyAgZG91YmxlIHNjYWxlID0gRlJBTUVfUklGIChmKS0+Z2V0X3Nj YWxlX2ZhY3RvciAoZik7CiAKICAgaWYgKG92ZXJsYXlfcCkKICAgICBjYWlyb19yZWN0YW5nbGUg KGNyLCBkZXN0X3gsIGRlc3RfeSwgd2lkdGgsIGhlaWdodCk7CkBAIC02MjIsNiArNjIzLDcgQEAg eF9jcl9kcmF3X2ltYWdlIChzdHJ1Y3QgZnJhbWUgKmYsIEdDIGdjLCBjYWlyb19wYXR0ZXJuX3Qg KmltYWdlLAogCiAgIGNhaXJvX3N1cmZhY2VfdCAqc3VyZmFjZTsKICAgY2Fpcm9fcGF0dGVybl9n ZXRfc3VyZmFjZSAoaW1hZ2UsICZzdXJmYWNlKTsKKyAgY2Fpcm9fc3VyZmFjZV9zZXRfZGV2aWNl X3NjYWxlIChzdXJmYWNlLCAxLiAvIHNjYWxlLCAxLiAvIHNjYWxlKTsKICAgY2Fpcm9fZm9ybWF0 X3QgZm9ybWF0ID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfZm9ybWF0IChzdXJmYWNlKTsKICAg aWYgKGZvcm1hdCAhPSBDQUlST19GT1JNQVRfQTggJiYgZm9ybWF0ICE9IENBSVJPX0ZPUk1BVF9B MSkKICAgICB7Ci0tIAoyLjIwLjEKCg== --0000000000003fbf8905950bbb60-- From debbugs-submit-bounces@debbugs.gnu.org Thu Oct 17 04:13:22 2019 Received: (at 37689) by debbugs.gnu.org; 17 Oct 2019 08:13:22 +0000 Received: from localhost ([127.0.0.1]:47082 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iL0uQ-0002eq-Cm for submit@debbugs.gnu.org; Thu, 17 Oct 2019 04:13:22 -0400 Received: from mail-wm1-f41.google.com ([209.85.128.41]:40124) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iL0uP-0002eb-2D for 37689@debbugs.gnu.org; Thu, 17 Oct 2019 04:13:21 -0400 Received: by mail-wm1-f41.google.com with SMTP id b24so1477779wmj.5 for <37689@debbugs.gnu.org>; Thu, 17 Oct 2019 01:13:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :mime-version:content-transfer-encoding; bh=IcPBWgwBUHtDuROB8tjx+f/X9z/T7axsVp8t1HVyDRI=; b=bqZ4f+6NxZ5hQqPz5tU5aMQGLglUsrvNQf+adtCY1tGKbI+QZjz3ZGmMiELEzR1yix IZhfn3Yrb3VdoLAs0MrHThbsy9lxTzbT3j0p6BDu7ypUBiYfYTMfT9SpTM0QEjc5nGmv eDptlizUnhoKVTsc3/357YIWlwaV+Z++YIPUW741ETodllgv3ZUAJ9n00zOZq585FdXj zJmVIC3FMUY5NnExr7mbkkDAYVInxLlT252FiRsKMgLBvzfqLciMsS+nbzi+W3QiSDNy ZT2UCqsu4Y1uHayi0TmLOuJbFsoSDcNhPgS6/bH+2LwzMwKiMMehhB9dpJEeRN4p7VyG O0kw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:mime-version:content-transfer-encoding; bh=IcPBWgwBUHtDuROB8tjx+f/X9z/T7axsVp8t1HVyDRI=; b=FWl//PB+nGr6nIcFVjwPbAKcF+yxCZxDFf2+7oweq95sA7RNmTCgVBFxPxJvxqXweP UpkJaJ9vyFQ6jKV6tU7KD27KqZt2k/9Jy4C+YQmb5YP1izJmDqwG5SKsnpPkSyu30Rbb YOa8DTzHjgh5PLgtBVwPyr3IC6LHqn2wKAkgo3MHZuJ9wcqyc5BqdngtZdvYZw26QhQX xPVbOCBo5nWisy+HqIaZElYvORg2//4ExJBGqir7ImVmZXBbSkhSYyuNzouW2McE+1qv PI4Q6ncxc3c0lh7IUcREgw0vCUknt2lgfM8PEAj3AMb6mUzaAi1dDEEjp3pcPMHJjE6J CdKA== X-Gm-Message-State: APjAAAXwiplaNEB665bhzs6g9uoaPThuk6e3Hys7DPn2i5QPOm7PGpEf oCJjTjuk6mUw1YVGQLlH1KI6l0z3 X-Google-Smtp-Source: APXvYqwDX8QmXpC8QyE8btNr4bGJOPfn9Tu0uW2K9NKL7FDX/9G8vtaNj5D3rL1eUdpEFTrWPDAzkA== X-Received: by 2002:a1c:a9d5:: with SMTP id s204mr1809705wme.14.1571299994705; Thu, 17 Oct 2019 01:13:14 -0700 (PDT) Received: from rpluim-mac ([149.5.228.1]) by smtp.gmail.com with ESMTPSA id n1sm1435986wrg.67.2019.10.17.01.13.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 17 Oct 2019 01:13:12 -0700 (PDT) From: Robert Pluim To: Carlos Pita Subject: Re: bug#37689: Fringe pixmaps, widgets, etc. look ridiculously tiny in hidpi screen References: <83v9swqz9q.fsf@gnu.org> <835zkrk9q9.fsf@gnu.org> <20191014131955.GC45622@breton.holly.idiocy.org> <83pnizidi3.fsf@gnu.org> <83mue3icjm.fsf@gnu.org> <83lftni815.fsf@gnu.org> <83bluigxu0.fsf@gnu.org> <0a1ca6fb-ce34-2ace-ad32-5b3b0193c4e4@gmx.at> Date: Thu, 17 Oct 2019 10:13:12 +0200 In-Reply-To: (Carlos Pita's message of "Wed, 16 Oct 2019 16:01:30 -0300") Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 37689 Cc: martin rudalics , Eli Zaretskii , Alan Third , 37689@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) >>>>> On Wed, 16 Oct 2019 16:01:30 -0300, Carlos Pita said: Carlos> Improved the commit message to hopefully match Carlos> CONTRIBUTING rules. Much better. Small comment below: * sec/window.h (WINDOW_FRAME_SCALE_FACTOR): New helper macro to get scale factor. (WINDOW_LEFT_FRINGE_WIDTH,WINDOW_RIGHT_FRINGE_WIDTH): Use it. (ie split the discussion of the new macro from the description of where it=CA=BCs used). And it=CA=BCs 'src/window.h', which tells me you probably didn=CA=BCt use C-x 4 A or similar :-) Robert From debbugs-submit-bounces@debbugs.gnu.org Thu Oct 17 07:48:35 2019 Received: (at 37689) by debbugs.gnu.org; 17 Oct 2019 11:48:35 +0000 Received: from localhost ([127.0.0.1]:47268 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iL4Gg-0001uz-Gc for submit@debbugs.gnu.org; Thu, 17 Oct 2019 07:48:34 -0400 Received: from mail-wm1-f51.google.com ([209.85.128.51]:40366) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iL4Ge-0001ul-Qs for 37689@debbugs.gnu.org; Thu, 17 Oct 2019 07:48:33 -0400 Received: by mail-wm1-f51.google.com with SMTP id b24so2199644wmj.5 for <37689@debbugs.gnu.org>; Thu, 17 Oct 2019 04:48:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20161025; h=sender:date:from:to:cc:subject:message-id:references:mime-version :content-disposition:content-transfer-encoding:in-reply-to :user-agent; bh=YRG2jkIIt8tfZW49ulrARMk1Ap7a/tCe7usuPSUi144=; b=kV/dAxYUzhF1b9IZxWFTVV1yk3Gg2C9G7KSnZf1uiIBZUfcTFPnMY2e2Xdi8rC0NkB 8qg/qs4t8GkAUqlXKx5rXBhomwdy8pcEiRMc9OrJslipKhVmqFVGwyrVYnXgiQH2SdpR ifUDB3gMmVBPedMTajjGlYz0MwzHc2PrjAOMOhdfdBl4MtPRzhZJMOrYx/JxzZZeQVqz Ib1l4pvBwOXO+o6vU9hZJQ7A4oqFGgtkl4m0SGMAKGdgUyFiLWYsxSqKNpcm8drfvO/z krr0yRgKh4FYDak6MOEja0DIZu6UpFaP+58OKN3NI3ShoRjR/wSDFtrA8w7/xLSG6jvq sUvA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:date:from:to:cc:subject:message-id :references:mime-version:content-disposition :content-transfer-encoding:in-reply-to:user-agent; bh=YRG2jkIIt8tfZW49ulrARMk1Ap7a/tCe7usuPSUi144=; b=O+iFtFn6fSImmX030jiUOc31iIBbFh6ltHCziPmgHkILIaiGh/bcOZv46BZjyCl4Ll HlxDyG05EuydwHGldjlEw8zfNg0Eet6DrSmA5sfSD+fprrDIvKLpP6cVo8jheOjC9HKF NXWHPHyzy1eMBwb0112yYGZ5qA/cM4eUdaBHKmy1a+gqIw6Tgj9bbtolZdqNFzFXGt48 4+Pt/pwOhIcLvaCu+/W3AYbZdqpueRGYd+hJpSsRvdgQ3C62NQhkQ0kcQgX+wKRZ3drU SrBn9pwQ2ZYroDS3eQ4VUycZVq907FJm5BT7Il+eoGM+oLBffsXGWDGAzv2CLvMkm2vd ceSw== X-Gm-Message-State: APjAAAXWRLZGsJZGqU5fJZva04Ul7s9BzvD0cpACqq9bW8k22NrrfQFa ZaBJR0LMAb9H+H/DQC0orQw= X-Google-Smtp-Source: APXvYqyiW/A1J79oTZGjP+yZvudyxmmAPsEOgpjQ15C3KVG85ZnJketDLr3x7nWCDj/Ve8gaZmFgpA== X-Received: by 2002:a1c:7c0a:: with SMTP id x10mr2592444wmc.48.1571312906738; Thu, 17 Oct 2019 04:48:26 -0700 (PDT) Received: from breton.holly.idiocy.org (ip6-2001-08b0-03f8-8129-7415-ea7a-be7a-b72e.holly.idiocy.org. [2001:8b0:3f8:8129:7415:ea7a:be7a:b72e]) by smtp.gmail.com with ESMTPSA id e3sm1948063wme.39.2019.10.17.04.48.25 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 17 Oct 2019 04:48:25 -0700 (PDT) Date: Thu, 17 Oct 2019 12:48:23 +0100 From: Alan Third To: Eli Zaretskii Subject: Re: bug#37689: Fringe pixmaps, widgets, etc. look ridiculously tiny in hidpi screen Message-ID: <20191017114823.GA11160@breton.holly.idiocy.org> References: <83k19ao21y.fsf@gnu.org> <835zkrk9q9.fsf@gnu.org> <20191014131955.GC45622@breton.holly.idiocy.org> <83v9srig09.fsf@gnu.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <83v9srig09.fsf@gnu.org> User-Agent: Mutt/1.12.0 (2019-05-25) X-Spam-Score: 0.3 (/) X-Debbugs-Envelope-To: 37689 Cc: carlosjosepita@gmail.com, rpluim@gmail.com, 37689@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.7 (/) On Mon, Oct 14, 2019 at 05:00:22PM +0300, Eli Zaretskii wrote: > > Date: Mon, 14 Oct 2019 14:19:55 +0100 > > From: Alan Third > > Cc: Carlos Pita , rpluim@gmail.com, > > 37689@debbugs.gnu.org > > > > macOS automatically scales, so the UI code generally doesn’t need to > > know that it’s running on a hi‐DPI screen. > > Do the fringe bitmaps look good after scaling? They look absolutely fine to me. -- Alan Third From debbugs-submit-bounces@debbugs.gnu.org Sun Oct 20 12:32:59 2019 Received: (at 37689) by debbugs.gnu.org; 20 Oct 2019 16:32:59 +0000 Received: from localhost ([127.0.0.1]:55180 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iME8Z-00072t-Eu for submit@debbugs.gnu.org; Sun, 20 Oct 2019 12:32:59 -0400 Received: from bisque.elm.relay.mailchannels.net ([23.83.212.18]:54567) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iME8U-00072W-RU for 37689@debbugs.gnu.org; Sun, 20 Oct 2019 12:32:55 -0400 X-Sender-Id: dreamhost|x-authsender|jurta@jurta.org Received: from relay.mailchannels.net (localhost [127.0.0.1]) by relay.mailchannels.net (Postfix) with ESMTP id CD7DC580696; Sun, 20 Oct 2019 16:32:53 +0000 (UTC) Received: from pdx1-sub0-mail-a73.g.dreamhost.com (100-96-84-88.trex.outbound.svc.cluster.local [100.96.84.88]) (Authenticated sender: dreamhost) by relay.mailchannels.net (Postfix) with ESMTPA id 59AB45805E5; Sun, 20 Oct 2019 16:32:53 +0000 (UTC) X-Sender-Id: dreamhost|x-authsender|jurta@jurta.org Received: from pdx1-sub0-mail-a73.g.dreamhost.com ([TEMPUNAVAIL]. [64.90.62.162]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384) by 0.0.0.0:2500 (trex/5.18.5); Sun, 20 Oct 2019 16:32:53 +0000 X-MC-Relay: Neutral X-MailChannels-SenderId: dreamhost|x-authsender|jurta@jurta.org X-MailChannels-Auth-Id: dreamhost X-Trade-Bitter: 24f122ea29fc7955_1571589173659_3348799539 X-MC-Loop-Signature: 1571589173659:3848609290 X-MC-Ingress-Time: 1571589173659 Received: from pdx1-sub0-mail-a73.g.dreamhost.com (localhost [127.0.0.1]) by pdx1-sub0-mail-a73.g.dreamhost.com (Postfix) with ESMTP id 21E7582C0F; Sun, 20 Oct 2019 09:32:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=linkov.net; h=from:to:cc :subject:references:date:in-reply-to:message-id:mime-version :content-type; s=linkov.net; bh=L/fjsjbWEd1/Gqlok/VTnhvk/ZI=; b= JOiGmZqFYa0gx5MW5kVGvrwNcig35ibJnvYDF6UdcFhw+nA3sR0a22/c+Dg8EJwl EojtOOyYTa7VNvpHzwEkQP3dhKYG85CpONOZSQpzoDpc5UCxlK/0EJKqC4UFa8ep u9iVN6GIO/dsJIO6Jm9El6NvK52ApTi7KVnriAgajYI= Received: from mail.jurta.org (m91-129-98-153.cust.tele2.ee [91.129.98.153]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) (Authenticated sender: jurta@jurta.org) by pdx1-sub0-mail-a73.g.dreamhost.com (Postfix) with ESMTPSA id 0368482C03; Sun, 20 Oct 2019 09:32:46 -0700 (PDT) X-DH-BACKEND: pdx1-sub0-mail-a73 From: Juri Linkov To: Carlos Pita Subject: Re: bug#37689: Fringe pixmaps, widgets, etc. look ridiculously tiny in hidpi screen Organization: LINKOV.NET References: <83sgo1rpbx.fsf@gnu.org> <831rvksksa.fsf@gnu.org> Date: Sun, 20 Oct 2019 19:03:10 +0300 In-Reply-To: (Carlos Pita's message of "Thu, 10 Oct 2019 12:51:57 -0300") Message-ID: <87eez7mxoh.fsf@mail.linkov.net> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 37689 Cc: Eli Zaretskii , Robert Pluim , 37689@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) >> > Perhaps we should convert those pixmaps to some scaleable format, and >> > then autoscale them? >> >> You mean, SVG? We could do that, but we'd like images to display well >> even if Emacs cannot display SVG. >> >> Also, I think fringe bitmaps and other icons we use in the UI cannot >> be scalable, we need to scale them ourselves. Not that I'm an expert >> on that (so don't take my words as definitive and/or final). > > At least for the fringe part, what do you think of modifying > define-fringe-bitmap to take into account scaling factor? > > For example, if scaling factor > 1.5 make everything x2, if > 2.5 then > x3, etc. It seems quite simple to achieve those integer scalings. Funnily enough, the current fringe bitmaps are too big for me, so I had to customize them using smaller bitmaps copied from somewhere. I guess it should be possible to do the same to provide x2 scaled bitmaps: (define-fringe-bitmap 'light-down-arrow [32 32 32 32 32 32 168 112 32] nil nil 'bottom) (define-fringe-bitmap 'light-up-arrow [32 112 168 32 32 32 32 32 32] nil nil 'top) (define-fringe-bitmap 'light-top-left-angle [254 254 128 128 128] nil nil 'top) (define-fringe-bitmap 'light-bottom-left-angle [128 128 128 254 254] nil nil 'bottom) (define-fringe-bitmap 'light-left-bracket [254 254 128 128 128 0 0 0 0 128 128 128 254 254] nil nil 'center) (define-fringe-bitmap 'light-right-curly-arrow [96 16 8 8 72 80 96 120] nil nil 'bottom) (define-fringe-bitmap 'light-left-curly-arrow [8 16 16 16 18 10 6 30] nil nil 'top) (define-fringe-bitmap 'light-right-arrow [16 8 252 8 16] nil 11 'center) (define-fringe-bitmap 'light-left-arrow [32 64 254 64 32] nil nil 'center) (setq-default fringe-indicator-alist '((truncation . (light-left-arrow light-right-arrow)) (continuation . (light-left-curly-arrow light-right-curly-arrow)) (overlay-arrow . right-triangle) (up . light-up-arrow) (down . light-down-arrow) (top . (light-top-left-angle top-right-angle)) (bottom . (light-bottom-left-angle bottom-right-angle top-right-angle light-top-left-angle)) (top-bottom . (light-left-bracket right-bracket top-right-angle light-top-left-angle)) (empty-line . empty-line) (unknown . question-mark))) From debbugs-submit-bounces@debbugs.gnu.org Sun Oct 20 13:37:36 2019 Received: (at 37689) by debbugs.gnu.org; 20 Oct 2019 17:37:36 +0000 Received: from localhost ([127.0.0.1]:55234 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iMF95-0000A5-SS for submit@debbugs.gnu.org; Sun, 20 Oct 2019 13:37:36 -0400 Received: from mail-yb1-f193.google.com ([209.85.219.193]:46956) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iMF93-00009s-Di for 37689@debbugs.gnu.org; Sun, 20 Oct 2019 13:37:34 -0400 Received: by mail-yb1-f193.google.com with SMTP id h202so3345714ybg.13 for <37689@debbugs.gnu.org>; Sun, 20 Oct 2019 10:37:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=xRIICwBs+CWnWZdVeJ2xExpRREV6jWShcuEOuxmQ/hA=; b=qqIAF6tGyPDysUuUisu7Il7i4XERTTd2jXyhJ40HCqoqPUoOIm7K3wKu0HieZhP8wv pDTAGWcfV/kMwWkF6wQVyvo2giws2kyP+KRT/PL/QCzSeapnUrAhcWv7/lxxJ0fWls8a azqHWubXm2KPIL6k6NlMe7u974cGtfcfwF4iUmmAb6S9/qqVbwfe4Y1Ey32qctCwGe25 HtZ15Xf/dr79KVUhoGAyGRjpL1o2Ocu3dtXQk6Fa4gmSNOJgn/Sj84BR2TIt5/uSuoNH wuXxmMepag/I6eFArr7qFIHzdUWiL/Z80hAKi/KkDFBlTXTA6IkEneXbolQN95Y8WRq+ Ckhw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=xRIICwBs+CWnWZdVeJ2xExpRREV6jWShcuEOuxmQ/hA=; b=aS/DtX1fwl+g5ZKWnXMSg5m8fI+q1gmuOj2VWoi17L5a4LjXzUw3864Y2Xu+dGl6IS /4h2QOxK9DMcfy9yVmgvIAkViJGnf+wpjDzLEQPV9SpuGihObxVs7/SrvLyr/ep3HUye AS6l+hlgt/rrJIVuDbkVbWU+pcZ/oYjTQP5PHg+ZLViULOsIV2gcrU/xLKIGike+8yWX XaLVESAgdTCsfdzb4k+cMMnPisYVaUIQ5sNN1YeLPwR46y0KGhgyF25PaGSJG/cSKrZV OhHhb35BKAhPAtjFT/AF2XXmhoWRIe9P2Qo57xS9Xvl+yRxxbtLKPLMSLQLNag0lQBPx 0bNw== X-Gm-Message-State: APjAAAXdmg/yyePOy+hyhenUlw8yc0X3KSU6f5ybkq6iXHCl39qiclLD iCVTGodn/xVrqxS5Pdn1o2LouvpYfG/t2x+WGXk= X-Google-Smtp-Source: APXvYqxq4pKGhOWkM5etw3VyiAJu8/zm7iLmRIYEEkucRZYxfekzhIqbR9OKjFC4xJotyZjWotnz3HrNJLdtOujjI1k= X-Received: by 2002:a25:e7cf:: with SMTP id e198mr11881701ybh.334.1571593047634; Sun, 20 Oct 2019 10:37:27 -0700 (PDT) MIME-Version: 1.0 References: <83sgo1rpbx.fsf@gnu.org> <831rvksksa.fsf@gnu.org> <87eez7mxoh.fsf@mail.linkov.net> In-Reply-To: <87eez7mxoh.fsf@mail.linkov.net> From: Carlos Pita Date: Sun, 20 Oct 2019 14:37:15 -0300 Message-ID: Subject: Re: bug#37689: Fringe pixmaps, widgets, etc. look ridiculously tiny in hidpi screen To: Juri Linkov Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 37689 Cc: Eli Zaretskii , Robert Pluim , 37689@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Hi Juri, > I guess it should be possible to do the same to provide x2 scaled bitmaps: > > (define-fringe-bitmap 'light-down-arrow [32 32 32 32 32 32 168 112 32] nil nil 'bottom) This is indeed a cool workaround if you can override the builtin bitmaps. But anyway it won't address the problem of having different frames with different dpis nor the need to expose a "scale factor api" to fix not only this but other hidpi-related issues. > Funnily enough, the current fringe bitmaps are too big for me, Too big as in "twice as big as expected" or in "too big for my taste"? Best regards -- Carlos From debbugs-submit-bounces@debbugs.gnu.org Sun Oct 20 14:55:24 2019 Received: (at 37689) by debbugs.gnu.org; 20 Oct 2019 18:55:24 +0000 Received: from localhost ([127.0.0.1]:55252 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iMGMO-0001yJ-3a for submit@debbugs.gnu.org; Sun, 20 Oct 2019 14:55:24 -0400 Received: from cheetah.birch.relay.mailchannels.net ([23.83.209.34]:16997) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iMGMJ-0001y1-Rx for 37689@debbugs.gnu.org; Sun, 20 Oct 2019 14:55:21 -0400 X-Sender-Id: dreamhost|x-authsender|jurta@jurta.org Received: from relay.mailchannels.net (localhost [127.0.0.1]) by relay.mailchannels.net (Postfix) with ESMTP id 92565340CDE; Sun, 20 Oct 2019 18:55:18 +0000 (UTC) Received: from pdx1-sub0-mail-a26.g.dreamhost.com (100-96-171-212.trex.outbound.svc.cluster.local [100.96.171.212]) (Authenticated sender: dreamhost) by relay.mailchannels.net (Postfix) with ESMTPA id 80E84340CB7; Sun, 20 Oct 2019 18:55:17 +0000 (UTC) X-Sender-Id: dreamhost|x-authsender|jurta@jurta.org Received: from pdx1-sub0-mail-a26.g.dreamhost.com ([TEMPUNAVAIL]. [64.90.62.162]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384) by 0.0.0.0:2500 (trex/5.18.5); Sun, 20 Oct 2019 18:55:17 +0000 X-MC-Relay: Neutral X-MailChannels-SenderId: dreamhost|x-authsender|jurta@jurta.org X-MailChannels-Auth-Id: dreamhost X-Soft-Shoe: 2a8b3c1c2c83910d_1571597717771_1997324158 X-MC-Loop-Signature: 1571597717771:2952394567 X-MC-Ingress-Time: 1571597717771 Received: from pdx1-sub0-mail-a26.g.dreamhost.com (localhost [127.0.0.1]) by pdx1-sub0-mail-a26.g.dreamhost.com (Postfix) with ESMTP id E526B81351; Sun, 20 Oct 2019 11:55:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=linkov.net; h=from:to:cc :subject:references:date:in-reply-to:message-id:mime-version :content-type; s=linkov.net; bh=9avx1jLYxrBLBh0X/uoFc6ls77A=; b= KD4U+JlNvCqUEL9jNq9Z+RpWg0bjf4zRqu2200iQVz8ZMCxgLCAdpbDf01yuntqB vp/Be2BMppxnFF3zjaA2UvMiNr/A0XA88TJJgEkHNhPKsD3NXKulWyzHbp+N7EAv UUJ61n4knKbTtWd/Ovey+cdUocwCg/XfH1kCYsQqElY= Received: from mail.jurta.org (m91-129-98-153.cust.tele2.ee [91.129.98.153]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) (Authenticated sender: jurta@jurta.org) by pdx1-sub0-mail-a26.g.dreamhost.com (Postfix) with ESMTPSA id 970678135C; Sun, 20 Oct 2019 11:55:09 -0700 (PDT) X-DH-BACKEND: pdx1-sub0-mail-a26 From: Juri Linkov To: Carlos Pita Subject: Re: bug#37689: Fringe pixmaps, widgets, etc. look ridiculously tiny in hidpi screen Organization: LINKOV.NET References: <83sgo1rpbx.fsf@gnu.org> <831rvksksa.fsf@gnu.org> <87eez7mxoh.fsf@mail.linkov.net> Date: Sun, 20 Oct 2019 21:52:32 +0300 In-Reply-To: (Carlos Pita's message of "Sun, 20 Oct 2019 14:37:15 -0300") Message-ID: <87zhhvgsgf.fsf@mail.linkov.net> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 37689 Cc: Eli Zaretskii , Robert Pluim , 37689@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) >> I guess it should be possible to do the same to provide x2 scaled bitmaps: >> >> (define-fringe-bitmap 'light-down-arrow [32 32 32 32 32 32 168 112 32] nil nil 'bottom) > > This is indeed a cool workaround if you can override the builtin > bitmaps. Actually, this doesn't override the builtin bitmaps. The name of the builtin bitmap is 'down-arrow', but this defines a new bitmap 'light-down-arrow'. You can use any name you want, e.g. 'down-arrow-2x'. > But anyway it won't address the problem of having different > frames with different dpis nor the need to expose a "scale factor api" > to fix not only this but other hidpi-related issues. Maybe the value of 'fringe-indicator-alist' should be frame-local? Then depending on the exposed scale-factor, each frame could use own set of bitmaps defined by frame-local 'fringe-indicator-alist'. >> Funnily enough, the current fringe bitmaps are too big for me, > > Too big as in "twice as big as expected" or in "too big for my taste"? I use a small 10px font, so the customized bitmaps fit the font size. So maybe fridge bitmap size should depend on the font size, not scale? From debbugs-submit-bounces@debbugs.gnu.org Sun Oct 20 15:18:16 2019 Received: (at 37689) by debbugs.gnu.org; 20 Oct 2019 19:18:16 +0000 Received: from localhost ([127.0.0.1]:55297 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iMGiV-0002YW-KU for submit@debbugs.gnu.org; Sun, 20 Oct 2019 15:18:15 -0400 Received: from mail-yw1-f44.google.com ([209.85.161.44]:44457) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iMGiU-0002YJ-6u for 37689@debbugs.gnu.org; Sun, 20 Oct 2019 15:18:14 -0400 Received: by mail-yw1-f44.google.com with SMTP id m13so4117327ywa.11 for <37689@debbugs.gnu.org>; Sun, 20 Oct 2019 12:18:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=noWSpiFlqeIZho2mPHyMn1siolOFnbuHFyD3eLhlgiY=; b=I+NTs2bshvYBWWqHaF8X6Jh8w4qBsxEc5B3nmXifFGT/8P/JB9CMgtY8LWyisZKokW h9L2GzL9ENWje2NcJ7vD2e65LzMV9JRgg23zGQIgUF1CEl1ZdGA2RE/IC00OAauQh6+j LrhTZ1Fs+gX5NaS8yI/H9pqRJaR8xqFdC1aDNTS0dpXPsvYfXmpxzIkCjAJT19S06BrC C+nujKFk4N1p2SeoTRY5Zwh4zQso4pPZyfV6vKPsTRTRRwixfOiz4Vs/GHxrXbT1zIkm YWyeVFzDLlxwqDyaiwvIxplDyhdRLGlDSovRp6V87L6yAEMptEf1ieieKbwyTP7N/FpK RW/g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=noWSpiFlqeIZho2mPHyMn1siolOFnbuHFyD3eLhlgiY=; b=DSIn6xi9dsj5G8qD+K7NXBXvX8Th4E22UGOyFLDRIInrtlWxC2XZpV9EIpIkWtjQLb RygqRq2EX9sPzKGwG411rOGLcdNGkrpdJegysbfeUXheILHeBH8GNqEhzaKFx7D2kf5/ Qc1hp5UHg1JRaoHX59aviBoAmemUSBl0Lbe+dCF4ofIs8zwyVueubd1OtfY/GHCyQozE pZmThpXk8ZH13EHe8E622ewTlXLrSmjmmgf2YyfT0P3s7Bzuwu7ZhocE49f4rxJvHs26 Ze8XoPPNeA7UvAg4snGJ59SH23NSlFBwZ8KWbgJVsylnohp1vYgEr049cxS/2MnbZCYr gpZg== X-Gm-Message-State: APjAAAXs8MGgV6aefcCIaM0Dp332kBSuUm/csXgrM/7l+6nQygYKn2BU JndJbjOfZ6fgRKEqXXSkpR3z3FSok3BQ/9UJwxk= X-Google-Smtp-Source: APXvYqxfoMym/2HRrPvxYWzZh93PfCK+1ii7q+FtX3x1SIsEQpOgSZxQzw5oekQQj7qxbcrUKcDKoLBpRfIyuc17j+U= X-Received: by 2002:a81:ab42:: with SMTP id d2mr14012874ywk.64.1571599088372; Sun, 20 Oct 2019 12:18:08 -0700 (PDT) MIME-Version: 1.0 References: <83sgo1rpbx.fsf@gnu.org> <831rvksksa.fsf@gnu.org> <87eez7mxoh.fsf@mail.linkov.net> <87zhhvgsgf.fsf@mail.linkov.net> In-Reply-To: <87zhhvgsgf.fsf@mail.linkov.net> From: Carlos Pita Date: Sun, 20 Oct 2019 16:17:56 -0300 Message-ID: Subject: Re: bug#37689: Fringe pixmaps, widgets, etc. look ridiculously tiny in hidpi screen To: Juri Linkov Content-Type: multipart/alternative; boundary="0000000000006452ad05955c6d32" X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 37689 Cc: Eli Zaretskii , Robert Pluim , 37689@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --0000000000006452ad05955c6d32 Content-Type: text/plain; charset="UTF-8" > > > Maybe the value of 'fringe-indicator-alist' should be frame-local? > Frames can be moved from one display to another with a different dpi. > >> Funnily enough, the current fringe bitmaps are too big for me, > > > > Too big as in "twice as big as expected" or in "too big for my taste"? > > I use a small 10px font, so the customized bitmaps fit the font size. > Ah ok, great, so that's not a scale factor issue. So maybe fridge bitmap size should depend on the font size, not scale? > 10px fonts are not 10px at other scale factor than 1x. In general you don't have to change the size of your fonts when duplicating your screen resolution, even if your fonts were given in px size, because the toolkit scales them for you under the assumption of some standard ~96dpi base which allows pixels to be treated as something more than a "number of tiny dots, whatever their size is" measure. What can be done is to adjust everything else in emacs to the effective (not nominal) pixel size of the default face (then scale factor would be the effective to nominal pixel size ratio of this font). I believe something like that is done in some places, it's sensible given that emacs is mostly a grid of characters. But anyway this is clearly not the approach taken for the fringe and some parts of emacs have geometry not so tightly coupled to font size, although I would indeed expect high correlation. And some toolkits (for example, gtk) offer a separate scale factor for font size, which is then applied on top of the general scale factor and seen mostly as an accessibility feature. > --0000000000006452ad05955c6d32 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable

Maybe the value of 'fringe-indicator-alist' should be frame-local?<= br>

F= rames can be moved from one display to another with a different dpi.
<= div dir=3D"auto">

>> Funnily enough, the current fringe bitmaps are too big for me,
>
> Too big as in "twice as big as expected" or in "too big= for my taste"?

I use a small 10px font, so the customized bitmaps fit the font size.


Ah ok, great, so that's not a scale factor issue.=

So maybe fridge bitmap size should depend on the font size, not scale?
<= /blockquote>

10px = fonts are not 10px at other scale factor than 1x. In general you don't = have to change the size of your fonts when duplicating your screen resoluti= on, even if your fonts were given in px size, because the toolkit scales th= em for you under the assumption of some standard ~96dpi base which allows p= ixels to be treated as something more than a "number of tiny dots, wha= tever their size is" measure.

What can be done is to adjust everything else in emacs to the ef= fective (not nominal) pixel size of the default face (then scale factor wou= ld be the effective to nominal pixel size ratio of this font). I believe so= mething like that is done in some places, it's sensible given that emac= s is mostly a grid of characters. But anyway this is clearly not the approa= ch taken for the fringe and some parts of emacs have geometry not so tightl= y coupled to font size, although I would indeed expect high correlation. An= d some toolkits (for example, gtk) offer a separate scale factor for font s= ize, which is then applied on top of the general scale factor and seen most= ly as an accessibility feature.
--0000000000006452ad05955c6d32-- From debbugs-submit-bounces@debbugs.gnu.org Thu Oct 24 13:10:03 2019 Received: (at 37689-close) by debbugs.gnu.org; 24 Oct 2019 17:10:04 +0000 Received: from localhost ([127.0.0.1]:36876 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iNgcd-0006nW-N6 for submit@debbugs.gnu.org; Thu, 24 Oct 2019 13:10:03 -0400 Received: from mail-yw1-f42.google.com ([209.85.161.42]:41072) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iNgcc-0006my-9z for 37689-close@debbugs.gnu.org; Thu, 24 Oct 2019 13:10:02 -0400 Received: by mail-yw1-f42.google.com with SMTP id o195so4026794ywd.8 for <37689-close@debbugs.gnu.org>; Thu, 24 Oct 2019 10:10:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=SF1iPlfw0FQJG70qtNOz9kNOK+jdS8jfs6tobeMNeFA=; b=MkmUCkOaFWKJnHmGD3QbwQaiseyH7iZT3H0Li4+znzl8G9stTvkh8O1CwgUyjd7K/n tmCK/usL6Z+T4jG6wlmSGp9Iy4M33+1rOnszqHxHE/+qwgoWKUKz23dUpmI0oMn5pUSt vV8c8HOjoileUtqPNfv1vlDL4ZPe6WUoXL8morUhq3dD54yxxx3mg89tfyujxEONszr6 M3GZwo54pqTQ7fQTU4YBRoRrm9XsnBH/uVQ5aABUB83WAJZWfHx0ocdwy7pZfpjVCNPq NTYJs72YA+QglaLk0GcUaSVp6WG/AL8sNKIjbjDl1R7QTkKl0AzvHv2Hwh+b12e3Y/nG HyFw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=SF1iPlfw0FQJG70qtNOz9kNOK+jdS8jfs6tobeMNeFA=; b=YxYojDSVj8gUHepEIWlmmSdkb4NjD/5wbSQguxFnFrmIP3ZEpEQRrJvAYmMKwc9Tdi HliL4MY1kGx/uPZFfFKHbJ4+SbTkVm2z/AGKV5MTaevGjk8/ALCK1T5p6+iAMHUBA8J/ jhqMW4dJEvXGnI0JwdhWBMLWFaDqxXKhOGewifd79AyqF1ypR0heiQc76Q/71wExz7Ap boZTpem/PS3jzSwB97AjLvrNNyJnTMlE/MM3sz0i1x33YzreaPAY1WNjqX5YkkVL1Eza i5Bzc2Yi8jobnVD9lIs6BSDUWJCa9g/uqRhtCndUIaDm3wtFcR0sTk27uphTh6diN56L sX2g== X-Gm-Message-State: APjAAAUkrA6GUXC9MnRFQnKcXmQvvsu7UyrM4dELC29inlGezj0X7Fp1 Hpx/cxJs7Ye/wDH/npxn6pW4t0b6mjXaCSCtFI5/7xQkpxA= X-Google-Smtp-Source: APXvYqzwIY1g1Dke/L3uE6sSbpmMoekA+ZE7VbAAFjTAxKTfh/vwR0gwYn7hZxWxQ/leH2duh/X1qJfPmL0q6mK7DE0= X-Received: by 2002:a81:9a16:: with SMTP id r22mr7021620ywg.277.1571936996518; Thu, 24 Oct 2019 10:09:56 -0700 (PDT) MIME-Version: 1.0 References: <83sgo1rpbx.fsf@gnu.org> <831rvksksa.fsf@gnu.org> <87eez7mxoh.fsf@mail.linkov.net> <87zhhvgsgf.fsf@mail.linkov.net> In-Reply-To: From: Carlos Pita Date: Thu, 24 Oct 2019 14:09:44 -0300 Message-ID: Subject: Re: bug#37689: Fringe pixmaps, widgets, etc. look ridiculously tiny in hidpi screen To: Juri Linkov Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 37689-close Cc: Eli Zaretskii , Robert Pluim , 37689-close@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) I'm closing this issue in order to prevent wasting your time in useless reviews, because I'm working in a rather different solution as described in my last comment to #37770. Hopefully I will be posting a new patch as soon as I get that working, but it has shown to be a difficult task to undertake... Nevertheless I'm learning a lot about the internals. Best regards -- Carlos From debbugs-submit-bounces@debbugs.gnu.org Sat Oct 26 06:45:28 2019 Received: (at 37689-done) by debbugs.gnu.org; 26 Oct 2019 10:45:28 +0000 Received: from localhost ([127.0.0.1]:39730 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iOJZY-0007yt-Fh for submit@debbugs.gnu.org; Sat, 26 Oct 2019 06:45:28 -0400 Received: from eggs.gnu.org ([209.51.188.92]:51479) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iOJZW-0007yb-82 for 37689-done@debbugs.gnu.org; Sat, 26 Oct 2019 06:45:27 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:39575) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1iOJZQ-0004aM-PH; Sat, 26 Oct 2019 06:45:20 -0400 Received: from [176.228.60.248] (port=1475 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1iOJZQ-000240-2u; Sat, 26 Oct 2019 06:45:20 -0400 Date: Sat, 26 Oct 2019 13:45:09 +0300 Message-Id: <83h83vvl8q.fsf@gnu.org> From: Eli Zaretskii To: Carlos Pita In-reply-to: (message from Carlos Pita on Thu, 24 Oct 2019 14:09:44 -0300) Subject: Re: bug#37689: Fringe pixmaps, widgets, etc. look ridiculously tiny in hidpi screen References: <83sgo1rpbx.fsf@gnu.org> <831rvksksa.fsf@gnu.org> <87eez7mxoh.fsf@mail.linkov.net> <87zhhvgsgf.fsf@mail.linkov.net> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 37689-done Cc: rpluim@gmail.com, 37689-done@debbugs.gnu.org, juri@linkov.net X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Carlos Pita > Date: Thu, 24 Oct 2019 14:09:44 -0300 > Cc: Eli Zaretskii , Robert Pluim , 37689-close@debbugs.gnu.org > > I'm closing this issue in order to prevent wasting your time in > useless reviews, because I'm working in a rather different solution as > described in my last comment to #37770. Thanks, but what about bug#37755? Should we still discuss the changes there? Are they independent of what you are working on in bug#37770? From unknown Tue Jun 17 20:31:02 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Sat, 23 Nov 2019 12:24:13 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator