Subject: bug#25851: 25.2; GTK warning when starting Emacs when desktop file has more than one frame

From: martin rudalics <[email-masked]>
Date: Mon, 27 Feb 2017 09:04:40 +0100

> With a desktop file specifying three frames, there seem to be two
 > calls to `make-frame-on-display' (when the second and third frames
 > are created). Each call ultimately results in one of the reported
 > GTK warning messages.
 >
 > Detailed backtraces at these two calls to `make-frame-on-display'
 > are attached.

Thanks.  Please try now with a small init file containing a ‘make-frame’
call with the parameters from these attachments.  For your first entry
I'd suggest to start with bisecting the parameter list in calls like

(make-frame
  '((font-backend xft x)
    (font . "-Bits-Bitstream Vera Sans Mono-normal-normal-normal-*-11-*-*-*-m-0-iso10646-1")
    (font-parameter)
    (border-width . 0)
    (internal-border-width . 0)
    (right-divider-width . 0)
    (bottom-divider-width . 0)
    (vertical-scroll-bars . right)
    (horizontal-scroll-bars)
    (foreground-color . "wheat")
    (background-color . "black")
    (mouse-color . "black")
    (border-color . "black")
    (screen-gamma)
    (line-spacing)
    (left-fringe . 8)
    (right-fringe . 0)
    (scroll-bar-foreground)
    (scroll-bar-background)
    (menu-bar-lines . 0)
    (tool-bar-lines . 0)
    (title)
    (wait-for-wm . t)
    (tool-bar-position . top)
    (icon-type . t)
    (auto-raise)
    (auto-lower)
    (cursor-type . box)
    (scroll-bar-width . 16)
    (scroll-bar-height . 0)
    (alpha)
    (fullscreen . fullboth)
    (display-type . color)
    (background-mode . dark)
    (cursor-color . "thistle")
    (visibility . t)
    (sticky)
    (frameset--id . "8B00-9439-83D1-B48B")
    (frameset--mini t)
    (modeline . t)
    (minibuffer . t)
    (unsplittable)
    (icon-name)
    (display . ":0")
    (explicit-name)
    (fullscreen-restore . maximized)
    (height . 59)
    (width . 191)
    (left . 0)
    (top . 0)))

Everything contained in these

  (((min-height . 4)
    (min-width . 21)
    (min-height-ignore . 2)
    (min-width-ignore . 21)
    (min-height-safe . 1)
    (min-width-safe . 4)
    (min-pixel-height . 52)
    (min-pixel-width . 147)
    (min-pixel-height-ignore . 26)
    (min-pixel-width-ignore . 147)
    (min-pixel-height-safe . 13)
    (min-pixel-width-safe . 28))
   hc
   (pixel-width . 1366)
   (pixel-height . 755)
   (total-width . 195)
   (total-height . 58)
   (normal-height . 1.0)
   (normal-width . 1.0)
   (combination-limit)
   (leaf
    (pixel-width . 686)
    (pixel-height . 755)
    (total-width . 98)
    (total-height . 58)
    (normal-height . 1.0)
    (normal-width . 0.5034246575342466)
    (buffer "gtkutil.c"
	   (selected . t)
	   (hscroll . 0)
	   (fringes 8 0 nil)
	   (margins 4)
	   (scroll-bars nil 3 t nil 0 t)
	   (vscroll . 0)
	   (dedicated)
	   (point . 25202)
	   (start . 23482)))
   (leaf
    (last . t)
    (pixel-width . 680)
    (pixel-height . 755)
    (total-width . 97)
    (total-height . 58)
    (normal-height . 1.0)
    (normal-width . 0.4965753424657534)
    (buffer "gtkwindow.c"
	   (selected)
	   (hscroll . 0)
	   (fringes 8 0 nil)
	   (margins 5)
	   (scroll-bars nil 3 t nil 0 t)
	   (vscroll . 0)
	   (dedicated)
	   (point . 346800)
	   (start . 346686))))

that is stuff prefixed by min-, hc, vc and leaf is hopefully irrelevant.
The following

  ((background-color . frameset-filter-sanitize-color)
   (buffer-list . :never)
   (buffer-predicate . :never)
   (buried-buffer-list . :never)
   (font . frameset-filter-shelve-param)
   (foreground-color . frameset-filter-sanitize-color)
   (fullscreen . frameset-filter-shelve-param)
   (GUI:font . frameset-filter-unshelve-param)
   (GUI:fullscreen . frameset-filter-unshelve-param)
   (GUI:height . frameset-filter-unshelve-param)
   (GUI:width . frameset-filter-unshelve-param)
   (height . frameset-filter-shelve-param)
   (outer-window-id . :never)
   (parent-id . :never)
   (tty . frameset-filter-tty-to-GUI)
   (tty-type . frameset-filter-tty-to-GUI)
   (width . frameset-filter-shelve-param)
   (window-id . :never)
   (window-system . :never)
   (name . :never)
   (left . frameset-filter-iconified)
   (minibuffer . frameset-filter-minibuffer)
   (top . frameset-filter-iconified))

might be relevant but if so we have to consult Juanma how to extract
useful information from it.

IIUC you saved two frames.  Please try whether you can reproduce the
problem with one frame only.  If not, you need two ‘make-frame’ calls.

Thanks again, martin