Libsource: Fix the multithread bug in QML engine.
This commit is contained in:
parent
73ebc786a8
commit
ee6ea7840d
|
@ -23,8 +23,14 @@ RibbonTheme::RibbonTheme()
|
||||||
}
|
}
|
||||||
|
|
||||||
RibbonTheme* RibbonTheme::instance(){
|
RibbonTheme* RibbonTheme::instance(){
|
||||||
static RibbonTheme instance;
|
static QMutex mutex;
|
||||||
return &instance;
|
QMutexLocker locker(&mutex);
|
||||||
|
|
||||||
|
static RibbonTheme *singleton = nullptr;
|
||||||
|
if (!singleton) {
|
||||||
|
singleton = new RibbonTheme();
|
||||||
|
}
|
||||||
|
return singleton;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool RibbonTheme::eventFilter(QObject *obj, QEvent *event)
|
bool RibbonTheme::eventFilter(QObject *obj, QEvent *event)
|
||||||
|
|
|
@ -10,16 +10,18 @@ class RibbonTheme : public QQuickItem
|
||||||
QML_ELEMENT
|
QML_ELEMENT
|
||||||
QML_SINGLETON
|
QML_SINGLETON
|
||||||
QML_NAMED_ELEMENT(RibbonTheme)
|
QML_NAMED_ELEMENT(RibbonTheme)
|
||||||
|
Q_DISABLE_COPY(RibbonTheme)
|
||||||
|
|
||||||
Q_PROPERTY(bool dark_mode READ dark_mode() NOTIFY dark_modeChanged FINAL)
|
Q_PROPERTY(bool dark_mode READ dark_mode() NOTIFY dark_modeChanged FINAL)
|
||||||
Q_PROPERTY_RW(RibbonThemeType::ThemeMode,theme_mode)
|
Q_PROPERTY_RW(RibbonThemeType::ThemeMode,theme_mode)
|
||||||
Q_PROPERTY_RW(bool,modern_style)
|
Q_PROPERTY_RW(bool,modern_style)
|
||||||
public:
|
public:
|
||||||
RibbonTheme();
|
static RibbonTheme* create(QQmlEngine *qmlEngine, QJSEngine *jsEngine){return instance();}
|
||||||
static RibbonTheme* instance();
|
static RibbonTheme* instance();
|
||||||
Q_SIGNAL void dark_modeChanged();
|
Q_SIGNAL void dark_modeChanged();
|
||||||
bool dark_mode();
|
bool dark_mode();
|
||||||
private:
|
private:
|
||||||
|
RibbonTheme();
|
||||||
bool eventFilter(QObject *obj, QEvent *event);
|
bool eventFilter(QObject *obj, QEvent *event);
|
||||||
RibbonThemeType::ThemeMode current_theme();
|
RibbonThemeType::ThemeMode current_theme();
|
||||||
RibbonThemeType::ThemeMode _system_theme_mode;
|
RibbonThemeType::ThemeMode _system_theme_mode;
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
#include "ribbonui.h"
|
#include "ribbonui.h"
|
||||||
|
#include <QMutex>
|
||||||
#define STR(x) #x
|
#define STR(x) #x
|
||||||
#define JOIN(a,b,c,d) STR(a.b.c.d)
|
#define JOIN(a,b,c,d) STR(a.b.c.d)
|
||||||
#define VER_JOIN(x) JOIN x
|
#define VER_JOIN(x) JOIN x
|
||||||
|
@ -11,6 +11,12 @@ RibbonUI::RibbonUI(QQuickItem *parent)
|
||||||
}
|
}
|
||||||
|
|
||||||
RibbonUI* RibbonUI::instance(){
|
RibbonUI* RibbonUI::instance(){
|
||||||
static RibbonUI instance;
|
static QMutex mutex;
|
||||||
return &instance;
|
QMutexLocker locker(&mutex);
|
||||||
|
|
||||||
|
static RibbonUI *singleton = nullptr;
|
||||||
|
if (!singleton) {
|
||||||
|
singleton = new RibbonUI();
|
||||||
|
}
|
||||||
|
return singleton;
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,10 +10,13 @@ class RibbonUI : public QQuickItem
|
||||||
QML_ELEMENT
|
QML_ELEMENT
|
||||||
QML_SINGLETON
|
QML_SINGLETON
|
||||||
QML_NAMED_ELEMENT(RibbonUI)
|
QML_NAMED_ELEMENT(RibbonUI)
|
||||||
|
Q_DISABLE_COPY(RibbonUI)
|
||||||
Q_PROPERTY_RW(QString, version)
|
Q_PROPERTY_RW(QString, version)
|
||||||
public:
|
public:
|
||||||
explicit RibbonUI(QQuickItem *parent = nullptr);
|
|
||||||
static RibbonUI* instance();
|
static RibbonUI* instance();
|
||||||
|
static RibbonUI* create(QQmlEngine *qmlEngine, QJSEngine *jsEngine){return instance();}
|
||||||
|
private:
|
||||||
|
explicit RibbonUI(QQuickItem *parent = nullptr);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // RIBBONUI_H
|
#endif // RIBBONUI_H
|
||||||
|
|
Loading…
Reference in New Issue