From 1b6cf7d5f3d7a618f1b73a97c8237b65ad507c3e Mon Sep 17 00:00:00 2001 From: Joshua Claveau Date: Sun, 21 Mar 2021 19:01:54 +0100 Subject: [PATCH] Project properties dialog launch a little more faster (especially on windows) Instead of build machine_info class which take time, only to get the max width and height of screens, call of methods Machine_info::i_max_screen_width() and Machine_info::i_max_screen_height() are now static and compute only this. The project properties dialog is now faster because don't wait the end build of machine_info. --- sources/configdialog.cpp | 6 ++---- sources/machine_info.cpp | 36 +++++++++++++++++++++++++++++++++--- sources/machine_info.h | 4 ++-- 3 files changed, 37 insertions(+), 9 deletions(-) diff --git a/sources/configdialog.cpp b/sources/configdialog.cpp index fc3216c70..c211e3669 100644 --- a/sources/configdialog.cpp +++ b/sources/configdialog.cpp @@ -27,7 +27,6 @@ @param parent QWidget parent */ ConfigDialog::ConfigDialog(QWidget *parent) : QDialog(parent) { - Machine_info *mymachineinfo= new Machine_info(this); //ScrollArea for low screens QScrollArea *scroll = new QScrollArea(this); scroll->setHorizontalScrollBarPolicy(Qt::ScrollBarAsNeeded); @@ -36,7 +35,7 @@ ConfigDialog::ConfigDialog(QWidget *parent) : QDialog(parent) { // liste des pages pages_list = new QListWidget(); pages_list -> setViewMode(QListView::IconMode); - if(mymachineinfo->i_max_screen_height()<1000){ + if(Machine_info::i_max_screen_height()<1000){ pages_list -> setIconSize(QSize(64, 64)); } else { pages_list -> setIconSize(QSize(128, 128)); @@ -80,8 +79,7 @@ ConfigDialog::ConfigDialog(QWidget *parent) : QDialog(parent) { connect(pages_list, SIGNAL(currentRowChanged(int)), pages_widget, SLOT(setCurrentIndex(int))); - setMaximumSize(mymachineinfo->i_max_screen_width(), - mymachineinfo->i_max_screen_height()); + setMaximumSize(Machine_info::i_max_screen_width(), Machine_info::i_max_screen_height()); resize(1400,1000); #ifdef Q_OS_MACOS diff --git a/sources/machine_info.cpp b/sources/machine_info.cpp index 2c6898ce2..5645d0607 100644 --- a/sources/machine_info.cpp +++ b/sources/machine_info.cpp @@ -322,7 +322,22 @@ void Machine_info::init_get_cpu_info_macos() */ int32_t Machine_info::i_max_screen_width() { - return pc.screen.Max_width; + const auto screens = qApp->screens(); + auto screen_count = screens.count(); + + int32_t width_[10]; + int32_t Max_width = 0; + + for (int ii = 0; ii < screen_count; ++ii) + { + width_[ii]= + screens[ii]->geometry().width() + * screens[ii]->devicePixelRatio(); + if(Max_width < width_[ii]) + Max_width = width_[ii]; + } + + return Max_width; } /** @@ -330,8 +345,23 @@ int32_t Machine_info::i_max_screen_width() @return max screen height */ int32_t Machine_info::i_max_screen_height() -{ - return pc.screen.Max_height; +{ + const auto screens = qApp->screens(); + auto screen_count = screens.count(); + + int32_t height_[10]; + int32_t Max_height = 0; + + for (int ii = 0; ii < screen_count; ++ii) + { + height_[ii]= + screens[ii]->geometry().height() + * screens[ii]->devicePixelRatio(); + if(Max_height