diff --git a/rcl/src/rcl/wait.c b/rcl/src/rcl/wait.c index 33ebf14..12ff30b 100644 --- a/rcl/src/rcl/wait.c +++ b/rcl/src/rcl/wait.c @@ -35,6 +35,7 @@ typedef struct rcl_wait_set_impl_t rmw_subscriptions_t rmw_subscriptions; size_t guard_condition_index; rmw_guard_conditions_t rmw_guard_conditions; + rmw_waitset_t * rmw_waitset; size_t timer_index; rcl_allocator_t allocator; } rcl_wait_set_impl_t; @@ -113,6 +114,9 @@ rcl_wait_set_init( wait_set->impl->rmw_subscriptions.subscriber_count = 0; wait_set->impl->rmw_guard_conditions.guard_conditions = NULL; wait_set->impl->rmw_guard_conditions.guard_condition_count = 0; + wait_set->impl->rmw_waitset = rmw_create_waitset( + NULL, 2*number_of_subscriptions + number_of_guard_conditions); + // Initialize subscription space. rcl_ret_t ret; if ((ret = rcl_wait_set_resize_subscriptions(wait_set, number_of_subscriptions)) != RCL_RET_OK) { @@ -409,6 +413,7 @@ rcl_wait(rcl_wait_set_t * wait_set, int64_t timeout) &wait_set->impl->rmw_guard_conditions, &dummy_services, &dummy_clients, + wait_set->impl->rmw_waitset, timeout_argument); // Check for error. if (ret != RMW_RET_OK) {