aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHugal31 <hugo.laloge@gmail.com>2022-10-05 15:14:23 +0200
committerChristian Duerr <contact@christianduerr.com>2022-10-09 23:35:52 +0000
commit668eeaaea86a207d6f6316019717185eb43e477a (patch)
treed47789467b77a8bdeab9409c98516a7e86fe4e3c
parentf4ce3ffd2012afa0c7d7d0bbb0bedb7b68accb8b (diff)
downloadalacritty-668eeaaea86a207d6f6316019717185eb43e477a.tar.gz
alacritty-668eeaaea86a207d6f6316019717185eb43e477a.zip
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.
-rw-r--r--alacritty/src/display/window.rs6
1 files changed, 4 insertions, 2 deletions
diff --git a/alacritty/src/display/window.rs b/alacritty/src/display/window.rs
index 95b42345..f6f0f77a 100644
--- a/alacritty/src/display/window.rs
+++ b/alacritty/src/display/window.rs
@@ -326,11 +326,13 @@ impl Window {
pub fn get_platform_window(identity: &Identity, window_config: &WindowConfig) -> WindowBuilder {
#[cfg(feature = "x11")]
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 buf = vec![0; reader.output_buffer_size()];
let _ = reader.next_frame(&mut buf);
Icon::from_rgba(buf, reader.info().width, reader.info().height)
+ .expect("invalid embedded icon format")
};
let builder = WindowBuilder::new()
@@ -343,7 +345,7 @@ impl Window {
.with_fullscreen(window_config.fullscreen());
#[cfg(feature = "x11")]
- let builder = builder.with_window_icon(icon.ok());
+ let builder = builder.with_window_icon(Some(icon));
#[cfg(feature = "x11")]
let builder = match window_config.decorations_theme_variant() {