Updates to SlopController

- Addressed comments in ag/23670464
- Moved the creation of the controller from the rotary input mapper
  constructor, to its `populateDeviceInfo`, since the slop params were
  not being read in the constructor (since the device property map is
  not initialized when the input mapper is created).
- Added logs to note the slop params

Bug: 285957835
Test: atest SlopControllerTest

Change-Id: Id1bd77b52c9d93d30d3d2594662e19ccc40a1bb6
diff --git a/services/inputflinger/reader/mapper/SlopController.h b/services/inputflinger/reader/mapper/SlopController.h
index bd6ee77..c106410 100644
--- a/services/inputflinger/reader/mapper/SlopController.h
+++ b/services/inputflinger/reader/mapper/SlopController.h
@@ -28,10 +28,9 @@
  * Current slop logic:
  *      "If time since last event > Xns, then discard the next N values."
  */
-class SlopController {
+class SlopController final {
 public:
     SlopController(float slopThreshold, nsecs_t slopDurationNanos);
-    virtual ~SlopController();
 
     /**
      * Consumes an event with a given time and value for slop processing.
@@ -40,7 +39,7 @@
     float consumeEvent(nsecs_t eventTime, float value);
 
 private:
-    bool shouldResetSlopTracking(nsecs_t eventTimeNanos, float value);
+    bool shouldResetSlopTracking(nsecs_t eventTimeNanos, float value) const;
 
     /** The amount of event values ignored after an inactivity of the slop duration. */
     const float mSlopThreshold;