From 5107112a91895c357da0131424e229d75f5b9462 Mon Sep 17 00:00:00 2001 From: Paul LeoNerd Evans Date: Sun, 2 Nov 2008 17:54:24 +0000 Subject: [PATCH] Added new driver virtual methods 'start_driver' and 'stop_driver' --- termkey-internal.h | 2 ++ termkey.c | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/termkey-internal.h b/termkey-internal.h index 5494cf6..9f0904a 100644 --- a/termkey-internal.h +++ b/termkey-internal.h @@ -10,6 +10,8 @@ struct termkey_driver { void *(*new_driver)(termkey_t *tk, const char *term); void (*free_driver)(void *); + void (*start_driver)(termkey_t *tk); + void (*stop_driver)(termkey_t *tk); termkey_result (*getkey)(termkey_t *tk, termkey_key *key, int force); }; diff --git a/termkey.c b/termkey.c index a1904b6..8f55dd3 100644 --- a/termkey.c +++ b/termkey.c @@ -185,6 +185,9 @@ termkey_t *termkey_new_full(int fd, int flags, size_t buffsize, int waittime) } } + if(tk->driver.start_driver) + (*tk->driver.start_driver)(tk); + return tk; abort_free_keynames: @@ -217,6 +220,9 @@ void termkey_free(termkey_t *tk) void termkey_destroy(termkey_t *tk) { + if(tk->driver.stop_driver) + (*tk->driver.stop_driver)(tk); + if(tk->restore_termios_valid) tcsetattr(tk->fd, TCSANOW, &tk->restore_termios);