From 320fdeb9d8355d3c361d5c6d60de8afc64501af9 Mon Sep 17 00:00:00 2001 From: jacqueline Date: Wed, 30 Aug 2023 16:48:10 +1000 Subject: Use a service locator instead of passing around subsets of drivers between FSMs --- src/ui/wheel_encoder.cpp | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) (limited to 'src/ui/wheel_encoder.cpp') diff --git a/src/ui/wheel_encoder.cpp b/src/ui/wheel_encoder.cpp index a0e12b7f..2f2e7f68 100644 --- a/src/ui/wheel_encoder.cpp +++ b/src/ui/wheel_encoder.cpp @@ -22,8 +22,8 @@ void encoder_feedback(lv_indev_drv_t* drv, uint8_t event_code) { } TouchWheelEncoder::TouchWheelEncoder( - std::weak_ptr wheel) - : last_key_(0), wheel_(wheel) { + std::unique_ptr wheel) + : last_key_(0), wheel_(std::move(wheel)) { lv_indev_drv_init(&driver_); driver_.type = LV_INDEV_TYPE_ENCODER; driver_.read_cb = encoder_read; @@ -34,16 +34,11 @@ TouchWheelEncoder::TouchWheelEncoder( } auto TouchWheelEncoder::Read(lv_indev_data_t* data) -> void { - auto lock = wheel_.lock(); - if (lock == nullptr) { - return; - } + wheel_->Update(); - lock->Update(); - - data->enc_diff = lock->ticks(); + data->enc_diff = wheel_->ticks(); data->state = - lock->is_clicking() ? LV_INDEV_STATE_PRESSED : LV_INDEV_STATE_RELEASED; + wheel_->is_clicking() ? LV_INDEV_STATE_PRESSED : LV_INDEV_STATE_RELEASED; } } // namespace ui -- cgit v1.2.3