1
1
mirror of https://github.com/wez/wezterm.git synced 2024-07-14 17:40:26 +03:00
Commit Graph

57 Commits

Author SHA1 Message Date
Wez Furlong
dd80aca72a
filedescriptor: fix windows build 2024-05-13 14:14:47 -07:00
Wez Furlong
ccc32faaba
speculative windows build fix 2024-05-13 13:58:26 -07:00
Wez Furlong
1ca5e6cc90
deps: upgrade smol to 2.0 2024-05-13 10:26:29 -07:00
Wez Furlong
e090eb9eae
Image decoding is now done in a bg thread
Continuing from the previous commit, this shifts:

* In-memory data -> temporary file
* Image decoding -> background thread

The background thread asynchronously decodes frames and
sends them to the render thread via a bounded channel.

While decoding frames, it writes them, uncompressed, to
a scratch file so that when the animation loops, it is
a very cheap operation to rewind and pull that data
from the file, without having to burn CPU to re-decode
the data from the start.

Memory usage is bounded to 4 uncompressed frames while
decoding, then 3 uncompressed frames (triple buffered)
while looping over the rest.

However, disk usage is N uncompressed frames.

refs: https://github.com/wez/wezterm/issues/3263
2023-03-17 11:41:20 -07:00
Davide Cavalca
0048209bcf Add missing license files 2022-08-17 07:19:12 -07:00
Wez Furlong
668b370541 filedescriptor: bump version for package publish 2022-01-21 17:08:23 -07:00
Nils Nieuwejaar
4705fb96fb socketpair() uses AF_UNIX on all non-Linux systems 2022-01-21 13:05:44 -08:00
Nils Nieuwejaar
337959f1f4 fix socketpair() implementation to build on Illumos 2022-01-21 13:05:44 -08:00
Wez Furlong
e4ed2c93e2 encoding my preferred import grouping in the rustfmt config
This uses an unstable option in rustfmt, you `cargo +nightly fmt`
needs to be used to format the code correctly.
2022-01-17 13:50:51 -07:00
unknown
ca0e358262 Fix uninit UB in filedescriptor unix.rs 2022-01-06 06:17:54 -08:00
Wez Furlong
41ce7903a9 write -> write_all, h/t clippy via @CGMossa 2022-01-05 18:52:14 -07:00
Wez Furlong
dd31d172e9 filedescriptor: 0.8.1 release 2021-08-23 08:59:44 -07:00
Michael Richardson
1d6315e948 helper function to unset cloexec. Use it in redirect_stdio_impl. 2021-08-23 08:56:31 -07:00
Wez Furlong
e046570fa1 fixup build on macos 2021-05-23 14:42:41 -07:00
Wez Furlong
5aa1912a5c fixup build on windows 2021-05-23 14:34:31 -07:00
Wez Furlong
f78190ec9c filedescriptor: remove anyhow from public interface
Use thiserror instead
2021-05-23 14:24:01 -07:00
Robin Bernon
ed331542ee Adding ability to redirect std to filedescriptor but only on windows for now
Adding unix part of std redirect code. Also modifying existing changes based on feedback from the initial PR.

More changes based on feedback from PR.

Non linux unix OS's forced to use dup2 instead of dup3

Avoiding disposal issues with fd.

Small bit of refactoring plus some more ammendments based on more PR feedback.

Non linux compile issue fix.

Adding return

Another fix

Another fix

More amendments

fmt correction

closes: https://github.com/wez/wezterm/pull/816
closes: https://github.com/wez/wezterm/pull/788
closes: https://github.com/wez/wezterm/issues/786
2021-05-23 13:36:50 -07:00
Wez Furlong
99131a2a98 fixup build on windows, and update tests 2021-03-27 20:40:40 -07:00
Wez Furlong
aae287c4f2 fix filedescriptor::poll on macos
Need to use the subsecond microsecond value, rather than the total
microsecond value, otherwise `select(2)` will yield EINVAL.

The wezterm changes show where this error was bubbling up
and breaking the tls client code.
2020-09-10 13:58:14 -07:00
Wez Furlong
180ff0d71a filedescriptor: drop unused thiserror dep
refs: https://github.com/wez/wezterm/pull/186
2020-06-13 09:55:18 -07:00
Wez Furlong
65cc7bb286 filedescriptor: probe for pipes between wsl and win32
This is a port of something I found when developing some changes
in watchman.  When doing something like:

`some win32 command | wsl something`

