Skip to content

Bug fix: always show latest data in follow-mode#7425

Merged
emilk merged 1 commit intomainfrom
emilk/fix-follow-mode
Sep 16, 2024
Merged

Bug fix: always show latest data in follow-mode#7425
emilk merged 1 commit intomainfrom
emilk/fix-follow-mode

Conversation

@emilk
Copy link
Copy Markdown
Member

@emilk emilk commented Sep 16, 2024

What

Always show the latest data in follow-mode, by advancing the time at the start of the frame rather than at the end of it.

Checklist

  • I have read and agree to Contributor Guide and the Code of Conduct
  • I've included a screenshot or gif (if applicable)
  • I have tested the web demo (if applicable):
  • The PR title and labels are set such as to maximize their usefulness for the next release's CHANGELOG
  • If applicable, add a new check to the release checklist!
  • If have noted any breaking changes to the log API in CHANGELOG.md and the migration guide

To run all checks from main, comment on the PR with @rerun-bot full-check.

@emilk emilk added 🪳 bug Something isn't working 📺 re_viewer affects re_viewer itself include in changelog labels Sep 16, 2024
Comment on lines -470 to -471
// We move the time at the very end of the frame,
// so we have one frame to see the first data before we move the time.
Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't quite understand this, even though I suspect I wrote it.

The "first" data will only be visible if we move/update the current time so that the latest-at query includes the first data.

Sure, if we receive a few video frames during one app update, the new code will not show the first frame of the video, but I don't think that's wrong, nor do I think the old code would have shown the first frame of the video either.

@emilk emilk mentioned this pull request Sep 16, 2024
18 tasks
Copy link
Copy Markdown
Member

@Wumpf Wumpf left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this looks sane, but I don't 100% understand the previous incorrect behavior: Follow mode may have ended up showing old data until we get a redraw?

@emilk
Copy link
Copy Markdown
Member Author

emilk commented Sep 16, 2024

Yes, previously to this PR, follow-mode would put the time marker at the latest data received at the previous frame.

On native, this is smoothed over by egui always repainting twice when you call request_repaint, but you still can spot the wrong position of the time marker for a brief second.

On web, request_repaint only does one repaint (unrelated bug), so it is more obvious there (which is how I discovered the bug).

@emilk emilk merged commit 17fb079 into main Sep 16, 2024
@emilk emilk deleted the emilk/fix-follow-mode branch September 16, 2024 17:29
emilk added a commit that referenced this pull request Sep 18, 2024
### What
* Part of #7378

### Issues found
* #7425
* emilk/egui#5114
* #7427

## How to test
#### Test setup - build the viewer
* `pixi run rerun-build`
* `pixi run rerun-build-web`

#### Test matrix
* Run `cargo r -p test_ui_wakeup` and test:
  * That the viewer wakes up in the background when it's alt-tabbed
* That the viewer wakes up when minimized (it should log "Received a
message from…")
* Run `cargo r -p test_ui_wakeup -- --serve` and test:
  * The viewer wakes up when browser is alt-tabbed away
* Switch to a different browser tab, send a few messages, switch back.
The messages should be there
(this is not a conclusive test, as the messages might have been received
on tab select)

## Tested

### Web
* [x] ✅ Browser alt-tabbed
* [x] ❌ Web background tab
* Has never _properly_ worked. Is blocked on
emilk/egui#5112
  * It catches up when we switch back to the tab though
       
### Linux
* [x] ✅X11 alt-tabbed
* [x] ✅ X11 minimized
* [x] ✅  Wayland alt-tabbed
* [x] ❌ Wayland minimized (Hyprland placed on non-visible workspace)
* [x] ✅ X-Wayland alt-tabbed
* [x] ✅ X-Wayland minimized (Hyprland placed on non-visible workspace)

### Mac
* [x] ✅ Native alt-tabbed
* [x] ✅ Native minimized

### Windows
* [x] ✅ Native alt-tabbed
* [x] ✅ Native minimized

### Checklist
* [x] I have read and agree to [Contributor
Guide](https://github.com/rerun-io/rerun/blob/main/CONTRIBUTING.md) and
the [Code of
Conduct](https://github.com/rerun-io/rerun/blob/main/CODE_OF_CONDUCT.md)
* [x] I've included a screenshot or gif (if applicable)
* [x] I have tested the web demo (if applicable):
* Using examples from latest `main` build:
[rerun.io/viewer](https://rerun.io/viewer/pr/7422?manifest_url=https://app.rerun.io/version/main/examples_manifest.json)
* Using full set of examples from `nightly` build:
[rerun.io/viewer](https://rerun.io/viewer/pr/7422?manifest_url=https://app.rerun.io/version/nightly/examples_manifest.json)
* [x] The PR title and labels are set such as to maximize their
usefulness for the next release's CHANGELOG
* [x] If applicable, add a new check to the [release
checklist](https://github.com/rerun-io/rerun/blob/main/tests/python/release_checklist)!
* [x] If have noted any breaking changes to the log API in
`CHANGELOG.md` and the migration guide

- [PR Build Summary](https://build.rerun.io/pr/7422)
- [Recent benchmark results](https://build.rerun.io/graphs/crates.html)
- [Wasm size tracking](https://build.rerun.io/graphs/sizes.html)

To run all checks from `main`, comment on the PR with `@rerun-bot
full-check`.

---------

Co-authored-by: Antoine Beyeler <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

🪳 bug Something isn't working include in changelog 📺 re_viewer affects re_viewer itself

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants