app/ui: remove uneeded async from a few fns, add some warnings, do some cleanup

This commit is contained in:
jkds
2026-01-07 11:13:48 +01:00
parent 7fad8bcaf0
commit 4f4daa0d2b
7 changed files with 41 additions and 22 deletions

View File

@@ -78,7 +78,9 @@ impl UIObject for Button {
parent_rect: Rectangle,
atom: &mut PropertyAtomicGuard,
) -> Option<DrawUpdate> {
let _ = self.rect.eval(atom, &parent_rect);
if let Err(e) = self.rect.eval(atom, &parent_rect) {
warn!(target: "ui::button", "Rect eval failure: {e}");
}
None
}

View File

@@ -181,17 +181,19 @@ impl EmojiPicker {
}
#[instrument(target = "ui::emoji_picker")]
async fn redraw(&self, atom: &mut PropertyAtomicGuard) {
let Some(parent_rect) = self.parent_rect.lock().clone() else { return };
let Some(draw_update) = self.get_draw_calls(parent_rect, atom).await else {
fn redraw(&self, atom: &mut PropertyAtomicGuard) {
let Some(parent_rect) = self.parent_rect.lock().clone() else {
warn!(target: "ui:emoji_picker", "Skip draw since parent rect is empty");
return
};
let Some(draw_update) = self.get_draw_calls(parent_rect, atom) else {
error!(target: "ui:emoji_picker", "Emoji picker failed to draw");
return
};
self.render_api.replace_draw_calls(atom.batch_id, draw_update.draw_calls);
}
async fn get_draw_calls(
fn get_draw_calls(
&self,
parent_rect: Rectangle,
atom: &mut PropertyAtomicGuard,
@@ -253,7 +255,7 @@ impl UIObject for EmojiPicker {
async fn redraw(self_: Arc<EmojiPicker>, batch: BatchGuardPtr) {
let atom = &mut batch.spawn();
self_.redraw(atom).await;
self_.redraw(atom);
}
let mut on_modify = OnModify::new(ex, self.node.clone(), me.clone());
@@ -275,7 +277,7 @@ impl UIObject for EmojiPicker {
atom: &mut PropertyAtomicGuard,
) -> Option<DrawUpdate> {
*self.parent_rect.lock() = Some(parent_rect);
self.get_draw_calls(parent_rect, atom).await
self.get_draw_calls(parent_rect, atom)
}
async fn handle_mouse_move(&self, mouse_pos: Point) -> bool {
@@ -296,7 +298,7 @@ impl UIObject for EmojiPicker {
scroll = scroll.clamp(0., self.max_scroll());
self.scroll.set(atom, scroll);
self.redraw(atom).await;
self.redraw(atom);
true
}
@@ -359,7 +361,7 @@ impl UIObject for EmojiPicker {
let mut scroll = touch_info.start_scroll + y_diff;
scroll = scroll.clamp(0., self.max_scroll());
self.scroll.set(atom, scroll);
self.redraw(atom).await;
self.redraw(atom);
}
}
TouchPhase::Ended | TouchPhase::Cancelled => {

View File

@@ -116,9 +116,12 @@ impl Image {
self.render_api.new_texture(width, height, bmp, TextureFormat::RGBA8, gfxtag!("img"))
}
#[instrument(target = "ui::button")]
#[instrument(target = "ui::image")]
async fn redraw(self: Arc<Self>, batch: BatchGuardPtr) {
let Some(parent_rect) = self.parent_rect.lock().clone() else { return };
let Some(parent_rect) = self.parent_rect.lock().clone() else {
warn!(target: "ui:image", "Skip draw since parent rect is empty");
return
};
let atom = &mut batch.spawn();
let Some(draw_update) = self.get_draw_calls(atom, parent_rect) else {

View File

@@ -85,7 +85,10 @@ impl Layer {
#[instrument(target = "ui::layer")]
async fn redraw(self: Arc<Self>, batch: BatchGuardPtr) {
let Some(parent_rect) = self.parent_rect.lock().clone() else { return };
let Some(parent_rect) = self.parent_rect.lock().clone() else {
warn!(target: "ui:layer", "Skip draw since parent rect is empty");
return
};
let atom = &mut batch.spawn();
let Some(draw_update) = self.get_draw_calls(parent_rect, atom).await else {

View File

@@ -134,17 +134,20 @@ impl Text {
#[instrument(target = "ui::text")]
async fn redraw(self: Arc<Self>, batch: BatchGuardPtr) {
let Some(parent_rect) = self.parent_rect.lock().clone() else { return };
let Some(parent_rect) = self.parent_rect.lock().clone() else {
warn!(target: "ui:text", "Skip draw since parent rect is empty");
return
};
let atom = &mut batch.spawn();
let Some(draw_update) = self.get_draw_calls(atom, parent_rect).await else {
let Some(draw_update) = self.get_draw_calls(atom, parent_rect) else {
error!(target: "ui::text", "Text failed to draw");
return
};
self.render_api.replace_draw_calls(batch.id, draw_update.draw_calls);
}
async fn get_draw_calls(
fn get_draw_calls(
&self,
atom: &mut PropertyAtomicGuard,
parent_rect: Rectangle,
@@ -205,7 +208,7 @@ impl UIObject for Text {
atom: &mut PropertyAtomicGuard,
) -> Option<DrawUpdate> {
*self.parent_rect.lock() = Some(parent_rect);
self.get_draw_calls(atom, parent_rect).await
self.get_draw_calls(atom, parent_rect)
}
fn set_i18n(&self, i18n_fish: &I18nBabelFish) {

View File

@@ -81,7 +81,10 @@ impl VectorArt {
#[instrument(target = "ui::vector_art")]
async fn redraw(self: Arc<Self>, batch: BatchGuardPtr) {
let Some(parent_rect) = self.parent_rect.lock().clone() else { return };
let Some(parent_rect) = self.parent_rect.lock().clone() else {
warn!(target: "ui:vector_art", "Skip draw since parent rect is empty");
return
};
let atom = &mut batch.spawn();
let Some(draw_update) = self.get_draw_calls(atom, parent_rect) else {

View File

@@ -140,10 +140,13 @@ impl Video {
#[instrument(target = "ui::video")]
async fn redraw(self: Arc<Self>, batch: BatchGuardPtr) {
let Some(parent_rect) = self.parent_rect.lock().clone() else { return };
let Some(parent_rect) = self.parent_rect.lock().clone() else {
warn!(target: "ui:video", "Skip draw since parent rect is empty");
return
};
let atom = &mut batch.spawn();
let Some(draw_update) = self.get_draw_calls(atom, parent_rect).await else {
let Some(draw_update) = self.get_draw_calls(atom, parent_rect) else {
error!(target: "ui:video", "Video failed to draw");
return
};
@@ -159,7 +162,7 @@ impl Video {
mesh.alloc(&self.render_api)
}
async fn get_draw_calls(
fn get_draw_calls(
&self,
atom: &mut PropertyAtomicGuard,
parent_rect: Rectangle,
@@ -296,7 +299,7 @@ impl UIObject for Video {
atom: &mut PropertyAtomicGuard,
) -> Option<DrawUpdate> {
*self.parent_rect.lock() = Some(parent_rect);
self.get_draw_calls(atom, parent_rect).await
self.get_draw_calls(atom, parent_rect)
}
}