]> git.eshelyaron.com Git - emacs.git/commitdiff
* frame.c (x_set_screen_gamma): Apply gamma value to the frame's bgcolor.
authorChong Yidong <cyd@stupidchicken.com>
Tue, 20 Feb 2007 01:56:11 +0000 (01:56 +0000)
committerChong Yidong <cyd@stupidchicken.com>
Tue, 20 Feb 2007 01:56:11 +0000 (01:56 +0000)
src/frame.c

index 8580ef79ad66e2c3138714196446fe3c914d5955..5990b9e07177652205398668571af7826e837e5c 100644 (file)
@@ -3057,18 +3057,30 @@ x_set_screen_gamma (f, new_value, old_value)
      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);
 }