freebsd-skq/sys
Bruce Evans e53fbbe661 Fix removal of the keyboard cursor image in text mode, especially
in the vga renderer.  Removal used stale attributes and didn't try to
merge with the current attribute for cut marking, so special rendering
of cut marking was lost in many cases.  The gfb renderer is too broken
to support special rendering of cut marking at all, so this change is
supposed to be just a style fix for it.  Remove all traces of the
saveunder method which was used to implement this bug.

Fix drawing of the cursor image in text mode, only in the vga
renderer.  This used a stale attribute from the frame buffer instead
of from the saveunder, but did merge with the current attribute for
cut marking so it caused less obvious bugs (subtle misrendering for
the character under the cursor).

The saveunder method may be good in simpler drivers, but in syscons
the 'under' is already saved in a better way in the vtb.  Just redraw
it from there, with visible complications for cut marking and
invisible complications for mouse cursors.  Almost all drawing
requests are passed a flag 'flip' which currently means to flip to
reverse video for characters in the cut marking region, but should
mean that the the characters are in the cut marking regions so should
be rendered specially, preferably using something better than reverse
video.  The gfb renderer always ignores this flag.  The vga renderer
ignored it for removal of the text cursor -- the saveunder gave the
stale rendering at the time the cursor was drawn.  Mouse cursors need
even more complicated methods.  They are handled by drawing them last
and removing them first.  Removing them usually redraws many other
characters with the correct cut marking (but transiently loses the
keyboard cursor, which is redrawn soon).  This tended to hide the
saveunder bug for forward motions of the keyboard cursor.  But slow
backward motions of the keyboard cursor always lost the cut marking,
and fast backwards motions lost in for about 4 in every 5 characters,
depending on races with the scrn_update() timeout handler.  This is
because the forward motions are usually into the region redrawn for
the mouse cursor, while backwards motions rarely are.

Text cursor drawing in the vga renderer used also used a
possibly-stale copy of the character and its attribute.  The vga
render has the "optimization" of sometimes reading characters from the
screen instead of from the vtb (this was not so good even in 1990 when
main memory was only a few times faster than video RAM).  Due to care
in update orders, the character is never stale, but its attribute
might be (just the cut marking part, again due to care in order).

gfb doesn't have the scp->scr pointer used for the "optimization", and
vga only uses this pointer for text mode.  So most cases have to
refresh from the vtb, and we can be sure that the ordering of vtb
updates and drawing is as required for this to work.
2017-04-08 08:24:25 +00:00
..
amd64 revert r315959 because it causes build problems 2017-03-27 12:34:29 +00:00
arm Fix spelling mistake, BCM2835_PASWORD -> BCM2835_PASSWORD 2017-04-03 22:36:45 +00:00
arm64 Define 'lr' as x30 on aarch64 2017-04-07 22:58:28 +00:00
boot Silence GCC warning by initializing the local variable. 2017-04-07 22:58:34 +00:00
bsm Merge OpenBSM 1.2-alpha5 from vendor branch to FreeBSD -CURRENT: 2017-03-26 21:14:49 +00:00
cam Split iscsi(4) ctl frontend off of ctl(4) as cfiscsi(4) 2017-03-30 04:56:27 +00:00
cddl Fix expandsz 16.0E vals and vdev_min_asize of RAIDZ children 2017-04-03 13:11:28 +00:00
compat Create the LinuxKPI current task structure on the fly if it doesn't 2017-04-07 14:43:28 +00:00
conf Revert previous change to sys/conf/options & associated notes so builds can 2017-04-07 21:06:50 +00:00
contrib Copy needed include files from EDK2. This is a minimal set gleened 2017-03-08 02:47:59 +00:00
crypto Implement boot-time encryption key passing (keybuf) 2017-04-01 05:05:22 +00:00
ddb Fix printing of negative offsets (typically from frame pointers) again. 2017-03-26 18:46:35 +00:00
dev Fix removal of the keyboard cursor image in text mode, especially 2017-04-08 08:24:25 +00:00
fs smbfs: Fix an indentation level 2017-04-06 17:31:58 +00:00
gdb
geom Implement boot-time encryption key passing (keybuf) 2017-04-01 05:05:22 +00:00
gnu Update our device tree files to a Linux 4.10 2017-03-07 13:56:49 +00:00
i386 Adjust the constraint for "src" in atomic_(f)cmpset_8. 2017-03-27 16:18:19 +00:00
isa Renumber copyright clause 4 2017-02-28 23:42:47 +00:00
kern kern_descrip: Move kinfo_ofile size assert under COMPAT_FREEBSD7 2017-04-07 05:00:09 +00:00
kgssapi
libkern Use inline asm instead of unportable intrinsics for the SSE4 crc32 2017-03-26 10:31:48 +00:00
mips Remove dead code/ifdef. 2017-04-04 08:17:03 +00:00
modules Remove the last vestiges of FDC_DEBUG & FD_DEBUG 2017-04-07 16:14:25 +00:00
net Fixed typo in comment found while reading commit email for fix of 2017-04-08 04:50:50 +00:00
net80211 [net80211] refactor out the A-MPDU dispatch routine. 2017-04-06 01:35:42 +00:00
netgraph mppc - Finish pluging NETGRAPH_MPPC_COMPRESSION. 2017-01-20 00:02:11 +00:00
netinet Revert the optimization from r304436 2017-04-05 16:57:13 +00:00
netinet6 Allow explicitly assigned IPv6 loopback address to be used in jails 2017-03-31 09:10:05 +00:00
netipsec When we are doing SA lookup for TCP-MD5, check both source and 2017-04-04 13:41:50 +00:00
netnatm
netpfil Remove "IPFW static rules" rmlock. 2017-04-03 13:35:04 +00:00
netsmb
nfs Renumber copyright clause 4 2017-02-28 23:42:47 +00:00
nfsclient Renumber copyright clause 4 2017-02-28 23:42:47 +00:00
nfsserver Renumber copyright clause 4 2017-02-28 23:42:47 +00:00
nlm
ofed Add full VNET support to the inet_get_local_port_range() function in 2017-03-22 15:46:31 +00:00
opencrypto Don't leak a session and lock if a GMAC key has an invalid length. 2017-04-05 01:46:41 +00:00
powerpc Add Freescale eSPI driver found on QorIQ SoCs 2017-04-02 01:21:35 +00:00
riscv Fix printing of negative offsets (typically from frame pointers) again. 2017-03-26 18:46:35 +00:00
rpc Renumber copyright clause 4 2017-02-28 23:42:47 +00:00
security Break audit_bsm_klib.c into two files: one (audit_bsm_klib.c) 2017-04-03 10:15:58 +00:00
sparc64 Revert previous change to sys/conf/options & associated notes so builds can 2017-04-07 21:06:50 +00:00
sys Fixed typo. 2017-04-08 04:41:46 +00:00
teken Oops, my fix for bright colors broke bright black some more (in cases 2017-03-27 10:48:28 +00:00
tests
tools [fdt] Make DTBs generated by make_dtb.sh overlay-ready 2017-03-10 22:45:07 +00:00
ufs ufs: Export UFS_MAXNAMLEN to pathconf, statfs 2017-04-05 01:44:03 +00:00
vm Extract calculation of ioflags from the vm_pager_putpages flags into a 2017-04-05 16:56:04 +00:00
x86 revert r315959 because it causes build problems 2017-03-27 12:34:29 +00:00
xdr
xen xenstore: fix suspension when using the xenstore device 2017-03-07 09:17:48 +00:00
Makefile Remove pc98 support completely. 2017-01-28 02:22:15 +00:00