* w32fns.c (Fx_display_color_cells): Instead of using NCOLORS,
authorDaniel Colascione <dancol@dancol.org>
Mon, 8 Oct 2012 18:44:42 +0000 (10:44 -0800)
committerDaniel Colascione <dancol@dancol.org>
Mon, 8 Oct 2012 18:44:42 +0000 (10:44 -0800)
which is broke under remote desktop, calculating the number of
colors available for a display based on the display's number of
planes and number of bits per pixel per plane.  (bug#10397).

src/ChangeLog
src/w32fns.c

index 122e0d1..1d90b7b 100644 (file)
@@ -1,3 +1,10 @@
+2012-10-08  Daniel Colascione  <dancol@dancol.org>
+
+       * w32fns.c (Fx_display_color_cells): Instead of using NCOLORS,
+       which is broke under remote desktop, calculating the number of
+       colors available for a display based on the display's number of
+       planes and number of bits per pixel per plane.  (bug#10397).
+
 2012-10-08  Juanma Barranquero  <lekktu@gmail.com>
 
        * makefile.w32-in (LOCAL_FLAGS): Don't define HAVE_NTGUI, it's now
index e728d19..ff8e5fe 100644 (file)
@@ -4642,22 +4642,14 @@ If omitted or nil, that stands for the selected frame's display.  */)
   (Lisp_Object display)
 {
   struct w32_display_info *dpyinfo = check_x_display_info (display);
-  HDC hdc;
   int cap;
 
-  hdc = GetDC (dpyinfo->root_window);
-  if (dpyinfo->has_palette)
-    cap = GetDeviceCaps (hdc, SIZEPALETTE);
-  else
-    cap = GetDeviceCaps (hdc, NUMCOLORS);
-
-  /* We force 24+ bit depths to 24-bit, both to prevent an overflow
-     and because probably is more meaningful on Windows anyway */
-  if (cap < 0)
-    cap = 1 << min (dpyinfo->n_planes * dpyinfo->n_cbits, 24);
-
-  ReleaseDC (dpyinfo->root_window, hdc);
+  /* Don't use NCOLORS: it returns incorrect results under remote
+   * desktop.  We force 24+ bit depths to 24-bit, both to prevent an
+   * overflow and because probably is more meaningful on Windows
+   * anyway.  */
 
+  cap = 1 << min (dpyinfo->n_planes * dpyinfo->n_cbits, 24);
   return make_number (cap);
 }