Rémi Bernon (@rbernon) commented about server/queue.c:
- struct desktop *desktop;
- if (!(desktop = get_hardware_input_desktop( 0 ))) return;
- /* report previous values */
- reply->enable = desktop->key_repeat.enable;
- reply->delay = -desktop->key_repeat.delay / 10000;
- reply->period = -desktop->key_repeat.period / 10000;
- /* ignore negative values to allow partial updates */
- if (req->enable >= 0) desktop->key_repeat.enable = req->enable;
- if (req->delay >= 0) desktop->key_repeat.delay = -req->delay * 10000;
- if (req->period >= 0) desktop->key_repeat.period = -req->period * 10000;
- if (desktop->key_repeat.timeout && !desktop->key_repeat.enable)
remove_timeout_user( desktop->key_repeat.timeout );
You're leaking the desktop here.