Subject: bug#911: bug#598: 23.0.60; frame size issue (--geometry or default-frame-alist) when using customized default face

From: "Tim Van Holder" <[email-masked]>
Date: Wed, 1 Oct 2008 11:52:47 +0200

On Wed, Oct 1, 2008 at 10:47 AM, martin rudalics <[email-masked]> wrote:
>> I'm also getting max-specpdl-size exceeded on C-x 5 2, so I cannot check
>> the
>> previously observed behaviour that even when the initial frame is
>> erratically
>> sized, subsequent frames are fine.
>
> That's most likely bug#911 (aka nine-eleven) see
>
> http://debbugs.gnu.org/cgi/bugreport.cgi?bug=911
>
> Could you try the recipe Chong gave there?

I tried a slightly different recipe (below) and that made the error go away.
I assume Chong's will work as well - I just wanted to set the inhibit
flag as early as possible (and I wasn't 100% sure whether or not the let
would use the defvar'd flag instead of its own scoped var).

--- faces.el.~1.425.~	2008-09-25 10:49:34.000000000 +0200
+++ faces.el	2008-10-01 11:48:01.000000000 +0200
@@ -1839,10 +1839,13 @@ variable with `setq'; this won't have th
 (declare-function x-get-resource "frame.c"
 		  (attribute class &optional component subclass))

+(defvar inhibit-frame-set-background-mode nil)
 (defun frame-set-background-mode (frame)
   "Set up display-dependent faces on FRAME.
 Display-dependent faces are those which have different definitions
 according to the `background-mode' and `display-type' frame parameters."
+  (unless inhibit-frame-set-background-mode
+    (setq inhibit-frame-set-background-mode t)
   (let* ((bg-resource
 	  (and (window-system frame)
 	       (x-get-resource "backgroundMode" "BackgroundMode")))
@@ -1914,7 +1917,8 @@ according to the `background-mode' and `
 	;; parameters, unless they have been locally modified.
 	(dolist (face (face-list))
 	  (unless (memq face locally-modified-faces)
-	    (face-spec-recalc face frame)))))))
+	    (face-spec-recalc face frame))))))
+      (setq inhibit-frame-set-background-mode nil)))

 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;