我正在尝试使用 Rust Gtk 创建类似Granite.AsyncImage的小部件,但我不知道如何使其工作,因为 Pixbuff 不是安全线程。
我有一个类似下一个的代码:
let file = gio::File::for_uri("https://e00-elmundo.uecdn.es/assets/multimedia/imagenes/2020/12/14/16079475000780.jpg");
file.read_async(
glib::Priority::default(),
Some(&gio::Cancellable::new()),
|s| {
match s {
Ok(stream) => {
Pixbuf::from_stream_at_scale_async(
&stream,
200,
200,
true,
Some(&gio::Cancellable::new()),
|r| {
match r {
Ok(pix) => {
// How can I send this pixbuff to a Gtk Image on main thread?
}
Err(_) => {}
}
});
}
Err(_) => todo!(),
}
});