changeset 76029:a235d0ff326b

* frame.c (x_set_screen_gamma): Apply gamma value to the frame's bgcolor.
author Chong Yidong <cyd@stupidchicken.com>
date Tue, 20 Feb 2007 01:56:11 +0000
parents 74b530027eb3
children efb5f82c7b14
files src/frame.c
diffstat 1 files changed, 18 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/src/frame.c	Tue Feb 20 01:56:02 2007 +0000
+++ b/src/frame.c	Tue Feb 20 01:56:11 2007 +0000
@@ -3057,18 +3057,30 @@
      struct frame *f;
      Lisp_Object new_value, old_value;
 {
+  Lisp_Object bgcolor;
+
   if (NILP (new_value))
     f->gamma = 0;
   else if (NUMBERP (new_value) && XFLOATINT (new_value) > 0)
-    {
-      Fclear_face_cache (Qnil);
-      /* The value 0.4545 is the normal viewing gamma.  */
-      f->gamma = 1.0 / (0.4545 * XFLOATINT (new_value));
-    }
+    /* The value 0.4545 is the normal viewing gamma.  */
+    f->gamma = 1.0 / (0.4545 * XFLOATINT (new_value));
   else
     signal_error ("Invalid screen-gamma", new_value);
 
-  clear_face_cache (0);
+  /* Apply the new gamma value to the frame background.  */
+  bgcolor = Fassq (Qbackground_color, f->param_alist);
+  if (CONSP (bgcolor) && (bgcolor = XCDR (bgcolor), STRINGP (bgcolor)))
+    {
+      Lisp_Object index = Fget (Qbackground_color, Qx_frame_parameter);
+      if (NATNUMP (index)
+	  && (XFASTINT (index)
+	      < sizeof (frame_parms)/sizeof (frame_parms[0]))
+	  && rif->frame_parm_handlers[XFASTINT (index)])
+	(*(rif->frame_parm_handlers[XFASTINT (index)]))
+	  (f, bgcolor, Qnil);
+    }
+
+  Fclear_face_cache (Qnil);
 }