Commit Graph

84 Commits

Author SHA1 Message Date
Luke Street 74e89130a8 Repaint rework: more responsive, less energy
Previously, we repainted every frame on Windows at full refresh rate.
This is an enormous waste, as the UI will be static most of the time.
This was to work around a bug with `rfd` + `eframe`.
On other platforms, we only repainted every frame when a job was running,
which was better, but still not ideal. We also had a 100ms deadline, so
we'd repaint at ~10fps minimum to catch new events (file watcher, jobs).

This removes all repaint logic from the main loop and moves it into the
individual places where we change state from another thread.
For example, the file watcher thread will now immediately notify egui
to repaint, rather than relying on the 100ms deadline we had previously.
Jobs, when updating their status, also notify egui to repaint.

For `rfd` file dialogs, this migrates to using the async API built on top of
a polling thread + `pollster`. This interacts better with `eframe` on Windows.
Overall, this should reduce repaints and improve responsiveness to
file changes and background tasks.
2023-11-21 14:34:26 -05:00
Luke Street 236e4d8d26 CI updates, update deny.toml, clippy fix 2023-11-21 12:16:15 -05:00
Luke Street b900ae5a00 Disable WSL integration
With WSL, objdiff is unable to get filesystem notifications.
It's recommended to run objdiff natively on Windows, so having this option
is more confusing than useful.
2023-11-21 12:15:41 -05:00
Luke Street 261e1b8e07 Upgrade all dependencies 2023-11-21 11:57:02 -05:00
Luke Street a29e913b45 Add "Incomplete" filter to object tree
Allows filtering out objects marked as "complete".
2023-11-21 11:50:11 -05:00
Luke Street 49257dc73c Better logic to reload previous file on app start
Before, if "Rebuild on changes" was disabled, the last file
wouldn't be properly loaded when starting.
2023-11-21 11:49:26 -05:00
Luke Street dc9eec66b0 Configurable diff algorithms & new default algorithm
Uses the similar crate to support new diff algorithms:
- Patience (new default)
- Levenshtein (old default)
- Myers
- LCS (Longest Common Subsequence)

Options in "Diff Options" -> "Algorithm..."
2023-11-21 11:48:18 -05:00
Luke Street 7b58f9a269 Adjust "Diffable" to exclude missing target objects 2023-10-09 12:47:22 -04:00
Luke Street d9e7dacb6d Version 0.5.1 2023-10-07 14:49:01 -04:00
Luke Street 04b4fdcd21 Reload objects when changed externally
Uses file modification timestamp polling for project config and objects to avoid unneeded complexity from the filesystem notification watcher.

Allows disabling `build_base` as well for projects using an external build system.
2023-10-07 14:48:34 -04:00
Luke Street 803eaafee6 Hide hidden symbols by default; add "Diff Options" to menu 2023-10-07 13:27:12 -04:00
Luke Street e1dc84698f Restore context menu on highlightable fields
Fixes #30
2023-10-07 13:04:08 -04:00
Luke Street e68629c339 Update ppc750cl (subi{,s,c} mnemonics, capstone-style CR bits) 2023-10-06 01:22:26 -04:00
Luke Street bb9ff4b928 Update all dependencies 2023-10-05 23:55:01 -04:00
Luke Street 57392daaeb Implement click-to-highlight
Highlights registers, instructions, arguments, symbols or addresses on click.

