Fix Runner and MatrixImageProvider singletons

This commit is contained in:
Tobias Fella
2023-11-05 14:35:28 +01:00
parent dabd6291a5
commit 1d95d5aa15
3 changed files with 18 additions and 4 deletions

View File

@@ -223,7 +223,7 @@ int main(int argc, char *argv[])
});
}
engine.addImageProvider(QLatin1String("mxc"), new MatrixImageProvider);
engine.addImageProvider(QLatin1String("mxc"), MatrixImageProvider::create(&engine, &engine));
engine.addImageProvider(QLatin1String("blurhash"), new BlurhashImageProvider);
engine.load(QUrl(QStringLiteral("qrc:/org/kde/neochat/qml/main.qml")));
@@ -236,8 +236,8 @@ int main(int argc, char *argv[])
}
#ifdef HAVE_RUNNER
Runner runner;
QDBusConnection::sessionBus().registerObject("/RoomRunner"_ls, &runner, QDBusConnection::ExportScriptableContents);
auto runner = Runner::create(&engine, &engine);
QDBusConnection::sessionBus().registerObject("/RoomRunner"_ls, runner, QDBusConnection::ExportScriptableContents);
#endif
QWindow *window = windowFromEngine(&engine);

View File

@@ -60,6 +60,13 @@ class MatrixImageProvider : public QQuickAsyncImageProvider
Q_PROPERTY(NeoChatConnection *connection MEMBER m_connection)
public:
static MatrixImageProvider *create(QQmlEngine *engine, QJSEngine *)
{
static MatrixImageProvider instance;
engine->setObjectOwnership(&instance, QQmlEngine::CppOwnership);
return &instance;
}
/**
* @brief Return a job to provide the image with the given ID.
*
@@ -69,4 +76,5 @@ public:
private:
NeoChatConnection *m_connection = nullptr;
MatrixImageProvider() = default;
};

View File

@@ -170,7 +170,12 @@ class Runner : public QObject, protected QDBusContext
Q_PROPERTY(RoomListModel *roomListModel READ roomListModel WRITE setRoomListModel NOTIFY roomListModelChanged)
public:
Runner();
static Runner *create(QQmlEngine *engine, QJSEngine *)
{
static Runner instance;
engine->setObjectOwnership(&instance, QQmlEngine::CppOwnership);
return &instance;
}
/**
* @brief Return a list of KRunner actions.
@@ -200,4 +205,5 @@ private:
SortFilterRoomListModel m_model;
RoomListModel m_sourceModel;
Runner();
};