[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debbugs-tracker] bug#18912: closed (24.4; mode-line corruption on graph

From: GNU bug Tracking System
Subject: [debbugs-tracker] bug#18912: closed (24.4; mode-line corruption on graphical frames in dual-headed display)
Date: Thu, 06 Nov 2014 03:46:04 +0000

Your message dated Thu, 06 Nov 2014 05:45:53 +0200
with message-id <address@hidden>
and subject line Re: bug#18912: 24.4; mode-line corruption on graphical frames 
in dual-headed display
has caused the debbugs.gnu.org bug report #18912,
regarding 24.4; mode-line corruption on graphical frames in dual-headed display
to be marked as done.

(If you believe you have received this mail in error, please contact

18912: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=18912
GNU Bug Tracking System
Contact address@hidden with problems
--- Begin Message --- Subject: 24.4; mode-line corruption on graphical frames in dual-headed display Date: Thu, 30 Oct 2014 11:46:29 -0200 User-agent: Mozilla/5.0 (X11; Linux i686; rv:33.0) Gecko/20100101 Firefox/33.0 SeaMonkey/2.30
In the following single-headed setup GNU Emacs behaves as intended:

  Screen 0: minimum 320 x 200, current 1024 x 600, maximum 4096 x 4096
  VGA1 connected primary (normal left inverted right x axis y axis)
     1280x720      59.86 +
     1024x768      75.08    70.07    60.00
     832x624       74.55
     800x600       72.19    75.00    60.32    56.25
     640x480       75.00    72.81    66.67    60.00
     720x400       70.08
  LVDS1 connected 1024x600+0+0 (normal left inverted right x axis y
axis) 228mm x 131mm
     1024x600      59.99*+
     800x600       60.32    56.25
     640x480       59.94

In this setup, as you can see, only the LVDS1 output is enabled.

However in my usual setup I have both outputs enabled for a dual-headed

  Screen 0: minimum 320 x 200, current 2304 x 720, maximum 4096 x 4096
  VGA1 connected primary 1280x720+0+0 (normal left inverted right x axis
y axis) 340mm x 270mm
     1280x720      59.86*+
     1024x768      75.08    70.07    60.00
     832x624       74.55
     800x600       72.19    75.00    60.32    56.25
     640x480       75.00    72.81    66.67    60.00
     720x400       70.08
  LVDS1 connected 1024x600+1280+120 (normal left inverted right x axis y
axis) 228mm x 131mm
     1024x600      59.99*+
     800x600       60.32    56.25
     640x480       59.94

In this setup GNU Emacs corrupts the mode-line (a graphical glitch)
drawing over it the buffer's line that would otherwise be below it.

Refreshing the window with 'xrefresh' or just switching to another
window and back again repaints the mode-line content, so it looks
normal, until the next buffer scroll operation, when it gets corrupt

Starting Emacs with the '-Q' option, without changing the frame's
geometry, and typing 'C-x d /dev <RET>' is sufficient to reproduce the
bug.  Actually, most of the time, Emacs windows that hold text
underneath the mode-line trigger the problem.

See the attached screenshot for how the corrupted mode-line looks like.

In GNU Emacs 24.4.1 (i686-pc-linux-gnu, X toolkit, Xaw3d scroll bars)
 of 2014-10-30 on felix-laptop
Windowing system distributor `The X.Org Foundation', version 11.0.11601000
System Description:     Debian GNU/Linux testing (jessie)

Configured using:
 `configure --prefix=/home/felix/opt/emacs-24.4 --with-x-toolkit=athena'

Important settings:
  value of $LANG: pt_BR.utf8
  locale-coding-system: utf-8-unix

Major mode: Info

Minor modes in effect:
  diff-auto-refine-mode: t
  shell-dirtrack-mode: t
  global-semanticdb-minor-mode: t
  global-semantic-idle-scheduler-mode: t
  semantic-mode: t
  winner-mode: t
  electric-pair-mode: t
  show-paren-mode: t
  display-time-mode: t
  which-function-mode: t
  tooltip-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  buffer-read-only: t
  column-number-mode: t
  line-number-mode: t

Load-path shadows:
None found.

(shadow sort mail-extr emacsbug sendmail reposition calc-alg calc-ext
calc-menu calc calc-loaddefs calc-macs crm org org-macro org-footnote
org-pcomplete org-list org-faces org-entities org-version ob-emacs-lisp
ob ob-tangle ob-ref ob-lob ob-table ob-exp org-src ob-keys ob-comint
ob-core ob-eval org-compat org-macs org-loaddefs debbugs-gnu derived
debbugs cl-macs cl soap-client warnings xml diff-mode diff autoload
tar-mode lisp-mnt mm-archive message format-spec rfc822 mml mml-sec
mailabbrev gmm-utils mailheader mm-decode mm-bodies mm-encode mail-utils
network-stream starttls url-http tls mail-parse rfc2231 rfc2047 rfc2045
ietf-drums url-gw url-cache url-auth url url-proxy url-privacy
url-expand url-methods url-history url-cookie url-domsuf url-util
mailcap url-handlers url-parse auth-source gnus-util mm-util mail-prsvr
password-cache url-vars epg finder-inf browse-url goto-addr shell
pcomplete grep compile dired-aux dired dabbrev cus-edit wid-edit
cus-start cus-load noutline outline view apropos gdb-mi bindat json gud
easy-mmode comint ansi-color linum mule-util cal-move cal-menu calendar
cal-loaddefs semantic/tag-write jka-compr misearch multi-isearch
semantic/symref/list semantic/complete eieio-opt semantic/sb speedbar
sb-image dframe find-func semantic/symref semantic/analyze/complete
semantic/db-typecache semantic/ia semantic/senator semantic/edit
help-mode thingatpt semantic/tag-file add-log semantic/imenu advice
semantic/db-file data-debug cedet-files semantic/bovine/c
semantic/decorate/include semantic/decorate/mode semantic/decorate pulse
hideif semantic/bovine/c-by semantic/lex-spp semantic/bovine/gcc
semantic/dep semantic/bovine semantic/analyze/refs semantic/db-find
semantic/db-ref semantic/analyze semantic/sort semantic/scope
semantic/analyze/fcn superword subword cc-langs cc-mode cc-fonts
cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs
server eldoc help-fns paredit hideshow glasses flyspell ispell
semantic/db-mode semantic/db gv eieio-base semantic/idle semantic/format
ezimage semantic/tag-ls semantic/find semantic/ctxt semantic/util-modes
semantic/util semantic semantic/tag semantic/lex semantic/fw eieio
byte-opt bytecomp byte-compile cconv eieio-core mode-local cedet
windmove winner ring elec-pair paren time time-date which-func imenu
edmacro kmacro cl-loaddefs cl-lib auctex-autoloads company-autoloads
dired-details+-autoloads dired-details-autoloads info easymenu
geiser-autoloads google-translate-autoloads paredit-autoloads
quack-autoloads sokoban-autoloads package epg-config tooltip electric
uniquify ediff-hook vc-hooks lisp-float-type mwheel x-win x-dnd tool-bar
dnd fontset image regexp-opt fringe tabulated-list newcomment lisp-mode
prog-mode register page menu-bar rfn-eshadow timer select scroll-bar
mouse jit-lock font-lock syntax facemenu font-core frame cham georgian
utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean
japanese hebrew greek romanian slovak czech european ethiopic indian
cyrillic chinese case-table epa-hook jka-cmpr-hook help simple abbrev
minibuffer nadvice loaddefs button faces cus-face macroexp files
text-properties overlay sha1 md5 base64 format env code-pages mule
custom widget hashtable-print-readable backquote make-network-process
dbusbind gfilenotify dynamic-setting system-font-setting
font-render-setting x-toolkit x multi-tty emacs)

Memory information:
((conses 8 474862 160898)
 (symbols 24 44010 0)
 (miscs 20 6276 2576)
 (strings 16 101774 31471)
 (string-bytes 1 2940699)
 (vectors 8 39166)
 (vector-slots 4 725772 24178)
 (floats 8 2008 461)
 (intervals 28 12998 46)
 (buffers 512 38)
 (heap 1024 53384 2385))

 ,= ,-_-. =.  Bruno Félix Rezende Ribeiro (oitofelix) [0x28D618AF]
((_/)o o(\_)) There is no system but GNU;
 `-'(. .)`-'  GNU Linux-Libre is one of its official kernels;
     \_/      All software must be free as in freedom;

Attachment: emacs-mode-line-bug.png
Description: PNG image

Attachment: signature.asc
Description: OpenPGP digital signature

--- End Message ---
--- Begin Message --- Subject: Re: bug#18912: 24.4; mode-line corruption on graphical frames in dual-headed display Date: Thu, 06 Nov 2014 05:45:53 +0200
> Date: Wed, 05 Nov 2014 19:38:52 -0200
> From: Bruno Félix Rezende Ribeiro <address@hidden>
> CC: address@hidden
> > Finally, type inside Emacs:
> > 
> > M-: (set-window-vscroll nil 5 t) RET
> > 
> > How many mode lines did that corrupt?
> Immediately after the command, completely the lower one, and only
> slightly the upper one.

The "slightly" part depends on the value of vscroll, which was 5 in
this experiment.  You can play with the 2nd argument of
set-window-vscroll to see the effect.

> > If both mode lines become corrupted, does xrefresh succeed in fixing 
> > that?
> It *does* succeed in fixing the lower mode-line (the current one).
> The upper one continues slightly corrupted until it becomes the
> current one (eg. by 'C-x o'), in which case it becomes fine until next
> scrolling.

Which means, as I hope you understand, that to do what you want, Emacs
needs to have a very clever global strategy for refreshing the mode
lines, which considers all the windows that were updated, instead of
treating each window separately, which is what it does now.

> > Bonus points for repeating the above after setting mode-line-format
> > to nil.  I expect you to see that the 2 windows corrupt each other
> > in that case.
> Indeed.  The upper one is corrupting the first line of the lower one.
> However, scrolling the lower one redraws that line and it doesn't get
> corrupted again until scrolling the upper window.

In this case, there are no mode lines to refresh, so this directly
affects the order in which redisplay redraws lines in each window.

I think we have spent enough time on this, and we understand well
enough that this problem cannot be possibly solved by Emacs in any
reasonably simple way.  So I'm closing this bug, as this is not an
Emacs problem.  My suggestion to you is to upgrade your video firmware
and device driver, or disable acceleration.

--- End Message ---

reply via email to

[Prev in Thread] Current Thread [Next in Thread]