# HG changeset patch # User Jan Dj¸«£rv # Date 1087477465 0 # Node ID 5e784b2ea638d4d5afc4376056656c9df56f6c6d # Parent 80340a31718d16c9211d1a902356bde35108aa45 * 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. diff -r 80340a31718d -r 5e784b2ea638 src/ChangeLog --- a/src/ChangeLog Thu Jun 17 08:33:27 2004 +0000 +++ b/src/ChangeLog Thu Jun 17 13:04:25 2004 +0000 @@ -1,3 +1,10 @@ +2004-06-17 Jan Dj,Ad(Brv + + * 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 * buffer.c (syms_of_buffer): Clarify `fill-column' docstring. diff -r 80340a31718d -r 5e784b2ea638 src/macfns.c --- a/src/macfns.c Thu Jun 17 08:33:27 2004 +0000 +++ b/src/macfns.c Thu Jun 17 13:04:25 2004 +0000 @@ -2939,8 +2939,8 @@ { 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, diff -r 80340a31718d -r 5e784b2ea638 src/macterm.c --- a/src/macterm.c Thu Jun 17 08:33:27 2004 +0000 +++ b/src/macterm.c Thu Jun 17 13:04:25 2004 +0000 @@ -8840,10 +8840,16 @@ 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;