|
2 | 2 |
|
3 | 3 | controller.c |
4 | 4 | Copyright (C) 2002 Megan Potter |
| 5 | + Copyright (C) 2024 Donald Haase |
5 | 6 | Copyright (C) 2025 Falco Girgis |
6 | 7 |
|
7 | 8 | */ |
@@ -74,21 +75,20 @@ int __pure cont_has_capabilities(const maple_device_t *cont, uint32_t capabiliti |
74 | 75 | static void cont_btn_callback_del(cont_callback_params_t *params) { |
75 | 76 | cont_callback_params_t *c, *n; |
76 | 77 |
|
77 | | - mutex_lock(&btn_cbs_mtx); |
| 78 | + mutex_lock_scoped(&btn_cbs_mtx); |
78 | 79 |
|
79 | 80 | TAILQ_FOREACH_SAFE(c, &btn_cbs, listent, n) { |
80 | 81 | if((params == NULL) || ((params->addr == c->addr) && |
81 | 82 | (params->btns == c->btns))) { |
82 | 83 |
|
83 | | - if((params == NULL) || (params->cb == NULL) || |
84 | | - (params->cb == c->cb)) { |
85 | | - TAILQ_REMOVE(&btn_cbs, c, listent); |
86 | | - thd_worker_destroy(c->worker); |
87 | | - free(c); |
88 | | - } |
| 84 | + if((params == NULL) || (params->cb == NULL) || |
| 85 | + (params->cb == c->cb)) { |
| 86 | + TAILQ_REMOVE(&btn_cbs, c, listent); |
| 87 | + thd_worker_destroy(c->worker); |
| 88 | + free(c); |
89 | 89 | } |
| 90 | + } |
90 | 91 | } |
91 | | - mutex_unlock(&btn_cbs_mtx); |
92 | 92 | } |
93 | 93 |
|
94 | 94 | static void cont_btn_cb_thread(void *d) { |
@@ -129,15 +129,13 @@ int cont_btn_callback(uint8_t addr, uint32_t btns, cont_btn_callback_t cb) { |
129 | 129 | return -1; |
130 | 130 | } |
131 | 131 |
|
132 | | - mutex_lock(&btn_cbs_mtx); |
| 132 | + mutex_lock_scoped(&btn_cbs_mtx); |
133 | 133 |
|
134 | 134 | if(addr) |
135 | 135 | TAILQ_INSERT_HEAD(&btn_cbs, params, listent); |
136 | 136 | else |
137 | 137 | TAILQ_INSERT_TAIL(&btn_cbs, params, listent); |
138 | 138 |
|
139 | | - mutex_unlock(&btn_cbs_mtx); |
140 | | - |
141 | 139 | return 0; |
142 | 140 | } |
143 | 141 |
|
|
0 commit comments