diff options
author | Paul LeoNerd Evans <leonerd@leonerd.org.uk> | 2008-11-02 17:54:24 +0000 |
---|---|---|
committer | Paul LeoNerd Evans <leonerd@leonerd.org.uk> | 2008-11-02 17:54:24 +0000 |
commit | 5107112a91895c357da0131424e229d75f5b9462 (patch) | |
tree | 1747ac596e95f5af69c1fa00d21536202aa183ab | |
parent | 1d4d908cb8668a1c043a4630d114dcfa219711d7 (diff) | |
download | termo-5107112a91895c357da0131424e229d75f5b9462.tar.gz termo-5107112a91895c357da0131424e229d75f5b9462.tar.xz termo-5107112a91895c357da0131424e229d75f5b9462.zip |
Added new driver virtual methods 'start_driver' and 'stop_driver'
-rw-r--r-- | termkey-internal.h | 2 | ||||
-rw-r--r-- | termkey.c | 6 |
2 files changed, 8 insertions, 0 deletions
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); }; @@ -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); |