diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/grail-gestures.c | 5 | ||||
| -rw-r--r-- | src/grail-gestures.h | 1 |
2 files changed, 5 insertions, 1 deletions
diff --git a/src/grail-gestures.c b/src/grail-gestures.c index efadde5..458f60d 100644 --- a/src/grail-gestures.c +++ b/src/grail-gestures.c | |||
| @@ -27,6 +27,7 @@ | |||
| 27 | static const float FM_SN[DIM_FM] = { 1000, 1000, 200, 1000 }; | 27 | static const float FM_SN[DIM_FM] = { 1000, 1000, 200, 1000 }; |
| 28 | static const float FM_BAR[DIM_FM] = { 50, 50, 30, 50 }; | 28 | static const float FM_BAR[DIM_FM] = { 50, 50, 30, 50 }; |
| 29 | static const grail_time_t FM_BAR_MS[DIM_FM] = { 300, 300, 10000, 10000 }; | 29 | static const grail_time_t FM_BAR_MS[DIM_FM] = { 300, 300, 10000, 10000 }; |
| 30 | static const grail_time_t FM_HOLD_MS[DIM_FM] = { 60, 60, 60, 60 }; | ||
| 30 | static const grail_time_t SAMPLE_MS = 10; | 31 | static const grail_time_t SAMPLE_MS = 10; |
| 31 | static const float EPS = 1e-3; | 32 | static const float EPS = 1e-3; |
| 32 | 33 | ||
| @@ -133,7 +134,8 @@ static void move_update(struct move_model *m, int i, float x, grail_time_t t) | |||
| 133 | if (m->active & (1 << i)) | 134 | if (m->active & (1 << i)) |
| 134 | return; | 135 | return; |
| 135 | fm->action_delta = x - fm->original; | 136 | fm->action_delta = x - fm->original; |
| 136 | if (fabs(fm->action_delta) > fm->bar) { | 137 | if (t - fm->original_ms > fm->hold_ms && |
| 138 | fabs(fm->action_delta) > fm->bar) { | ||
| 137 | m->active |= (1 << i); | 139 | m->active |= (1 << i); |
| 138 | } else if (t - fm->original_ms > fm->bar_ms) { | 140 | } else if (t - fm->original_ms > fm->bar_ms) { |
| 139 | m->active |= (1 << i); | 141 | m->active |= (1 << i); |
| @@ -157,6 +159,7 @@ void gru_init_motion(struct grail *ge) | |||
| 157 | for (i = 0; i < DIM_FM; i++) { | 159 | for (i = 0; i < DIM_FM; i++) { |
| 158 | m->fm[i].fuzz = D[i] / FM_SN[i]; | 160 | m->fm[i].fuzz = D[i] / FM_SN[i]; |
| 159 | m->fm[i].bar = D[i] / FM_BAR[i]; | 161 | m->fm[i].bar = D[i] / FM_BAR[i]; |
| 162 | m->fm[i].hold_ms = FM_HOLD_MS[i]; | ||
| 160 | m->fm[i].bar_ms = FM_BAR_MS[i]; | 163 | m->fm[i].bar_ms = FM_BAR_MS[i]; |
| 161 | } | 164 | } |
| 162 | } | 165 | } |
diff --git a/src/grail-gestures.h b/src/grail-gestures.h index c4c46c2..d92a24b 100644 --- a/src/grail-gestures.h +++ b/src/grail-gestures.h | |||
| @@ -49,6 +49,7 @@ struct filter_model { | |||
| 49 | float bar; | 49 | float bar; |
| 50 | grail_time_t original_ms; | 50 | grail_time_t original_ms; |
| 51 | grail_time_t sample_ms; | 51 | grail_time_t sample_ms; |
| 52 | grail_time_t hold_ms; | ||
| 52 | grail_time_t bar_ms; | 53 | grail_time_t bar_ms; |
| 53 | }; | 54 | }; |
| 54 | 55 | ||
