ソースを参照

wallet: bugfix chatview, lock while inserting into DB to avoid db load triggering bg load

darkfi 1 年間 前
コミット
9f16a3dbe5

+ 4 - 1
bin/darkwallet/src/ui/chatview/mod.rs

@@ -500,6 +500,10 @@ impl ChatView {
     ) {
         debug!(target: "ui::chatview", "handle_insert_line({timest}, {msg_id}, {nick}, {text})");
 
+        // Lock message buffer so background loader doesn't load the message as soon as it's
+        // inserted into the DB.
+        let mut msgbuf = self.msgbuf.lock().await;
+
         if !self.add_line_to_db(timest, &msg_id, &nick, &text).await {
             // Already exists so bail
             debug!(target: "ui::chatview", "duplicate msg so bailing");
@@ -507,7 +511,6 @@ impl ChatView {
         }
 
         // Add message to page
-        let mut msgbuf = self.msgbuf.lock().await;
         if msgbuf.mark_confirmed(&msg_id) {
             // Message already exists. Which means it must be an unconfirmed sent message.
             // Mark it as confirmed.

+ 2 - 1
bin/darkwallet/src/ui/chatview/page.rs

@@ -807,7 +807,7 @@ impl MessageBuffer {
         nick: String,
         text: String,
     ) -> Option<&mut PrivMessage> {
-        //debug!(target: "ui::chatview", "MessageBuffer::insert_privmsg()");
+        debug!(target: "ui::chatview", "MessageBuffer::insert_privmsg({timest}, {msg_id}, {nick}, {text})");
         let font_size = self.font_size.get();
         let timestamp_font_size = self.timestamp_font_size.get();
         let timestamp_width = self.timestamp_width.get();
@@ -871,6 +871,7 @@ impl MessageBuffer {
         nick: String,
         text: String,
     ) -> f32 {
+        debug!(target: "ui::chatview", "MessageBuffer::push_privmsg({timest}, {msg_id}, {nick}, {text})");
         let font_size = self.font_size.get();
         let timestamp_font_size = self.timestamp_font_size.get();
         let timestamp_width = self.timestamp_width.get();