This removes the terminal performance slightly by removing memmoves that
aren't needed after inlining a call.
It also removes a possibly unnecessary `String` allocation.
Release Notes:
- Improved terminal rendering performance by reducing allocations and
memory operations.
Before this change we wouldn't submit all possible primitives of the
same kind that are less-than the max order.
Result was that we would submit, say, 10 paths each in a separate batch
instead of actually batching them.
This was overly strict because even if the order of two different
primitives was the same, we could have still batched the 1st primitive
kind, if its implicit ordering was less than 2nd kind.
Example: say we have the following primitives and these orders
5x paths, order 3
2x sprites, order 3
Previously, we would submit 1 path, 1 path, 1 path, 1 path, 1 path, then
the sprites.
With this changes, we batch the 5 paths into one batch.
Release Notes:
- Improved performance when rendering lots of selection.
Before this change we wouldn't submit all possible primitives of the
same kind that are less-than the max order.
Result was that we would submit, say, 10 paths each in a separate batch
instead of actually batching them.
This was overly strict because even if the order of two different
primitives was the same, we could have still batched the 1st primitive
kind, if its implicit ordering was less than 2nd kind.
Example: say we have the following primitives and these orders
5x paths, order 3
2x sprites, order 3
Previously, we would submit 1 path, 1 path, 1 path, 1 path, 1 path, then
the sprites.
With this changes, we batch the 5 paths into one batch.
Co-authored-by: Antonio <antonio@zed.dev>
This "adds" the keybindings I was missing in Vim mode (e.g. `Ctrl-[` to
cancel a selection) by fixing the definitions in the keymap from
`Ctrl+[` to `Ctrl-[`.
Release Notes:
- Fixed missing `Ctrl-[` keybindings in Vim mode where `Ctrl-[` should
act like `Esc` but didn't.
This "adds" the keybindings I was missing in Vim mode (e.g. `Ctrl-[` to
cancel a selection) by fixing the definitions in the keymap from
`Ctrl+[` to `Ctrl-[`.
Previously, we were using `size_of` but passing the wrong type in
(`MonochromeSprite` instead of `PathSprite`). This caused us to read
outside of the `sprites` smallvec and triggered the segfault. This
reverts #4078 because I don't think using a `SmallVec` was the issue (it
might have masked this problem though, because we would most of the time
copy from the stack and not from the heap).
With this pull request we are also fixing another potential source of
segfaults, due to checking if we exhausted the instance buffer too late
when drawing underlines.
Release Notes:
- Fixed a crash that could happen during rendering.
Previously, we were using `size_of` but passing the wrong type in
(MonochromeSprite instead of PathSprite). This caused us to read outside
of the `sprites` smallvec and triggered the segfault.
We're occasionally seeing a crash in MetalRenderer::draw.
Looking at the backtrace, it seems almost certainly to be happening in
the call to `ptr::copy_nonoverlapping` on line 604 (see `#Don't Panic!`
channel notes)
As we already have added bounds checking to the destination, it seems
most
likely (however improbable) that somehow we're getting an invalid Ptr
and
length from the SmallVec.
To try and make progress on this, let's try a Vec for a bit lest there
is a subtle issue in SmallVec (though I couldn't spot one).
Release Notes:
- (maybe) Fixes SEGFAULT in MetalRenderer::draw
This PR increases the width of the border that we use to indicate when a
call participant is speaking.
This should make it more apparent in the UI when someone is speaking.
Release Notes:
- Increased the width of the ring used to indicate when someone is
speaking in a call.
This PR improves the muted indicators to make it clearer when a call
participant is muted.
Previously we used a red border color to denote when a participant was
muted.
Now we render an indicator with an icon to more clearly indicate the
participant's muted status:
<img width="303" alt="Screenshot 2024-01-16 at 4 05 15 PM"
src="https://github.com/zed-industries/zed/assets/1486634/d30fcd84-48e7-4959-b3c4-1054162c6bd6">
Hovering over the indicator will display a tooltip for further
explanation:
<img width="456" alt="Screenshot 2024-01-16 at 4 05 25 PM"
src="https://github.com/zed-industries/zed/assets/1486634/6345846f-196c-47d9-8d65-c8d86e63f823">
This change also paves the way for denoting the deafened status for call
participants.
Release Notes:
- Improved the mute indicator for call participants.
This PR adds a color ribbon for the local player in the current call.
This fixes the alignment of the local user's avatar so that it lines up
with the rest of the collaborators in the call:
<img width="307" alt="Screenshot 2024-01-16 at 2 56 04 PM"
src="https://github.com/zed-industries/zed/assets/1486634/979ee3fa-70c9-482a-9351-020402ad68b9">
Release Notes:
- Added a color ribbon for the local player when in a call.
This PR reworks the way we add indicators to `Avatar`s to make them more
general-purpose.
Previously we had logic specific to the availability indicator embedded
in the `Avatar` component, which made it unwieldy to repurpose for
something else.
Now the `indicator` is just a slot that we can put anything into.
Release Notes:
- N/A
This adjusts the solution in
https://github.com/zed-industries/zed/pull/4014 to fix the double-focus
issue, allowing each pane's project search to work independently.
Release Notes:
- Changed the name of the `workspace::DeploySearch` action to
`pane::DeploySearch` and changed it's behavior to open a new search OR
focus an existing project search in the current pane.
(https://github.com/zed-industries/community/issues/2395)
This fixes block headers overlapping over text in the buffer when using
a custom line height of 1.25.
It fixes the issue by making the parent container a v-flex,
vertically-justifying the content and moving from relative padding to
absolute padding for the header itself.
## Before/After
With setting:
```json
"buffer_line_height": {
"custom": 1.25
},
```
### Before
![screenshot-2024-01-16-16 48
48@2x](https://github.com/zed-industries/zed/assets/1185253/8c3b977e-333f-403c-a4d3-0911f3fac5e0)
### After
![screenshot-2024-01-16-16 50
13@2x](https://github.com/zed-industries/zed/assets/1185253/2d854eba-c4c4-4bce-b60b-dd250856b08f)
### Release notes
Release Notes:
- Fixed headers in multi-buffers overlapping over content of the buffer
This fixes block headers overlapping over text in the buffer when using
a custom line height of 1.25.
It fixes the issue by making the parent container a v-flex,
vertically-justifying the content and moving from relative padding to
absolute padding for the header itself.
Co-authored-by: antonio <antonio@zed.dev>
Co-authored-by: julia <julia@zed.dev>
Co-authored-by: marshall <marshall@zed.dev>
This contains two changes in order to hopefully avoid the panic we saw
in #panics:
```
thread 'main' panicked at 'called `Option::unwrap()` on a `None` value'
crates/gpui/src/platform/mac/display.rs:30
<backtrace::capture::Backtrace as core::fmt::Debug>::fmt
<backtrace::capture::Backtrace as core::fmt::Debug>::fmt
Zed::init_panic_hook::{closure#0}
std::panicking::rust_panic_with_hook
std::panicking::rust_panic_with_hook
std::sys_common::backtrace::output_filename
<std::panicking::begin_panic_handler::FormatStringPayload as core::panic::PanicPayload>::take_box
core::panicking::panic_fmt
core::panicking::panic
gpui::platform::mac::display::display_bounds_to_native
<gpui::platform::mac:🪟:MacWindow as gpui::platform::PlatformWindow>::bounds
<gpui:🪟:WindowContext>::window_bounds_changed
<gpui:🪟:Window>:🆕:{closure#1}
gpui::platform::mac:🪟:view_did_change_backing_properties
<gpui::platform::mac::platform::MacPlatform as gpui::platform::Platform>::run
Zed::main
<core::marker::PhantomData<core::option::Option<Zed::LocationData>> as serde:🇩🇪:DeserializeSeed>::deserialize::<&mut serde_json:🇩🇪:Deserializer<serde_json::read::StrRead>>
workspace::open_new::<Zed::restore_or_create_workspace::{closure#0}::{closure#0}::{closure#0}::{closure#2}::{closure#0}>::{closure#0}::{closure#0}
std::rt::lang_start_internal
serde_json:🇩🇪:from_trait::<serde_json::read::StrRead, core::option::Option<Zed::Panic>>
```
Two changes:
* Reduce the number of calls to `CGGetActiveDisplayList` in the hopes
that this will also reduce chances of it returning an empty list.
Previously, in the worst case, we called it 6 times. Now the worst case
is that we call it 3 times.
* Instead of calling `CGGetActiveDisplayList` to get the primary display
we do what Chromium does and construct the primary display from
NSScreen.
Release Notes:
- Fixed a bug that caused a panic that could happen when Zed attempted
to render on a sleeping display.
According to Chromium source, `NSScreen::screens` should always get us
one display.
We made this change because we ran into panics caused by the previous
`unwrap()` when `CGGetActiveDisplayList` might return an empty list.
Previously we called CGGetActiveDisplayList twice: once to get the
number of displays and then to get the displays.
We saw a panic due to no displays being returned here. As a first
attempt to fix the panic, we're reducing the amount of calls to
CGGetActiveDisplayList and just do one with the trade-off being that we
pre-allocate 32 pointers in a Vec.
Fixes `[2024-01-16T09:21:54Z ERROR util]
crates/theme/src/settings.rs:172: theme not found: One Light` error from
the log after
d84785f7e8
Release Notes:
- N/A