From d4cb27eca42f78c6de7f874f3a09e8e98d2a2bed Mon Sep 17 00:00:00 2001 From: Tobias Fella Date: Sun, 1 Oct 2023 19:07:10 +0200 Subject: [PATCH] Make singletons owned by the C++ side --- src/controller.h | 3 ++- src/models/customemojimodel.h | 3 ++- src/models/emojimodel.h | 3 ++- src/notificationsmanager.h | 3 ++- src/registration.h | 3 ++- src/roommanager.h | 3 ++- src/spacehierarchycache.h | 4 +++- 7 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/controller.h b/src/controller.h index 492969ea9..6e9ea5297 100644 --- a/src/controller.h +++ b/src/controller.h @@ -93,8 +93,9 @@ public: Q_ENUM(PasswordStatus) static Controller &instance(); - static Controller *create(QQmlEngine *, QJSEngine *) + static Controller *create(QQmlEngine *engine, QJSEngine *) { + engine->setObjectOwnership(&instance(), QQmlEngine::CppOwnership); return &instance(); } diff --git a/src/models/customemojimodel.h b/src/models/customemojimodel.h index 2ac310c48..c597af7d5 100644 --- a/src/models/customemojimodel.h +++ b/src/models/customemojimodel.h @@ -51,8 +51,9 @@ public: static CustomEmojiModel _instance; return _instance; } - static CustomEmojiModel *create(QQmlEngine *, QJSEngine *) + static CustomEmojiModel *create(QQmlEngine *engine, QJSEngine *) { + engine->setObjectOwnership(&instance(), QQmlEngine::CppOwnership); return &instance(); } diff --git a/src/models/emojimodel.h b/src/models/emojimodel.h index ce57c6a27..4403d9033 100644 --- a/src/models/emojimodel.h +++ b/src/models/emojimodel.h @@ -86,8 +86,9 @@ public: static EmojiModel _instance; return _instance; } - static EmojiModel *create(QQmlEngine *, QJSEngine *) + static EmojiModel *create(QQmlEngine *engine, QJSEngine *) { + engine->setObjectOwnership(&instance(), QQmlEngine::CppOwnership); return &instance(); } diff --git a/src/notificationsmanager.h b/src/notificationsmanager.h index fd51e13c7..cd1e4d0e2 100644 --- a/src/notificationsmanager.h +++ b/src/notificationsmanager.h @@ -59,8 +59,9 @@ class NotificationsManager : public QObject public: static NotificationsManager &instance(); - static NotificationsManager *create(QQmlEngine *, QJSEngine *) + static NotificationsManager *create(QQmlEngine *engine, QJSEngine *) { + engine->setObjectOwnership(&instance(), QQmlEngine::CppOwnership); return &instance(); } diff --git a/src/registration.h b/src/registration.h index a62e0220f..d53fd11a1 100644 --- a/src/registration.h +++ b/src/registration.h @@ -91,8 +91,9 @@ public: static Registration _instance; return _instance; } - static Registration *create(QQmlEngine *, QJSEngine *) + static Registration *create(QQmlEngine *engine, QJSEngine *) { + engine->setObjectOwnership(&instance(), QQmlEngine::CppOwnership); return &instance(); } diff --git a/src/roommanager.h b/src/roommanager.h index 9c81da06c..d49a9c0d7 100644 --- a/src/roommanager.h +++ b/src/roommanager.h @@ -90,8 +90,9 @@ public: explicit RoomManager(QObject *parent = nullptr); virtual ~RoomManager(); static RoomManager &instance(); - static RoomManager *create(QQmlEngine *, QJSEngine *) + static RoomManager *create(QQmlEngine *engine, QJSEngine *) { + engine->setObjectOwnership(&instance(), QQmlEngine::CppOwnership); return &instance(); } diff --git a/src/spacehierarchycache.h b/src/spacehierarchycache.h index facec1aea..ed4147a5a 100644 --- a/src/spacehierarchycache.h +++ b/src/spacehierarchycache.h @@ -1,3 +1,4 @@ + // SPDX-FileCopyrightText: 2022 Snehit Sah // SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL @@ -33,8 +34,9 @@ public: static SpaceHierarchyCache _instance; return _instance; } - static SpaceHierarchyCache *create(QQmlEngine *, QJSEngine *) + static SpaceHierarchyCache *create(QQmlEngine *engine, QJSEngine *) { + engine->setObjectOwnership(&instance(), QQmlEngine::CppOwnership); return &instance(); }