From 6ca55cd4bf67ded4f7a9fcd230f2a1860cca4dac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20D=C3=BCpmeier?= Date: Tue, 7 Nov 2017 11:49:07 +0100 Subject: impl uinput shutdown --- uinput.c | 29 ++++++++++++++++++++++++++++- uinput.h | 2 ++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/uinput.c b/uinput.c index 25d6c70..b9396c2 100644 --- a/uinput.c +++ b/uinput.c @@ -3,6 +3,7 @@ #include #include #include +#include #include "midimonster.h" #include "uinput.h" @@ -233,6 +234,32 @@ static int backend_set(instance* inst, size_t num, channel** c, channel_value* v } static int backend_shutdown() { - //TODO impl + uinput_instance* data = NULL; + instance** instances = NULL; + size_t n = 0; + + if (mm_backend_instances(BACKEND_NAME, &n, &instances)) { + fprintf(stderr, "Failed to fetch instance list\n"); + return 1; + } + + if (!n) { + free(instances); + return 0; + } + + for (unsigned p = 0; p < n; p++) { + data = (uinput_instance*) instances[p]->impl; + if (data->fd_in < 0) { + close(data->fd_in); + data->fd_in = -1; + } + + if (data->fd_out < 0) { + close(data->fd_out); + data->fd_out = -1; + } + } + free(instances); return 0; } diff --git a/uinput.h b/uinput.h index 8c4925a..035696d 100644 --- a/uinput.h +++ b/uinput.h @@ -1,3 +1,5 @@ +#pragma once + #include #include -- cgit v1.2.3