Resolves #7
2023-10-05 23:40:45 -04:00
Luke Street 2dd3dd60a8 Update webpki (advisory fix) 2023-10-05 00:01:09 -04:00
Luke Street f4757b8d92 Version 0.4.4
Add `#[serde(default)]` to new AppConfig field
2023-10-04 23:52:00 -04:00
Luke Street 52f8c5d4f9 Add "Recent Projects" to file menu 2023-10-03 13:52:16 -04:00
Luke Street 711f40b591 I forgot to bump the Cargo.toml version, oops 2023-09-10 00:24:53 -04:00
Luke Street 26932b2e44 Support `min_version` field in `objdiff.json` 2023-09-09 23:54:25 -04:00
Luke Street 192a06bc0b Project configuration improvements
- Support `completed` field for objects in project config. In object tree, displays red for incomplete, green for complete.
- Add support for one-sided diffs. A project can include objects without an associated source file for viewing.
- Add versioning to AppConfig, supporting upgrades without losing user configuration.
2023-09-09 23:43:12 -04:00
Luke Street 5bfa47fce9 Update webpki, rustls-webpki 2023-09-03 09:42:26 -04:00
Luke Street 1d9b9b6893 clippy fix 2023-09-03 09:31:12 -04:00
Luke Street 6b8e469261 Project configuration fixes & improvements
- Allow config to specify object "target_path" and "base_path" explicitly, rather than relying on relative path from the "target_dir" and "base_dir". Useful for more complex directory layouts.
- Fix watch_patterns in project config not using default.
- Fix "Rebuild on changes" not defaulting to true.
- Keep watching project config updates even when "Rebuild on changes" is false.
- Disable some configuration options when loaded from project config file.
2023-09-03 09:28:46 -04:00
Luke Street bf3ba48539 Match watch_patterns with project-relative paths 2023-08-14 00:21:56 -04:00
Luke Street 21cdf268f0 Update README.md 2023-08-12 14:41:19 -04:00
Luke Street 3970bc8acf Document configuration file & more cleanup 2023-08-12 14:18:09 -04:00
Luke Street eaf0fabc2d Updates to Objects pane & config improvements 2023-08-09 21:53:04 -04:00
Luke Street 91d11c83d6 Refactor state & config structs, various cleanup 2023-08-09 21:53:04 -04:00
Luke Street 94924047b7 Job state handling cleanup 2023-08-09 19:39:06 -04:00
Luke Street f5f6869029 Start project config file support & rework UI 2023-08-07 20:11:56 -04:00
Luke Street b02e32f2b7 Add dark/light theme toggle (light theme WIP) 2023-07-15 11:17:59 -04:00
Luke Street c7a326b160 Update all dependencies (again) 2023-07-06 10:37:57 -04:00
Luke Street 100f8f8ac5 Update all dependencies 2023-05-11 02:47:57 -04:00
Luke Street 2f778932a4 Version 0.3.1 2023-02-06 17:40:42 -05:00
Luke Street 42601b4750 Update cwdemangle 2023-02-06 17:40:42 -05:00
Luke Street 636a8e00c5 Fix diffing across mismatched .text sections 2023-02-06 17:40:42 -05:00
Nick Condron cd46be7726
Simplify common_symbols by using iterators (#28) 2023-01-26 00:19:20 -05:00
Nick Condron 019493f944
Remove LevEditType::Keep variant (#27) 2023-01-22 13:20:50 -05:00
Luke Street 319b1c35c0 Move reverse_fn_order into ViewConfig 2023-01-21 13:01:21 -05:00
Luke Street 634e007cbc Update default configuration 2023-01-21 12:59:46 -05:00
Luke Street 6ee11ca640 Add optional wgpu feature 2023-01-21 12:56:29 -05:00
Luke Street 8278d5d207 Support MIPS PIC relocations 2023-01-21 12:41:41 -05:00
Luke Street 09bbc534bd Remove debug print 2023-01-21 10:52:21 -05:00
Luke Street fa28352e08 Fix MIPS operands with base 2023-01-21 10:49:47 -05:00
Luke Street 2ab519d361 Update rabbitizer, deny.toml 2023-01-21 01:36:32 -05:00
Nick Condron 3406c76973
Simplify Affix::find (#24)
* Rewrite Affix::find to be much simpler

* Rename Affix::find parameters to not be string

* Remove unused `LevMatchingBlock` struct

* Make `Affix` type simpler
2023-01-21 01:28:33 -05:00
Nick Condron 6afc535fad
Replace panic! with Option (#25) 2023-01-21 01:27:37 -05:00
Anghelo Carvajal ec062bf5ca
User rabbitizer crate (#22)
* Start using rabbitizer crate

* Fix reference problem

* bump rabbitizer version
2023-01-21 01:27:09 -05:00
Luke Street 500965aacb Clippy fix 2023-01-21 01:14:16 -05:00