From aef9617d1ec7f73a394ed4bb43b4436e27225176 Mon Sep 17 00:00:00 2001 From: Nicolas Werner Date: Sat, 16 Mar 2024 03:55:57 +0100 Subject: Make a few headers forward declarations --- src/timeline/RoomlistModel.cpp | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'src/timeline/RoomlistModel.cpp') diff --git a/src/timeline/RoomlistModel.cpp b/src/timeline/RoomlistModel.cpp index 898e6e83..4cc50fee 100644 --- a/src/timeline/RoomlistModel.cpp +++ b/src/timeline/RoomlistModel.cpp @@ -945,6 +945,34 @@ FilteredRoomlistModel::FilteredRoomlistModel(RoomlistModel *model, QObject *pare sort(0); } +FilteredRoomlistModel * +FilteredRoomlistModel::create(QQmlEngine *qmlEngine, QJSEngine *) +{ + // The instance has to exist before it is used. We cannot replace it. + Q_ASSERT(instance_); + + // The engine has to have the same thread affinity as the singleton. + Q_ASSERT(qmlEngine->thread() == instance_->thread()); + + // There can only be one engine accessing the singleton. + static QJSEngine *s_engine = nullptr; + if (s_engine) + Q_ASSERT(qmlEngine == s_engine); + else + s_engine = qmlEngine; + + QJSEngine::setObjectOwnership(instance_, QJSEngine::CppOwnership); + return instance_; +} + +TimelineModel * +FilteredRoomlistModel::getRoomById(const QString &id) const +{ + auto r = roomlistmodel->getRoomById(id).data(); + QQmlEngine::setObjectOwnership(r, QQmlEngine::CppOwnership); + return r; +} + void FilteredRoomlistModel::updateHiddenTagsAndSpaces() { -- cgit 1.5.1