diff options
| author | Pierre Bourdon <delroth@gmail.com> | 2018-07-03 04:03:31 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-07-03 04:03:31 +0200 |
| commit | 472cd14d1d5f6bb261de130bfeafed360ee124c3 (patch) | |
| tree | 186907bd976625b7fdf98de888cfa71ebd33860a /Source | |
| parent | 4eeef6e5b39b11daefca009c8645560591accc52 (diff) | |
| parent | da0de12cced1574d70bc3ac7df4a1d9012833df7 (diff) | |
Merge pull request #7206 from delroth/qt-boottime
dqt2: lazy-initialize GraphicsWindow
Diffstat (limited to 'Source')
| -rw-r--r-- | Source/Core/DolphinQt2/Config/Graphics/GraphicsWindow.cpp | 11 | ||||
| -rw-r--r-- | Source/Core/DolphinQt2/Config/Graphics/GraphicsWindow.h | 4 | ||||
| -rw-r--r-- | Source/Core/DolphinQt2/MainWindow.cpp | 1 |
3 files changed, 16 insertions, 0 deletions
diff --git a/Source/Core/DolphinQt2/Config/Graphics/GraphicsWindow.cpp b/Source/Core/DolphinQt2/Config/Graphics/GraphicsWindow.cpp index bccac209de..0aaa900588 100644 --- a/Source/Core/DolphinQt2/Config/Graphics/GraphicsWindow.cpp +++ b/Source/Core/DolphinQt2/Config/Graphics/GraphicsWindow.cpp @@ -27,6 +27,17 @@ GraphicsWindow::GraphicsWindow(X11Utils::XRRConfiguration* xrr_config, MainWindow* parent) : QDialog(parent), m_xrr_config(xrr_config) { + // GraphicsWindow initialization is heavy due to dependencies on the graphics subsystem. + // To prevent blocking startup, we create the layout and children at first show time. +} + +void GraphicsWindow::Initialize() +{ + if (m_lazy_initialized) + return; + + m_lazy_initialized = true; + g_Config.Refresh(); g_video_backend->InitBackendInfo(); diff --git a/Source/Core/DolphinQt2/Config/Graphics/GraphicsWindow.h b/Source/Core/DolphinQt2/Config/Graphics/GraphicsWindow.h index 1850180dcd..bebcaa43d2 100644 --- a/Source/Core/DolphinQt2/Config/Graphics/GraphicsWindow.h +++ b/Source/Core/DolphinQt2/Config/Graphics/GraphicsWindow.h @@ -29,6 +29,8 @@ class GraphicsWindow final : public QDialog public: explicit GraphicsWindow(X11Utils::XRRConfiguration* xrr_config, MainWindow* parent); + void Initialize(); + void RegisterWidget(GraphicsWidget* widget); bool eventFilter(QObject* object, QEvent* event) override; signals: @@ -39,6 +41,8 @@ private: void OnBackendChanged(const QString& backend); void OnDescriptionAdded(QWidget* widget, const char* description); + bool m_lazy_initialized = false; + QTabWidget* m_tab_widget; QLabel* m_description; QDialogButtonBox* m_button_box; diff --git a/Source/Core/DolphinQt2/MainWindow.cpp b/Source/Core/DolphinQt2/MainWindow.cpp index b81b60b83a..25326547db 100644 --- a/Source/Core/DolphinQt2/MainWindow.cpp +++ b/Source/Core/DolphinQt2/MainWindow.cpp @@ -935,6 +935,7 @@ void MainWindow::ShowHotkeyDialog() void MainWindow::ShowGraphicsWindow() { + m_graphics_window->Initialize(); m_graphics_window->show(); m_graphics_window->raise(); m_graphics_window->activateWindow(); |
