* macfns.c (Fx_display_color_cells): Do not limit return value to 256.
authorJan Djärv <jan.h.d@swipnet.se>
Thu, 17 Jun 2004 13:04:25 +0000 (13:04 +0000)
committerJan Djärv <jan.h.d@swipnet.se>
Thu, 17 Jun 2004 13:04:25 +0000 (13:04 +0000)
* macterm.c (mac_initialize_display_info): Initialize n_planes correctly
on Mac OSX.

src/ChangeLog
src/macfns.c
src/macterm.c

index 746bd99..15cd195 100644 (file)
@@ -1,3 +1,10 @@
+2004-06-17  Jan Dj\e,Ad\e(Brv  <jan.h.d@swipnet.se>
+
+       * macfns.c (Fx_display_color_cells): Do not limit return value to 256.
+
+       * macterm.c (mac_initialize_display_info): Initialize n_planes correctly
+       on Mac OSX.
+
 2004-06-16  Luc Teirlinck  <teirllm@auburn.edu>
 
        * buffer.c (syms_of_buffer): Clarify `fill-column' docstring.
index 5c1b777..ec014e7 100644 (file)
@@ -2939,8 +2939,8 @@ If omitted or nil, that stands for the selected frame's display.  */)
 {
   struct mac_display_info *dpyinfo = check_x_display_info (display);
 
-  /* MAC_TODO: check whether this is right */
-  return make_number (dpyinfo->n_planes >= 8 ? 256 : 1 << dpyinfo->n_planes - 1);
+  /* We force 24+ bit depths to 24-bit to prevent an overflow.  */
+  return make_number (1 << min (dpyinfo->n_planes, 24));
 }
 
 DEFUN ("x-server-max-request-size", Fx_server_max_request_size,
index 54a2fce..55ae1b3 100644 (file)
@@ -8840,10 +8840,16 @@ mac_initialize_display_info ()
   dpyinfo->resx = 75.0;
   dpyinfo->resy = 75.0;
   dpyinfo->color_p = TestDeviceAttribute (main_device_handle, gdDevType);
+#ifdef MAC_OSX
+  /* HasDepth returns true if it is possible to have a 32 bit display,
+     but this may not be what is actually used.  Mac OSX can do better.  */
+  dpyinfo->n_planes = CGDisplayBitsPerPixel (CGMainDisplayID ());
+#else
   for (dpyinfo->n_planes = 32; dpyinfo->n_planes > 0; dpyinfo->n_planes >>= 1)
     if (HasDepth (main_device_handle, dpyinfo->n_planes,
                  gdDevType, dpyinfo->color_p))
       break;
+#endif
   dpyinfo->height = (**main_device_handle).gdRect.bottom;
   dpyinfo->width = (**main_device_handle).gdRect.right;
   dpyinfo->grabbed = 0;