Reset reports on thread create and device disconnection

This ensures that if the device gets disconnected while the axis is held
outside of the default position, the axis will get reset.
reverse-scroll
nirenjan 2021-09-14 17:24:05 -07:00
parent 276b512478
commit 2a8ca8424e
4 changed files with 40 additions and 28 deletions

View File

@ -71,6 +71,8 @@ static void *x52_io_thr(void *param)
case LIBX52IO_ERROR_NO_DEVICE: case LIBX52IO_ERROR_NO_DEVICE:
PINELOG_TRACE("Device disconnected, signaling I/O connect thread"); PINELOG_TRACE("Device disconnected, signaling I/O connect thread");
/* Report a NULL report to reset the mouse to default state */
x52d_mouse_report_event(NULL);
connected = false; connected = false;
break; break;

View File

@ -106,6 +106,15 @@ static int report_axis(int axis, int index)
return rc; return rc;
} }
static void reset_reports(void)
{
memset((void *)&old_report, 0, sizeof(old_report));
/* Set the default thumbstick values to the mid-point */
old_report.axis[LIBX52IO_AXIS_THUMBX] = 8;
old_report.axis[LIBX52IO_AXIS_THUMBY] = 8;
memcpy((void *)&new_report, (void *)&old_report, sizeof(new_report));
}
static void * x52_mouse_thr(void *param) static void * x52_mouse_thr(void *param)
{ {
bool state_changed; bool state_changed;
@ -166,11 +175,7 @@ void x52d_mouse_evdev_thread_control(bool enabled)
PINELOG_TRACE("Ignoring re-enable mouse thread"); PINELOG_TRACE("Ignoring re-enable mouse thread");
return; return;
} else { } else {
memset((void *)&old_report, 0, sizeof(old_report)); reset_reports();
/* Set the default thumbstick values to the mid-point */
old_report.axis[LIBX52IO_AXIS_THUMBX] = 8;
old_report.axis[LIBX52IO_AXIS_THUMBY] = 8;
memcpy((void *)&new_report, (void *)&old_report, sizeof(new_report));
x52d_mouse_thr_init(); x52d_mouse_thr_init();
} }
} else { } else {
@ -186,7 +191,11 @@ void x52d_mouse_evdev_thread_control(bool enabled)
void x52d_mouse_report_event(libx52io_report *report) void x52d_mouse_report_event(libx52io_report *report)
{ {
if (report) {
memcpy((void *)&new_report, report, sizeof(new_report)); memcpy((void *)&new_report, report, sizeof(new_report));
} else {
reset_reports();
}
} }
void x52d_mouse_evdev_init(void) void x52d_mouse_evdev_init(void)
@ -217,6 +226,7 @@ void x52d_mouse_evdev_init(void)
void x52d_mouse_evdev_exit(void) void x52d_mouse_evdev_exit(void)
{ {
x52d_mouse_evdev_thread_control(false);
mouse_uidev_created = false; mouse_uidev_created = false;
libevdev_uinput_destroy(mouse_uidev); libevdev_uinput_destroy(mouse_uidev);
} }

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: x52pro-linux 0.2.2\n" "Project-Id-Version: x52pro-linux 0.2.2\n"
"Report-Msgid-Bugs-To: https://github.com/nirenjan/x52pro-linux/issues\n" "Report-Msgid-Bugs-To: https://github.com/nirenjan/x52pro-linux/issues\n"
"POT-Creation-Date: 2021-09-14 17:04-0700\n" "POT-Creation-Date: 2021-09-14 17:33-0700\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -724,22 +724,22 @@ msgstr ""
msgid "Error %d opening X52 I/O device: %s" msgid "Error %d opening X52 I/O device: %s"
msgstr "" msgstr ""
#: daemon/x52d_io.c:78 #: daemon/x52d_io.c:80
#, c-format #, c-format
msgid "Error %d reading from X52 I/O device: %s" msgid "Error %d reading from X52 I/O device: %s"
msgstr "" msgstr ""
#: daemon/x52d_io.c:97 #: daemon/x52d_io.c:99
#, c-format #, c-format
msgid "Error %d initializing X52 I/O library: %s" msgid "Error %d initializing X52 I/O library: %s"
msgstr "" msgstr ""
#: daemon/x52d_io.c:103 #: daemon/x52d_io.c:105
#, c-format #, c-format
msgid "Error %d initializing I/O driver thread: %s" msgid "Error %d initializing I/O driver thread: %s"
msgstr "" msgstr ""
#: daemon/x52d_io.c:110 #: daemon/x52d_io.c:112
msgid "Shutting down X52 I/O driver thread" msgid "Shutting down X52 I/O driver thread"
msgstr "" msgstr ""
@ -773,28 +773,28 @@ msgstr ""
msgid "Error writing mouse axis event (axis %d, value %d)" msgid "Error writing mouse axis event (axis %d, value %d)"
msgstr "" msgstr ""
#: daemon/x52d_mouse_evdev.c:114 #: daemon/x52d_mouse_evdev.c:123
msgid "Starting X52 virtual mouse driver thread" msgid "Starting X52 virtual mouse driver thread"
msgstr "" msgstr ""
#: daemon/x52d_mouse_evdev.c:127 #: daemon/x52d_mouse_evdev.c:136
msgid "Error writing mouse sync event" msgid "Error writing mouse sync event"
msgstr "" msgstr ""
#: daemon/x52d_mouse_evdev.c:146 #: daemon/x52d_mouse_evdev.c:155
#, c-format #, c-format
msgid "Error %d initializing mouse thread: %s" msgid "Error %d initializing mouse thread: %s"
msgstr "" msgstr ""
#: daemon/x52d_mouse_evdev.c:153 #: daemon/x52d_mouse_evdev.c:162
msgid "Shutting down X52 virtual mouse driver thread" msgid "Shutting down X52 virtual mouse driver thread"
msgstr "" msgstr ""
#: daemon/x52d_mouse_evdev.c:160 #: daemon/x52d_mouse_evdev.c:169
msgid "Virtual mouse not created. Ignoring thread state change" msgid "Virtual mouse not created. Ignoring thread state change"
msgstr "" msgstr ""
#: daemon/x52d_mouse_evdev.c:211 #: daemon/x52d_mouse_evdev.c:220
#, c-format #, c-format
msgid "Error %d creating X52 virtual mouse: %s" msgid "Error %d creating X52 virtual mouse: %s"
msgstr "" msgstr ""

View File

@ -7,7 +7,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: x52pro-linux 0.2.1\n" "Project-Id-Version: x52pro-linux 0.2.1\n"
"Report-Msgid-Bugs-To: https://github.com/nirenjan/x52pro-linux/issues\n" "Report-Msgid-Bugs-To: https://github.com/nirenjan/x52pro-linux/issues\n"
"POT-Creation-Date: 2021-09-14 17:04-0700\n" "POT-Creation-Date: 2021-09-14 17:33-0700\n"
"PO-Revision-Date: 2021-09-14 17:07-0700\n" "PO-Revision-Date: 2021-09-14 17:07-0700\n"
"Last-Translator: Nirenjan Krishnan <nirenjan@gmail.com>\n" "Last-Translator: Nirenjan Krishnan <nirenjan@gmail.com>\n"
"Language-Team: Dummy Language for testing i18n\n" "Language-Team: Dummy Language for testing i18n\n"
@ -773,22 +773,22 @@ msgstr "Artingstay X52 I/O eadthray"
msgid "Error %d opening X52 I/O device: %s" msgid "Error %d opening X52 I/O device: %s"
msgstr "Erroray %d openingay X52 I/O eviceday: %s" msgstr "Erroray %d openingay X52 I/O eviceday: %s"
#: daemon/x52d_io.c:78 #: daemon/x52d_io.c:80
#, c-format #, c-format
msgid "Error %d reading from X52 I/O device: %s" msgid "Error %d reading from X52 I/O device: %s"
msgstr "Erroray %d eadingray omfray X52 I/O eviceday: %s" msgstr "Erroray %d eadingray omfray X52 I/O eviceday: %s"
#: daemon/x52d_io.c:97 #: daemon/x52d_io.c:99
#, c-format #, c-format
msgid "Error %d initializing X52 I/O library: %s" msgid "Error %d initializing X52 I/O library: %s"
msgstr "Erroray %d initializingay X52 ibrarylay: %s" msgstr "Erroray %d initializingay X52 ibrarylay: %s"
#: daemon/x52d_io.c:103 #: daemon/x52d_io.c:105
#, c-format #, c-format
msgid "Error %d initializing I/O driver thread: %s" msgid "Error %d initializing I/O driver thread: %s"
msgstr "Erroray %d initializingay I/O iverdray eadthray: %s" msgstr "Erroray %d initializingay I/O iverdray eadthray: %s"
#: daemon/x52d_io.c:110 #: daemon/x52d_io.c:112
msgid "Shutting down X52 I/O driver thread" msgid "Shutting down X52 I/O driver thread"
msgstr "Uttingshay ownday X52 I/O iverdray eadthray" msgstr "Uttingshay ownday X52 I/O iverdray eadthray"
@ -822,28 +822,28 @@ msgstr "Erroray itingwray ousemay eelwhay eventay %d"
msgid "Error writing mouse axis event (axis %d, value %d)" msgid "Error writing mouse axis event (axis %d, value %d)"
msgstr "Erroray itingwray ousemay axisay eventay (axisay %d, aluevay %d)" msgstr "Erroray itingwray ousemay axisay eventay (axisay %d, aluevay %d)"
#: daemon/x52d_mouse_evdev.c:114 #: daemon/x52d_mouse_evdev.c:123
msgid "Starting X52 virtual mouse driver thread" msgid "Starting X52 virtual mouse driver thread"
msgstr "Artingstay X52 irtualvay ousemay iverdray eadthray" msgstr "Artingstay X52 irtualvay ousemay iverdray eadthray"
#: daemon/x52d_mouse_evdev.c:127 #: daemon/x52d_mouse_evdev.c:136
msgid "Error writing mouse sync event" msgid "Error writing mouse sync event"
msgstr "Erroray itingwray ousemay yncsay eventay" msgstr "Erroray itingwray ousemay yncsay eventay"
#: daemon/x52d_mouse_evdev.c:146 #: daemon/x52d_mouse_evdev.c:155
#, c-format #, c-format
msgid "Error %d initializing mouse thread: %s" msgid "Error %d initializing mouse thread: %s"
msgstr "Erroray %d initializingay ousemay eadthray: %s" msgstr "Erroray %d initializingay ousemay eadthray: %s"
#: daemon/x52d_mouse_evdev.c:153 #: daemon/x52d_mouse_evdev.c:162
msgid "Shutting down X52 virtual mouse driver thread" msgid "Shutting down X52 virtual mouse driver thread"
msgstr "Uttingshay ownday X52 irtualvay ousemay iverdray eadthray" msgstr "Uttingshay ownday X52 irtualvay ousemay iverdray eadthray"
#: daemon/x52d_mouse_evdev.c:160 #: daemon/x52d_mouse_evdev.c:169
msgid "Virtual mouse not created. Ignoring thread state change" msgid "Virtual mouse not created. Ignoring thread state change"
msgstr "Irtualvay ousemay otnay eatedcray. Ignoringa eadthray atestay angechay" msgstr "Irtualvay ousemay otnay eatedcray. Ignoringa eadthray atestay angechay"
#: daemon/x52d_mouse_evdev.c:211 #: daemon/x52d_mouse_evdev.c:220
#, c-format #, c-format
msgid "Error %d creating X52 virtual mouse: %s" msgid "Error %d creating X52 virtual mouse: %s"
msgstr "Erroray %d eatingcray X52 irtualvay ousemay: %s" msgstr "Erroray %d eatingcray X52 irtualvay ousemay: %s"