From 87a86b9a599de35d09da7d954ba662091accc90b Mon Sep 17 00:00:00 2001 From: Nathanael Sensfelder Date: Thu, 9 Jan 2020 02:29:59 +0100 Subject: Adds all the new functionalities. Some TODOs and slight coding style inconsistencies remaining, though... --- src/server/handle_client.c | 57 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) (limited to 'src/server/handle_client.c') diff --git a/src/server/handle_client.c b/src/server/handle_client.c index 5212440..a213fe2 100644 --- a/src/server/handle_client.c +++ b/src/server/handle_client.c @@ -15,12 +15,68 @@ #include #include +#include +#include + #include /******************************************************************************/ /**** LOCAL FUNCTIONS *********************************************************/ /******************************************************************************/ +static void propagate_changes +( + struct relabsd_server server [const static 1] +) +{ + struct relabsd_axis * axis; + int i; + int virtual_device_is_dirty; + + virtual_device_is_dirty = 0; + + for (i = 0; i < RELABSD_AXIS_VALID_AXES_COUNT; ++i) + { + axis = + relabsd_parameters_get_axis + ( + (enum relabsd_axis_name) i, + &(server->parameters) + ); + + if (relabsd_axis_attributes_are_dirty(axis)) + { + (void) relabsd_virtual_device_update_axis_absinfo + ( + (enum relabsd_axis_name) i, + axis, + &(server->virtual_device) + ); + + relabsd_axis_set_attributes_are_dirty(0, axis); + + virtual_device_is_dirty = 1; + } + } + + if (relabsd_parameters_device_name_is_dirty(&(server->parameters))) + { + (void) relabsd_virtual_device_rename + ( + &(server->parameters), + &(server->virtual_device) + ); + + relabsd_parameters_clean_device_name(&(server->parameters)); + virtual_device_is_dirty = 1; + } + + if (virtual_device_is_dirty) + { + (void) relabsd_virtual_device_recreate(&(server->virtual_device)); + } +} + /******************************************************************************/ /**** EXPORTED FUNCTIONS ******************************************************/ /******************************************************************************/ @@ -54,6 +110,7 @@ int relabsd_server_handle_client socket_as_file, &(server->parameters) ); + propagate_changes(server); pthread_mutex_unlock(&(server->mutex)); /* This also closes 'socket' */ -- cgit v1.2.3-70-g09d2