From: Daniel Colascione <dancol@dancol.org>
To: emacs-devel@gnu.org
Subject: [PATCH 1/9] Under Remote Desktop, NUMCOLORS is unreliable; workaround
Date: Tue, 07 Aug 2012 01:19:27 -0700 [thread overview]
Message-ID: <139f6550dc3f2f06eaea8a9a23bcf30333a41bcb.1344326992.git.dancol@dancol.org> (raw)
In-Reply-To: <cover.1344326992.git.dancol@dancol.org>
Under remote desktop, Windows returns the wrong number of colors from
GetDeviceCaps (hdc, NUMCOLORS). I hit this bug myself, and MSDN
comments seem to indicate that others hit it as well. The workaround
seems harmless: on non-palettized displays, calculating the number of
display colors based on display bitness should produce good results.
---
src/w32fns.c | 9 ++++++++-
1 files changed, 8 insertions(+), 1 deletions(-)
diff --git a/src/w32fns.c b/src/w32fns.c
index b82d4bc..7fc5cf5 100644
--- a/src/w32fns.c
+++ b/src/w32fns.c
@@ -4513,8 +4513,15 @@ If omitted or nil, that stands for the selected frame's display. */)
hdc = GetDC (dpyinfo->root_window);
if (dpyinfo->has_palette)
cap = GetDeviceCaps (hdc, SIZEPALETTE);
- else
+ else if (dpyinfo->n_cbits <= 8)
+ /* According to the MSDN, GetDeviceCaps (NUMCOLORS) is valid only
+ for devices with at most eight bits per pixel. It's supposed
+ to return -1 for other displays, but because it actually
+ returns other, incorrect values under some conditions (e.g.,
+ remote desktop), only use it when we know it's valid. */
cap = GetDeviceCaps (hdc, NUMCOLORS);
+ else
+ cap = -1;
/* We force 24+ bit depths to 24-bit, both to prevent an overflow
and because probably is more meaningful on Windows anyway */
--
1.7.2.5
next prev parent reply other threads:[~2012-08-07 8:19 UTC|newest]
Thread overview: 51+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-08-07 8:19 [PATCH 0/9] Support Win32 GUI in Cygwin Emacs Daniel Colascione
2012-08-07 8:19 ` [PATCH 6/9] Rename `w32' local to `nt' for clarity Daniel Colascione
2012-08-07 10:49 ` Lennart Borgman
2012-08-07 15:45 ` Stefan Monnier
2012-08-07 16:31 ` Eli Zaretskii
2012-08-07 16:40 ` Drew Adams
2012-08-07 17:07 ` Daniel Colascione
2012-08-07 20:00 ` Stefan Monnier
2012-08-08 2:50 ` Eli Zaretskii
2012-08-07 8:19 ` [PATCH 2/9] Refactor window-system configuration Daniel Colascione
2012-08-07 17:20 ` Eli Zaretskii
2012-08-07 17:31 ` Daniel Colascione
2012-08-07 20:47 ` Stefan Monnier
2012-08-07 8:19 ` [PATCH 7/9] Add alt_display to emacsclient for w32, ns Daniel Colascione
2012-08-07 15:22 ` Stefan Monnier
2012-08-07 8:19 ` [PATCH 9/9] Detect window-system from display name Daniel Colascione
2012-08-07 15:50 ` Stefan Monnier
2012-08-07 17:09 ` Daniel Colascione
2012-08-07 20:01 ` Stefan Monnier
2012-08-07 20:19 ` Daniel Colascione
2012-08-07 22:52 ` Lennart Borgman
2012-08-07 22:54 ` Daniel Colascione
2012-08-07 23:02 ` Lennart Borgman
2012-08-07 18:18 ` Eli Zaretskii
2012-08-07 20:28 ` Daniel Colascione
2012-08-08 16:50 ` Eli Zaretskii
2012-08-07 8:19 ` [PATCH 5/9] Prevent crash if w32 used before it's initialized Daniel Colascione
2012-08-07 17:23 ` Eli Zaretskii
2012-08-07 17:28 ` Daniel Colascione
2012-08-07 18:11 ` Eli Zaretskii
2012-08-07 8:19 ` [PATCH 4/9] Fix emacsclient to work with cygw32 Daniel Colascione
2012-08-07 18:14 ` Eli Zaretskii
2012-08-07 20:16 ` Daniel Colascione
2012-08-08 2:55 ` Eli Zaretskii
2012-08-07 8:19 ` [PATCH 8/9] Generalize fork+exec logic, add DAEMON_MUST_EXEC Daniel Colascione
2012-08-07 8:19 ` Daniel Colascione [this message]
2012-08-07 17:07 ` [PATCH 1/9] Under Remote Desktop, NUMCOLORS is unreliable; workaround Eli Zaretskii
2012-08-07 8:19 ` [PATCH 3/9] Implement cygw32 Daniel Colascione
2012-08-07 15:40 ` Stefan Monnier
2012-08-07 18:02 ` Eli Zaretskii
2012-08-07 20:11 ` Daniel Colascione
2012-08-08 17:15 ` Eli Zaretskii
2012-08-07 17:22 ` [PATCH 0/9] Support Win32 GUI in Cygwin Emacs Eli Zaretskii
2012-08-07 17:29 ` Daniel Colascione
2012-08-07 18:10 ` Eli Zaretskii
2012-08-07 19:18 ` Eli Zaretskii
2012-08-07 20:15 ` Daniel Colascione
2012-08-07 20:24 ` Juanma Barranquero
2012-08-08 2:53 ` Eli Zaretskii
2012-08-08 2:33 ` Daniel Colascione
2012-08-08 3:03 ` Eli Zaretskii
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=139f6550dc3f2f06eaea8a9a23bcf30333a41bcb.1344326992.git.dancol@dancol.org \
--to=dancol@dancol.org \
--cc=emacs-devel@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.