summary refs log tree commit diff
path: root/src/timeline/EventStore.cpp
diff options
context:
space:
mode:
authorNicolas Werner <nicolas.werner@hotmail.de>2021-12-29 07:02:32 +0100
committerNicolas Werner <nicolas.werner@hotmail.de>2021-12-29 07:02:32 +0100
commit271b111558f1a4aad2b580a7328cd8714834e41c (patch)
tree404ad1e0479f9121830657066a3fabc0331f5223 /src/timeline/EventStore.cpp
parentRemove a few casts (diff)
downloadnheko-271b111558f1a4aad2b580a7328cd8714834e41c.tar.xz
Reduce allocations for accessing event members
Diffstat (limited to 'src/timeline/EventStore.cpp')
-rw-r--r--src/timeline/EventStore.cpp29
1 files changed, 16 insertions, 13 deletions
diff --git a/src/timeline/EventStore.cpp b/src/timeline/EventStore.cpp
index 209464b7..96ed0241 100644
--- a/src/timeline/EventStore.cpp
+++ b/src/timeline/EventStore.cpp
@@ -106,8 +106,8 @@ EventStore::EventStore(std::string room_id, QObject *)
         }
 
         std::visit(
-          [this](auto e) {
-              auto txn_id       = e.event_id;
+          [this](const auto &e) {
+              const auto &txn_id = e.event_id;
               this->current_txn = txn_id;
 
               if (txn_id.empty() || txn_id[0] != 'm') {
@@ -207,7 +207,7 @@ EventStore::EventStore(std::string room_id, QObject *)
                           rel.event_id = event_id;
                   }
 
-                  mtx::accessors::set_relations(related_event.data, relations);
+                  mtx::accessors::set_relations(related_event.data, std::move(relations));
 
                   cache::client()->replaceEvent(room_id_, related_event_id, related_event);
 
@@ -451,8 +451,8 @@ EventStore::edits(const std::string &event_id)
         std::holds_alternative<mtx::events::RoomEvent<mtx::events::msg::Redacted>>(*original_event))
         return {};
 
-    auto original_sender    = mtx::accessors::sender(*original_event);
-    auto original_relations = mtx::accessors::relations(*original_event);
+    const auto &original_sender = mtx::accessors::sender(*original_event);
+    const auto &original_relations = mtx::accessors::relations(*original_event);
 
     std::vector<mtx::events::collections::TimelineEvents> edits;
     for (const auto &id : event_ids) {
@@ -460,15 +460,15 @@ EventStore::edits(const std::string &event_id)
         if (!related_event)
             continue;
 
-        auto related_ev = *related_event;
-
-        auto edit_rel = mtx::accessors::relations(related_ev);
+        const auto &edit_rel = mtx::accessors::relations(*related_event);
         if (edit_rel.replaces() == event_id &&
-            original_sender == mtx::accessors::sender(related_ev)) {
+            original_sender == mtx::accessors::sender(*related_event)) {
+            auto related_ev = *related_event;
             if (edit_rel.synthesized && original_relations.reply_to() && !edit_rel.reply_to()) {
-                edit_rel.relations.push_back(
+                auto edit_rel_copy = edit_rel;
+                edit_rel_copy.relations.push_back(
                   {mtx::common::RelationType::InReplyTo, original_relations.reply_to().value()});
-                mtx::accessors::set_relations(related_ev, std::move(edit_rel));
+                mtx::accessors::set_relations(related_ev, std::move(edit_rel_copy));
             }
             edits.push_back(std::move(related_ev));
         }
@@ -728,7 +728,10 @@ EventStore::enableKeyRequests(bool suppressKeyRequests_)
 }
 
 mtx::events::collections::TimelineEvents *
-EventStore::get(std::string id, std::string_view related_to, bool decrypt, bool resolve_edits)
+EventStore::get(const std::string &id,
+                std::string_view related_to,
+                bool decrypt,
+                bool resolve_edits)
 {
     if (this->thread() != QThread::currentThread())
         nhlog::db()->warn("{} called from a different thread!", __func__);
@@ -736,7 +739,7 @@ EventStore::get(std::string id, std::string_view related_to, bool decrypt, bool
     if (id.empty())
         return nullptr;
 
-    IdIndex index{room_id_, std::move(id)};
+    IdIndex index{room_id_, id};
     if (resolve_edits) {
         auto edits_ = edits(index.id);
         if (!edits_.empty()) {