Skip to content

improve scrolling and new release #280

Merged
Ethran merged 5 commits into
mainfrom
dev
Jun 30, 2026
Merged

improve scrolling and new release #280
Ethran merged 5 commits into
mainfrom
dev

Conversation

@Ethran

@Ethran Ethran commented Jun 30, 2026

Copy link
Copy Markdown
Owner

No description provided.

Ethran added 5 commits June 30, 2026 22:14
…e read in updateScroll; the other warnings predate this change.

  - Added a persistent scrollBackBuffer: Bitmap? field.
  - updateScroll now reuses that spare (validated against current width/height/config) instead of createBitmap on every event, and ping-pongs: the outgoing windowedBitmap becomes the next spare.
…flation and improved observer management.

### Sync & Core
- **EditorControlTower**:
    - Replaced immediate scroll processing with a non-blocking `requestScroll` system using `MutableStateFlow` to accumulate deltas.
    - Introduced a `scrollConsumerJob` that conflates high-frequency touch events into a single render pass per frame, improving performance during fast scrolls.
- **einkHelper**:
    - Added a dedicated `screenFreezeScope` and `screenFreezeResetJob` to `resetScreenFreeze`.
    - Implemented job cancellation to coalesce overlapping resume calls, preventing timer stacking and log flooding during continuous interaction.

### UI & Canvas
- **CanvasObserverRegistry**:
    - Implemented a dedicated `observerScope` and static `activeObserverJob` tracking to ensure previous observers are cancelled when a new registry is created, preventing memory leaks and duplicate refreshes.
    - Optimized `observeRefreshUiImmediately` by adding `conflate()` and manual deduplication of scroll and zoom values to avoid redundant EPD refreshes when content hasn't changed.
    - Migrated all internal observers to the managed `observerScope`.

### Gestures
- **EditorGestureReceiver**:
    - Simplified gesture handling by removing manual `overdueScroll` tracking.
    - Updated touch, drag, and zoom handlers to use the new asynchronous `requestScroll` API.
### Build
- **app/build.gradle**: Updated `versionCode` to 36 and `versionName` to 0.2.2.

### UI & UX
- **Settings.kt**:
    - Commented out the "Sync" tab from the settings menu.
    - Updated tab navigation logic to skip the Sync settings view and re-indexed the Debug settings tab.
@Ethran Ethran merged commit 96af355 into main Jun 30, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant