1
0
Fork 0
mirror of https://github.com/alacritty/alacritty.git synced 2024-11-18 13:55:23 -05:00

Fix icon decoding on X11

Glutin is waiting for an RGBA buffer with 8-bit depth, but our icon is
16-bit depth. So we need to normalize the color data when decoding the
icon.
This commit is contained in:
Hugal31 2022-10-05 15:14:23 +02:00 committed by Christian Duerr
parent f4ce3ffd20
commit 668eeaaea8

View file

@ -326,11 +326,13 @@ impl Window {
pub fn get_platform_window(identity: &Identity, window_config: &WindowConfig) -> WindowBuilder { pub fn get_platform_window(identity: &Identity, window_config: &WindowConfig) -> WindowBuilder {
#[cfg(feature = "x11")] #[cfg(feature = "x11")]
let icon = { let icon = {
let decoder = Decoder::new(Cursor::new(WINDOW_ICON)); let mut decoder = Decoder::new(Cursor::new(WINDOW_ICON));
decoder.set_transformations(png::Transformations::normalize_to_color8());
let mut reader = decoder.read_info().expect("invalid embedded icon"); let mut reader = decoder.read_info().expect("invalid embedded icon");
let mut buf = vec![0; reader.output_buffer_size()]; let mut buf = vec![0; reader.output_buffer_size()];
let _ = reader.next_frame(&mut buf); let _ = reader.next_frame(&mut buf);
Icon::from_rgba(buf, reader.info().width, reader.info().height) Icon::from_rgba(buf, reader.info().width, reader.info().height)
.expect("invalid embedded icon format")
}; };
let builder = WindowBuilder::new() let builder = WindowBuilder::new()
@ -343,7 +345,7 @@ impl Window {
.with_fullscreen(window_config.fullscreen()); .with_fullscreen(window_config.fullscreen());
#[cfg(feature = "x11")] #[cfg(feature = "x11")]
let builder = builder.with_window_icon(icon.ok()); let builder = builder.with_window_icon(Some(icon));
#[cfg(feature = "x11")] #[cfg(feature = "x11")]
let builder = match window_config.decorations_theme_variant() { let builder = match window_config.decorations_theme_variant() {