iced icon indicating copy to clipboard operation
iced copied to clipboard

White Screen.

Open ghost opened this issue 2 years ago • 8 comments

Is there an existing issue for this?

  • [X] I have searched the existing issues.

Is this issue related to iced?

  • [X] My hardware is compatible and my graphics drivers are up-to-date.

What happened?

I have wrote the following file

use iced::{
    canvas::{Cache, Cursor, Geometry, Path},
    executor, time,
    widget::canvas::{
        event::{self, Event},
        Program,
    },
    Application, Color, Command, Element, Point, Rectangle, Settings, Subscription, Canvas,
};

struct Example;

#[derive(Debug)]
enum Message {}

#[derive(Debug)]
struct ProgramCanvas {
    cache: Cache,
}

impl Application for Example {
    type Executor = executor::Default;
    type Message = Message;
    type Flags = bool;

    fn new(_flags: Self::Flags) -> (Example, Command<Self::Message>) {
        (Example, Command::none())
    }

	fn title(&self) -> String {
		String::from("Title")
	}

	fn update(&mut self ,_: Self::Message) -> Command<Self::Message> {
		Command::none()
	}

    fn view(&mut self) -> Element<Self::Message> {
        use iced::{Container, Length};
        Canvas::new(ProgramCanvas::new())
        .width(Length::Fill)
        .height(Length::Fill)
        .into()
    }
}

impl ProgramCanvas {
    fn new() -> Self {
        Self {
            cache: Cache::new(),
        }
    }
}

impl Program<Message> for ProgramCanvas {
    fn draw(&self, bounds: Rectangle, _cursor: Cursor) -> Vec<Geometry> {
        let chip_view = self.cache.draw(bounds.size(), |frame| {
            let space = Path::rectangle(Point::ORIGIN, frame.size());
            frame.fill(&space, Color::BLACK);
            log::info!("DRAWING");
            frame.translate(frame.center() - Point::ORIGIN);
        });
        vec![chip_view]
    }
}

pub fn main() -> iced::Result {
    Example::run(Settings {
        id: Some(String::from("Some")),
        window: iced::window::Settings {
            size: (64 * 15, 32 * 15),
            min_size: Some((64 * 15, 32 * 15)),
            max_size: Some((64 * 15, 32 * 15)),
            resizable: false,
            ..iced::window::Settings::default()
        },
        flags: false,
        default_font: None,
        default_text_size: 20,
        text_multithreading: false,
        antialiasing: true,
        exit_on_close_request: true,
        try_opengles_first: false,
    })
}

with the following Cargo.toml

[package]
name = "example"
version = "0.1.0"
edition = "2021"

[dependencies]
rand = "0.8.4"
iced = { version = "~0.4" , features = ["canvas", "tokio"] }
iced_native = "~0.4"
rodio = "0.15.0"
log = "0.4.16"
env_logger = "0.9.0"
builder-pattern = "0.4.2"
byteorder = "1.4.3"

And I am only getting a white screen.

What is the expected behavior?

A black screen

Version

master

Operative System

Linux

Do you have any log output?

No response

ghost avatar May 08 '22 17:05 ghost

  • Do any of the Canvas examples work for you (e.g. clock, solar_system,game_of_life...)?
  • Is this the simplest example possible? Are the unrelated dependencies necessary to reproduce the issue? What about the canvas::Cache?
  • Does disabling antialiasing help in any way? What happens if you enable the glow feature in your Cargo.toml?

hecrj avatar May 08 '22 18:05 hecrj

@hecrj

The example clock is a white screen. The example game_of_life is no working properly, does no show any cell. The example solar system is a white screen.

The Cargo.toml can be reduced to

[package]
name = "example"
version = "0.1.0"
edition = "2021"

[dependencies]
iced = { version = "~0.4" , features = ["canvas", "tokio"] }
iced_native = "~0.4"
log = "0.4.16"
env_logger = "0.9.0"

The disabling of anti-aliasing does in fact solve the problem. The enabling to the feature glow does in fact also solve the problem. And the mixing of two also solve the problem.

ghost avatar May 13 '22 20:05 ghost

@hecrj On Arch Linux I have solved this problem before when using iced. Adding the "glow" feature to each iced project while using Arch Linux and likely other Linux distros solves the problem and everything works properly.

Close issue

xTekC avatar Jun 19 '22 05:06 xTekC

I was seeing the same issue (although solar_system was black instead of white). Adding feature "glow" fixed it for me. Running Ubuntu 22.04.

scottrick avatar Jul 03 '22 21:07 scottrick

I checked out iced for the first time today. I also had the issue that every Canvas was just white. Activating "glow" feature makes it work. Also running ubuntu 22.04.

silven avatar Oct 02 '22 12:10 silven

@hecrj Close issue

No, It does not fix the problem, it just switches to OpenGL.

Having same problem on Arch. Glow works as others mentioned

MichalLebeda avatar Oct 16 '22 22:10 MichalLebeda

I’m having reports of what is likely the same issue: https://github.com/greatest-ape/OctaSine/issues/136#issuecomment-1428668787

greatest-ape avatar Feb 13 '23 21:02 greatest-ape

At 0.10 without glow, is there a solution other than disabling antialiasing?

jw3 avatar Sep 12 '23 03:09 jw3