blob: 2e7c30d82324caaf7124b9fd8fa88edebdf2aedc [file] [log] [blame]
From 6f9e01bc4782ae6f70eecc308c6e3b12cdb8ccbc Mon Sep 17 00:00:00 2001
From: Dave Mielke <dave@mielke.cc>
Date: Sun, 17 Jul 2016 06:25:43 -0400
Subject: [PATCH 1/7] The autorelease alarm wasn't correctly cancelled on
driver stop. (dm)
---
Programs/ktb_internal.h | 2 +-
Programs/ktb_translate.c | 17 +++++++----------
2 files changed, 8 insertions(+), 11 deletions(-)
diff --git a/Programs/ktb_internal.h b/Programs/ktb_internal.h
index ed8157f..bab0d8b 100644
--- a/Programs/ktb_internal.h
+++ b/Programs/ktb_internal.h
@@ -163,7 +163,7 @@ struct KeyTableStruct {
struct {
AsyncHandle alarm;
- unsigned char time;
+ int time;
} autorelease;
struct {
diff --git a/Programs/ktb_translate.c b/Programs/ktb_translate.c
index e617a84..cf79695 100644
--- a/Programs/ktb_translate.c
+++ b/Programs/ktb_translate.c
@@ -68,22 +68,19 @@ cancelAutoreleaseAlarm (KeyTable *table) {
static void
setAutoreleaseAlarm (KeyTable *table) {
- if (!prefs.autoreleaseTime || !table->pressedKeys.count) {
+ if (!table->autorelease.time || !table->pressedKeys.count) {
cancelAutoreleaseAlarm(table);
+ } else if (table->autorelease.alarm) {
+ asyncResetAlarmIn(table->autorelease.alarm, table->autorelease.time);
} else {
- int time = 5000 << (prefs.autoreleaseTime - 1);
-
- if (table->autorelease.alarm) {
- asyncResetAlarmIn(table->autorelease.alarm, time);
- } else {
- asyncSetAlarmIn(&table->autorelease.alarm, time, handleKeyAutoreleaseAlarm, table);
- }
+ asyncSetAlarmIn(&table->autorelease.alarm, table->autorelease.time,
+ handleKeyAutoreleaseAlarm, table);
}
}
void
-setKeyAutoreleaseTime (KeyTable *table, unsigned char seconds) {
- table->autorelease.time = seconds;
+setKeyAutoreleaseTime (KeyTable *table, unsigned char setting) {
+ table->autorelease.time = setting? (5000 << (setting - 1)): 0;
setAutoreleaseAlarm(table);
}
--
2.8.0.rc3.226.g39d4020