Don't starve main thread when lots of messages/events arrive at once

Antonio Scandurra created

Change summary

crates/client/src/client.rs   | 3 +++
crates/project/src/project.rs | 3 +++
2 files changed, 6 insertions(+)

Detailed changes

crates/client/src/client.rs 🔗

@@ -631,6 +631,9 @@ impl Client {
                         } else {
                             log::info!("unhandled message {}", type_name);
                         }
+
+                        // Don't starve the main thread when receiving lots of messages at once.
+                        smol::future::yield_now().await;
                     }
                 }
             })

crates/project/src/project.rs 🔗

@@ -1278,6 +1278,9 @@ impl Project {
                                 this.update(&mut cx, |this, cx| {
                                     this.on_lsp_event(server_id, event, &language, cx)
                                 });
+
+                                // Don't starve the main thread when lots of events arrive all at once.
+                                smol::future::yield_now().await;
                             }
                             Some(())
                         }