Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Merged
merged 1 commit into from
Sep 16, 2024
Merged

Conversation

emilk
Copy link
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
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
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
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
35 of 36 checks passed
@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