Просмотр исходного кода

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

jkds 7 месяцев назад
Родитель
Сommit
4f4daa0d2b

+ 3 - 1
bin/app/src/ui/button.rs

@@ -78,7 +78,9 @@ impl UIObject for Button {
         parent_rect: Rectangle,
         parent_rect: Rectangle,
         atom: &mut PropertyAtomicGuard,
         atom: &mut PropertyAtomicGuard,
     ) -> Option<DrawUpdate> {
     ) -> 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
         None
     }
     }
 
 

+ 11 - 9
bin/app/src/ui/emoji_picker/mod.rs

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

+ 5 - 2
bin/app/src/ui/image.rs

@@ -116,9 +116,12 @@ impl Image {
         self.render_api.new_texture(width, height, bmp, TextureFormat::RGBA8, gfxtag!("img"))
         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) {
     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 atom = &mut batch.spawn();
         let Some(draw_update) = self.get_draw_calls(atom, parent_rect) else {
         let Some(draw_update) = self.get_draw_calls(atom, parent_rect) else {

+ 4 - 1
bin/app/src/ui/layer.rs

@@ -85,7 +85,10 @@ impl Layer {
 
 
     #[instrument(target = "ui::layer")]
     #[instrument(target = "ui::layer")]
     async fn redraw(self: Arc<Self>, batch: BatchGuardPtr) {
     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 atom = &mut batch.spawn();
         let Some(draw_update) = self.get_draw_calls(parent_rect, atom).await else {
         let Some(draw_update) = self.get_draw_calls(parent_rect, atom).await else {

+ 7 - 4
bin/app/src/ui/text.rs

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

+ 4 - 1
bin/app/src/ui/vector_art/mod.rs

@@ -81,7 +81,10 @@ impl VectorArt {
 
 
     #[instrument(target = "ui::vector_art")]
     #[instrument(target = "ui::vector_art")]
     async fn redraw(self: Arc<Self>, batch: BatchGuardPtr) {
     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 atom = &mut batch.spawn();
         let Some(draw_update) = self.get_draw_calls(atom, parent_rect) else {
         let Some(draw_update) = self.get_draw_calls(atom, parent_rect) else {

+ 7 - 4
bin/app/src/ui/vid/mod.rs

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