svn commit: r258091 - user/ed/newcons/sys/dev/vt
Aleksandr Rybalko
ray at FreeBSD.org
Wed Nov 13 12:34:25 UTC 2013
Author: ray
Date: Wed Nov 13 12:34:24 2013
New Revision: 258091
URL: http://svnweb.freebsd.org/changeset/base/258091
Log:
Move vt_mouse_event out of sysmouse lock.
Sponsored by: The FreeBSD Foundation
Modified:
user/ed/newcons/sys/dev/vt/vt_sysmouse.c
Modified: user/ed/newcons/sys/dev/vt/vt_sysmouse.c
==============================================================================
--- user/ed/newcons/sys/dev/vt/vt_sysmouse.c Wed Nov 13 12:32:41 2013 (r258090)
+++ user/ed/newcons/sys/dev/vt/vt_sysmouse.c Wed Nov 13 12:34:24 2013 (r258091)
@@ -138,7 +138,7 @@ sysmouse_process_event(mouse_info_t *mi)
0,
};
unsigned char buf[MOUSE_SYS_PACKETSIZE];
- int x, y, z;
+ int x, y, iy, z;
random_harvest(mi, sizeof *mi, 2, RANDOM_MOUSE);
@@ -171,7 +171,6 @@ sysmouse_process_event(mouse_info_t *mi)
if (sysmouse_status.flags == 0)
goto done;
- vt_mouse_event(mi->operation, x, y, mi->u.event.id, mi->u.event.value);
/* The first five bytes are compatible with MouseSystems. */
buf[0] = MOUSE_MSC_SYNC |
@@ -179,9 +178,9 @@ sysmouse_process_event(mouse_info_t *mi)
x = imax(imin(x, 255), -256);
buf[1] = x >> 1;
buf[3] = x - buf[1];
- y = -imax(imin(y, 255), -256);
- buf[2] = y >> 1;
- buf[4] = y - buf[2];
+ iy = -imax(imin(y, 255), -256);
+ buf[2] = iy >> 1;
+ buf[4] = iy - buf[2];
/* Extended part. */
z = imax(imin(z, 127), -128);
buf[5] = (z >> 1) & 0x7f;
@@ -190,6 +189,11 @@ sysmouse_process_event(mouse_info_t *mi)
buf[7] = (~sysmouse_status.button >> 3) & 0x7f;
sysmouse_buf_store(buf);
+
+ mtx_unlock(&sysmouse_lock);
+ vt_mouse_event(mi->operation, x, y, mi->u.event.id, mi->u.event.value);
+ return;
+
done: mtx_unlock(&sysmouse_lock);
}
More information about the svn-src-user
mailing list