Commit graph

25 commits

Author SHA1 Message Date
Jeremy Soller
68c4a8bb6a
Fix dialog example 2025-07-01 09:54:00 -06:00
Jeremy Soller
3d18d7f390
Update dependencies 2025-05-01 09:19:40 -06:00
ellieplayswow
16c8c0df30 bugfix(zoom): use global modifiers for checking if ctrl is used for zoom instead of mouse area events
example(copy): fixing copy example to use correct Method type
2025-04-30 13:57:33 -06:00
Michael Murphy
79aa8f887a
feat: use io_uring / IOCP when available for async file IO (#911)
Spawns a single thread for handling async file IO on the [compio runtime](https://github.com/compio-rs/compio).
It is a completion-based IO runtime that can dynamically select a polling mechanism at runtime. It defaults to
io_uring on Linux, IOCP on Windows, and the polling crate everywhere else. On Linux systems where io_uring is
unavailable or disabled, it will fall back to the polling crate.

This eliminates most of the threads that were needed previously. It significantly reduced the amount of memory
needed in the recursive Context to get a good transfer rate for each copy operation—from a 4 MB buffer to 128 KB.
Copies on a nvme drive are somewhat faster with the async IO changes, and use less CPU than before.

Although it uses a single thread for non-blocking tasks, it still manages to 100% max out my nvme drive's
activity for the whole duration of multiple long transfers. But it would be possible to enable compio's
dispatcher to spread operations across worker threads if necessary.

All but the extract and compress operations were updated to be async. I had to switch the `CondVar` in the
`Controller` to a `tokio::sync::Notify` to prevent the IO thread from being put to sleep when an operation is paused.
Fixed a deadlock in the `operation_copy` test function that was performing an operation without concurrently pulling
from the channel in the operation. Reduced the rate that `Message::None` is sent from a subscription to trigger a UI
redraw, and fixed it to not run when operations are paused.
2025-04-09 15:15:07 -06:00
Josh Megnauth
6a6a494012 chore(clippy): mouse_area, controller & more
Fixes lints for:
* src/operation/controller.rs
* src/mouse_area.rs
* src/mounter/mod.rs
2025-01-19 10:55:56 -07:00
Vukašin Vojinović
06150f7d44
fix(context menu): increase vertical item padding (#665)
This matches the context menu to the designs.
2024-11-24 19:24:24 -07:00
Jeremy Soller
4ba7d7bbfc
Fix tests 2024-11-19 08:15:47 -07:00
Jeremy Soller
fa50b8c0f0 Fix compilation of copy example 2024-11-13 14:47:35 -07:00
Jeremy Soller
a32f25fa95
Remove fs_extra (#655)
* WIP Remove fs_extra

* Finish removing fs_extra
2024-11-13 14:36:11 -07:00
Jeremy Soller
cf41bfcc6a
Fix dialog and duplicate keyboard events 2024-10-21 14:14:43 -06:00
Jeremy Soller
191af673b1
Show details in popup window in desktop mode, part of #547 2024-10-04 11:07:38 -06:00
Jeremy Soller
2989fb8519
Add desktop as winit window example 2024-10-04 09:58:47 -06:00
Jeremy Soller
c3d6498042 WIP: support for network browsing 2024-09-16 09:18:35 -06:00
Jeremy Soller
4374132e2f
Add support for compressing to .tgz, add gio network mount example 2024-09-10 11:50:14 -06:00
Jeremy Soller
2b1abc7c23
Refresh gvfs volumes as needed 2024-04-22 13:14:25 -06:00
Jeremy Soller
02b6cda872
Add mounter abstraction, enable minimal GVfs support 2024-04-22 09:54:00 -06:00
Jeremy Soller
ab3b5f40d5 Dialog improvements 2024-02-26 15:16:29 -07:00
Jeremy Soller
a936cd4a6d Return item open to tab handler 2024-02-26 15:16:29 -07:00
Jeremy Soller
d526040ff5
Format 2024-02-22 14:30:04 -07:00
Jeremy Soller
4f19123847
Fix button styles 2024-02-20 14:39:17 -07:00
Jeremy Soller
88073536e2
Store save dialog filename in DialogKind 2024-02-20 11:58:39 -07:00
Jeremy Soller
a24983ca7f
Add dialog types 2024-02-15 15:03:01 -07:00
Jeremy Soller
db485798da
Improve dialog handling 2024-02-13 12:29:50 -07:00
Jeremy Soller
2832e6066e Forward selected path to caller 2024-02-01 17:43:41 -07:00
Jeremy Soller
d271159c07
Add dialog example 2024-02-01 15:55:52 -07:00