That pipe doesn't look like a normal win32 pipe and we'd end up
treating it like a socket, but it isn't really a socket either.
2020-05-09 10:56:53 -07:00
Wez Furlong
8c6819ef63 filedescriptor: macos: mem::uninitialized -> MaybeUninit
Move away from the deprecated way of doing this.
2020-01-26 19:07:19 -08:00
Wez Furlong
f3e42c3d2a point to local filedescriptor crate 2020-01-26 09:15:24 -08:00
Wez Furlong
8f1878c92c filedescriptor: use winsock send/recv and respect non-blocking mode 2020-01-15 22:55:36 -08:00
Wez Furlong
08b0017c16 add FileDescriptor::set_non_blocking 2020-01-15 08:24:41 -08:00
Wez Furlong
55b4a08131 failure -> anyhow + thiserror 2019-12-14 20:06:25 -08:00
Wez Furlong
b9ae1a709d fix macos build 2019-07-16 07:09:35 -07:00
Wez Furlong
33933ec523 filedescriptor: probe and remember filetype at construction
This avoids a deadlock waiting for the named pipe information to be
returned if we're probing during drop().  This does make the
OwnedHandle struct slightly larger on windows.
2019-07-16 00:27:10 -07:00
Wez Furlong
5f9bb5c3b0 fixup naming and impl for socket traits 2019-06-19 11:26:14 -07:00
Wez Furlong
5ac61ec8d3 expand socket descriptor concept
I didn't notice that windows has separate traits for raw sockets,
so blanket impls for things that returned RawHandle's were not
applying on windows in the same way that they were on unix systems.
2019-06-19 11:11:06 -07:00
Wez Furlong
240bc8033c prep for filedescriptor release 2019-06-18 23:35:53 -07:00
Wez Furlong
56a0de9362 windows: handle broken pipe on read and treat as 0 bytes read 2019-06-18 20:05:47 -07:00
Wez Furlong
ea0d3a0ed1 fixup windows impl 2019-06-18 09:20:17 -07:00
Wez Furlong
9ff22f9c09 add socketpair, with wip on windows 2019-06-18 08:31:27 -07:00
Wez Furlong
f3d201a26b pull in the poll implementation from wezterm+termwiz 2019-06-18 07:39:24 -07:00
Wez Furlong
2c8e36648b filedescriptor: fix a silly typo, enhance docs 2019-06-01 08:19:18 -07:00
Wez Furlong
d518c9b2c9 bump filedescriptor crate version to pickup pipe inheritance on windows 2019-05-24 21:26:23 -07:00
Wez Furlong
2e44af7702 filedescriptor: pipes should not be inheritable on windows 2019-05-24 21:26:23 -07:00
Wez Furlong
a9fd318095 prep for publishing filedescriptor to crates.io 2019-05-19 14:27:11 -07:00
Wez Furlong
0d07c1e6b9 F_DUPFD_CLOEXEC is posix, so just assume we have it on unix 2019-05-19 11:57:44 -07:00
Wez Furlong
135a191b57 fix F_DUPFD_CLOEXEC usage 2019-05-19 11:54:05 -07:00
Wez Furlong
ca15d6da1a explicit comment about not inheriting in DuplicateHandle 2019-05-19 10:53:51 -07:00
Wez Furlong
b4056f6c96 potentially support atomic dup on linux
I'm testing this under WSL which doesn't seem to support it,
so I'm committing this so I can try it on a real linux system.
2019-05-19 10:49:09 -07:00
Wez Furlong
32389ee980 use pipe2() for atomic cloexec on linux 2019-05-19 10:09:11 -07:00
Wez Furlong
c0f4e4907d Tidy up the Pipe interface 2019-05-19 09:39:34 -07:00
Wez Furlong
ee9b5c7a68 add docs for as_stdio 2019-05-19 09:14:40 -07:00
Wez Furlong
143617155e filedescriptor: add some doc comments 2019-05-19 09:04:47 -07:00
Wez Furlong
0f83309b58 centralize/share some filedescriptor bits 2019-05-19 08:40:38 -07:00
Wez Furlong
ed4a605355 rename FileDescript::fd -> handle on unix 2019-05-19 08:21:35 -07:00
Wez Furlong
9a9fdd5e96 add OwnedHandle concept to the unix flavor of filedescriptor
Not strictly needed, but improvess symmetry with the windows flavor.
2019-05-19 08:15:35 -07:00