mirror of
https://github.com/alols/xcape.git
synced 2026-09-10 08:06:16 -04:00
Clean up on exit. Now runs cleanly with valgrind.
This commit is contained in:
parent
84e976c167
commit
a55e3e90cd
33
xcape.c
33
xcape.c
|
|
@ -78,8 +78,12 @@ void intercept (XPointer user_data, XRecordInterceptData *data);
|
|||
|
||||
KeyMap_t *parse_mapping (Display *ctrl_conn, char *mapping, Bool debug);
|
||||
|
||||
void delete_mapping (KeyMap_t *map);
|
||||
|
||||
Key_t *key_add_key (Key_t *keys, KeyCode key);
|
||||
|
||||
void delete_keys (Key_t *keys);
|
||||
|
||||
/************************************************************************
|
||||
* Main function
|
||||
***********************************************************************/
|
||||
|
|
@ -197,15 +201,23 @@ int main (int argc, char **argv)
|
|||
exit (EXIT_FAILURE);
|
||||
}
|
||||
|
||||
pthread_join (self->sigwait_thread, NULL);
|
||||
|
||||
if (!XRecordFreeContext (self->ctrl_conn, self->record_ctx))
|
||||
{
|
||||
fprintf (stderr, "Failed to free xrecord context\n");
|
||||
}
|
||||
|
||||
if (self->debug) fprintf (stdout, "main exiting\n");
|
||||
|
||||
XFree (rec_range);
|
||||
|
||||
XCloseDisplay (self->ctrl_conn);
|
||||
XCloseDisplay (self->data_conn);
|
||||
|
||||
if (self->debug) fprintf (stdout, "main exiting\n");
|
||||
delete_mapping (self->map);
|
||||
|
||||
free (self);
|
||||
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
|
@ -515,3 +527,22 @@ KeyMap_t *parse_mapping (Display *ctrl_conn, char *mapping, Bool debug)
|
|||
|
||||
return rval;
|
||||
}
|
||||
|
||||
void delete_mapping (KeyMap_t *map)
|
||||
{
|
||||
while (map != NULL) {
|
||||
KeyMap_t *next = map->next;
|
||||
delete_keys (map->to_keys);
|
||||
free (map);
|
||||
map = next;
|
||||
}
|
||||
}
|
||||
|
||||
void delete_keys (Key_t *keys)
|
||||
{
|
||||
while (keys != NULL) {
|
||||
Key_t *next = keys->next;
|
||||
free (keys);
|
||||
keys = next;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue