Subject: 27.0.50; pixel-scroll-mode is laggy

From: Valentin Ignatyev <[email-masked]>
Date: Sun, 17 Dec 2017 03:55:34 +1000

================
Hi! I've tried new feature `pixel-scroll-mode` on both emacs-26 and on
master branches. While I see that scrolling became pixel-wise indeed, it
is also very laggy. CPU blows up to 100% and ui hangs and freezes. It
works ok if I scroll slowly though. It happens with all my plugins and
customizations and if I run emacs with -Q flag. My OS is Arch Linux and
I also have HiDPI screen (it's MacBook 11,4, mid-2015). I've also
started this related reddit thread:
https://www.reddit.com/r/emacs/comments/7k7322/pixelscrollmode_wanted/

Thanks a lot for your work, I'd like to give an additional info, but I
don't know exactly what could be helpful.

Cheers, Velentin.
================

In GNU Emacs 27.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.22.26)
 of 2017-12-16 built on vjarch
Repository revision: 506270f9c80bf9bd7dad35a2f0aa6f477da6490b
Windowing system distributor 'The X.Org Foundation', version 11.0.11905000
Recent messages:
Type C-c C-c or C-c C-x to view the image as text or hex.
Can’t guess python-indent-offset, using defaults: 4
Setting up indent for shell type zsh
Indentation variables are now local.
Indentation setup for shell type zsh
Wrote /home/vj/.emacs.d/.emacs.desktop.lock
Desktop: 1 frame, 54 buffers restored.
For information about GNU Emacs and the GNU system, type C-h C-a.
mwheel-scroll: Beginning of buffer [3 times]
Pixel-Scroll mode enabled
pixel-scroll-down: Beginning of buffer
Configured using:
 'configure --prefix=/usr --sysconfdir=/etc --libexecdir=/usr/lib
 --localstatedir=/var --mandir=/usr/share/man --with-gameuser=:games
 --with-sound=alsa --with-xft --with-modules --with-x-toolkit=gtk3
 --without-gconf --without-gsettings --without-gpm --without-m17n-flt
 --without-imagemagick 'CFLAGS=-march=x86-64 -mtune=generic -O2 -pipe
 -fstack-protector-strong -fno-plt' CPPFLAGS=-D_FORTIFY_SOURCE=2
 'LDFLAGS=-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now
 -fuse-ld=gold''

Configured features:
XPM JPEG TIFF GIF PNG RSVG SOUND DBUS NOTIFY ACL GNUTLS LIBXML2 FREETYPE
LIBOTF XFT ZLIB TOOLKIT_SCROLL_BARS GTK3 X11 MODULES LIBSYSTEMD JSON
LCMS2

Important settings:
  value of $LC_ALL: en_US.UTF-8
  value of $LC_CTYPE: en_US.UTF-8
  value of $LANG: en_US.UTF-8
  locale-coding-system: utf-8-unix

Major mode: Outline

Minor modes in effect:
  pixel-scroll-mode: t
  diff-auto-refine-mode: t
  projectile-mode: t
  global-company-mode: t
  company-mode: t
  global-flycheck-mode: t
  flycheck-mode: t
  ivy-mode: t
  global-evil-surround-mode: t
  evil-surround-mode: t
  evil-leader-mode: t
  global-undo-tree-mode: t
  undo-tree-mode: t
  shell-dirtrack-mode: t
  evil-mode: t
  evil-local-mode: t
  override-global-mode: t
  global-auto-revert-mode: t
  global-hl-line-mode: t
  desktop-save-mode: t
  cl-old-struct-compat-mode: t
  show-paren-mode: t
  tooltip-mode: t
  global-eldoc-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
  global-visual-line-mode: t
  visual-line-mode: t
  transient-mark-mode: t
  view-mode: t

Load-path shadows:
None found.

