GNU bug report logs -
#10397
[PATCH] Under Remote Desktop, NUMCOLORS is unreliable; workaround
Previous Next
Reported by: Daniel Colascione <dancol <at> dancol.org>
Date: Thu, 29 Dec 2011 14:10:02 UTC
Severity: normal
Tags: patch
Fixed in version 24.3
Done: Glenn Morris <rgm <at> gnu.org>
Bug is archived. No further changes may be made.
Full log
Message #44 received at 10397 <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
On 12/29/11 7:07 PM, Juanma Barranquero wrote:
> On Thu, Dec 29, 2011 at 23:59, Daniel Colascione <dancol <at> dancol.org> wrote:
>
>> What about this: we'll distrust any NUMCOLORS response less than 256.
>> You'll never use direct color with a bit depth that small, so any answer
>> in that range must be bogus.
>
> Hmm. Shouldn't in fact GetDeviceCaps (hdc, NUMCOLORS) always be <= 256?
>
> According to http://msdn.microsoft.com/en-us/library/dd144877(v=vs.85).aspx
>
> NUMCOLORS
> Number of entries in the device's color table, if the device has a
> color depth of no more than 8 bits per pixel. For devices with greater
> color depths, 1 is returned.
>
> (It says "1", but it's a typo for "-1".)
Good catch. What about this (untested) code?
hdc = GetDC (dpyinfo->root_window);
if (dpyinfo->has_palette)
cap = GetDeviceCaps (hdc, SIZEPALETTE);
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;
[signature.asc (application/pgp-signature, attachment)]
This bug report was last modified 8 years and 241 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.