| summaryrefslogtreecommitdiff |
diff options
Diffstat (limited to 'src/server/handle_client.c')
| -rw-r--r-- | src/server/handle_client.c | 57 |
1 files changed, 57 insertions, 0 deletions
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 <relabsd/debug.h> #include <relabsd/server.h> +#include <relabsd/device/virtual_device.h> +#include <relabsd/device/axis.h> + #include <relabsd/config/parameters.h> /******************************************************************************/ /**** 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' */ |