Features:
(shadow sort mail-extr emacsbug sendmail cus-start cus-load pixel-scroll
colir sh-script smie executable conf-mode linum elec-pair vc-git
diff-mode ob-python org-rmail org-mhe org-irc org-info org-gnus nnir
gnus-sum gnus-group gnus-undo gnus-start gnus-cloud nnimap nnmail
mail-source utf7 netrc nnoo gnus-spec gnus-int gnus-range message rfc822
mml mml-sec epa derived epg mm-decode mm-bodies mm-encode mailabbrev
gmm-utils mailheader gnus-win gnus nnheader gnus-util rmail
rmail-loaddefs mail-utils wid-edit org-docview doc-view image-mode
org-bibtex bibtex org-bbdb org-w3m org-element avl-tree generator org
org-macro org-footnote org-pcomplete org-list org-faces org-entities
org-version ob-emacs-lisp ob ob-tangle org-src ob-ref ob-lob ob-table
ob-keys ob-exp ob-comint ob-core ob-eval org-compat org-macs
org-loaddefs cal-menu calendar cal-loaddefs view init yaml-mode ag
vc-svn find-dired dired dired-loaddefs projectile grep compile ibuf-ext
ibuffer ibuffer-loaddefs smartparens-config smartparens-javascript
smartparens-text smartparens-python smartparens-markdown
smartparens-html evil-smartparens smartparens virtualenvwrapper gud
company-anaconda anaconda-mode pythonic f python tramp-sh tramp
tramp-compat tramp-loaddefs trampver ucs-normalize parse-time
format-spec company-tern s dash-functional tern url-http tls gnutls
url-auth mail-parse rfc2231 rfc2047 rfc2045 mm-util ietf-drums
mail-prsvr url-gw nsm rmc puny url url-proxy url-privacy url-expand
url-methods url-history url-cookie url-domsuf url-util mailcap
company-oddmuse company-keywords company-etags company-gtags
company-dabbrev-code company-dabbrev company-files company-capf
company-cmake company-xcode company-clang company-semantic company-eclim
company-template company-css company-nxml company-bbdb company pcase
rjsx-mode js2-mode js sgml-mode dom cc-mode cc-fonts cc-guess cc-menus
cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs imenu markdown-mode
color noutline outline flycheck cl-extra json map find-func help-mode rx
subr-x dash org-bullets counsel jka-compr esh-util etags xref project
swiper ivy delsel ivy-overlay ffap flx evil-surround evil-leader evil
evil-integration undo-tree diff evil-maps evil-commands flyspell ispell
evil-jumps evil-command-window evil-types evil-search evil-ex shell
pcomplete comint ansi-color evil-macros evil-repeat evil-states
evil-core advice evil-common windmove thingatpt rect evil-digraphs
evil-vars ring edmacro kmacro use-package diminish bind-key easy-mmode
finder-inf info package easymenu epg-config url-handlers url-parse
auth-source cl-seq eieio eieio-core cl-macs eieio-loaddefs
password-cache url-vars seq byte-opt gv bytecomp byte-compile cconv
autorevert filenotify hl-line desktop frameset cl-loaddefs cl-lib paren
time-date mule-util tooltip eldoc electric uniquify ediff-hook vc-hooks
lisp-float-type mwheel term/x-win x-win term/common-win x-dnd tool-bar
dnd fontset image regexp-opt fringe tabulated-list replace newcomment
text-mode elisp-mode lisp-mode prog-mode register page menu-bar
rfn-eshadow isearch timer select scroll-bar mouse jit-lock font-lock
syntax facemenu font-core term/tty-colors frame cl-generic cham georgian
utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean
japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european
ethiopic indian cyrillic chinese composite charscript charprop
case-table epa-hook jka-cmpr-hook help simple abbrev obarray minibuffer
cl-preloaded 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 dbusbind inotify lcms2
dynamic-setting font-render-setting move-toolbar gtk x-toolkit x
multi-tty make-network-process emacs)

Memory information:
((conses 16 670270 69821)
 (symbols 48 56909 2)
 (miscs 40 1143 237)
 (strings 32 160583 14753)
 (string-bytes 1 4909395)
 (vectors 16 91715)
 (vector-slots 8 1535197 58450)
 (floats 8 446 340)
 (intervals 56 4061 335)
 (buffers 992 65))