]> git.lyx.org Git - lyx.git/commitdiff
Speed up exit time
authorEnrico Forestieri <forenr@lyx.org>
Wed, 18 Oct 2017 11:12:20 +0000 (13:12 +0200)
committerEnrico Forestieri <forenr@lyx.org>
Wed, 18 Oct 2017 11:38:16 +0000 (13:38 +0200)
Instantiating a single QSettings and using it for each ui element
can significantly shorten the time required to save the various
states at exit. The speed up can be better appreciated on *nix,
where the settings are saved on disk, rather than on Windows where
they are held in memory (in the registry).

(cherry picked from commit 3b43fbfbb18cc4535aba3fd77c6a3cf21835dafa)

15 files changed:
src/frontends/qt4/Dialog.cpp
src/frontends/qt4/Dialog.h
src/frontends/qt4/GuiCharacter.cpp
src/frontends/qt4/GuiCharacter.h
src/frontends/qt4/GuiCitation.cpp
src/frontends/qt4/GuiCitation.h
src/frontends/qt4/GuiParagraph.cpp
src/frontends/qt4/GuiParagraph.h
src/frontends/qt4/GuiProgressView.cpp
src/frontends/qt4/GuiProgressView.h
src/frontends/qt4/GuiToolbar.cpp
src/frontends/qt4/GuiToolbar.h
src/frontends/qt4/GuiView.cpp
src/frontends/qt4/GuiViewSource.cpp
src/frontends/qt4/GuiViewSource.h

index e1fddaaa7e0f2660b4e3380d61c3e73fb3205e03..2369738c5c5b3b445bc3f29a32dd1b2cd88444e1 100644 (file)
@@ -275,9 +275,8 @@ QString Dialog::sessionKey() const
 }
 
 
-void Dialog::saveSession() const
+void Dialog::saveSession(QSettings & settings) const
 {
-       QSettings settings;
        settings.setValue(sessionKey() + "/geometry", asQWidget()->saveGeometry());
 }
 
index c5ccd2d292c1b0a7f8871fbc76bd3d6a0d4020d9..5f958e79d0d835a552354de0cf7a704437b913c6 100644 (file)
@@ -20,6 +20,7 @@
 
 #include <QString>
 
+class QSettings;
 class QWidget;
 
 namespace lyx {
@@ -72,7 +73,7 @@ public:
         * This default implementation saves the geometry state.
         * Reimplement to save more settings.
         **/
-       virtual void saveSession() const;
+       virtual void saveSession(QSettings & settings) const;
 
        /// Restore session settings.
        /**
index ff7cc5d10ee421729b53d861ee6bac79a3973de8..1e92db848de5eb830c33e293d1b066c2514529fd 100644 (file)
@@ -466,10 +466,9 @@ void GuiCharacter::dispatchParams()
 }
 
 
-void GuiCharacter::saveSession() const
+void GuiCharacter::saveSession(QSettings & settings) const
 {
-       Dialog::saveSession();
-       QSettings settings;
+       Dialog::saveSession(settings);
        settings.setValue(sessionKey() + "/toggleall", toggleallCB->isChecked());
        settings.setValue(sessionKey() + "/autoapply", autoapplyCB->isChecked());
 }
index 423bc8a3a5f81c4b65ed39c6ff0c7960b1b00671..8328211eb1fff473837d0dfffac6aff9af3144e4 100644 (file)
@@ -76,7 +76,7 @@ private:
        void dispatchParams();
        bool isBufferDependent() const { return true; }
        FuncCode getLfun() const { return LFUN_TEXTSTYLE_UPDATE; }
-       void saveSession() const;
+       void saveSession(QSettings & settings) const;
        void restoreSession();
        //@}
 
index 1d78da61dd10b660a7dc54392d2c21496c55729d..cecdbca0939359e6211c0b539897057733f43561 100644 (file)
@@ -1049,10 +1049,9 @@ BiblioInfo const & GuiCitation::bibInfo() const
 }
 
 
-void GuiCitation::saveSession() const
+void GuiCitation::saveSession(QSettings & settings) const
 {
-       Dialog::saveSession();
-       QSettings settings;
+       Dialog::saveSession(settings);
        settings.setValue(
                sessionKey() + "/regex", regexp_->isChecked());
        settings.setValue(
index 5f093cc21d6b905ec7f34f00fda2ac91d493d842..008d2d556d5ba2bda38ce6485a9616e46f8b2213 100644 (file)
@@ -79,7 +79,7 @@ private:
        void clearParams();
        void dispatchParams();
        bool isBufferDependent() const { return true; }
-       void saveSession() const;
+       void saveSession(QSettings & settings) const;
        void restoreSession();
        /** Disconnect from the inset when the Apply button is pressed.
         *  Allows easy insertion of multiple citations.
index 0c8e01aaa434d66d258b13a5a32dd459fa9e1cf4..656e70f3042e7a19fb541b2a20dc2b271102d7f8 100644 (file)
@@ -384,10 +384,9 @@ bool GuiParagraph::hasLabelwidth() const
 }
 
 
-void GuiParagraph::saveSession() const
+void GuiParagraph::saveSession(QSettings & settings) const
 {
-       Dialog::saveSession();
-       QSettings settings;
+       Dialog::saveSession(settings);
        settings.setValue(sessionKey() + "/autoapply", synchronizedViewCB->isChecked());
 }
 
index aee410f607dd14d15ab442608a28d3241b504e18..735d58ca8f457c989bb0ca4ca651e49b13727b7d 100644 (file)
@@ -39,7 +39,7 @@ public:
        void enableView(bool enable);
        bool isBufferDependent() const { return true; }
        virtual FuncCode getLfun() const { return LFUN_PARAGRAPH_PARAMS_APPLY; }
-       void saveSession() const;
+       void saveSession(QSettings & settings) const;
        void restoreSession();
        //@}
 
index 3424d8f4516571203da971163f6bd1a8535bbb19..9a5090832e5443b5f11527f8a1490580608040f2 100644 (file)
@@ -232,10 +232,9 @@ void GuiProgressView::appendText(QString const & text)
 }
 
 
-void GuiProgressView::saveSession() const
+void GuiProgressView::saveSession(QSettings & settings) const
 {
-       Dialog::saveSession();
-       QSettings settings;
+       Dialog::saveSession(settings);
        settings.setValue(
                sessionKey() + "/autoclear", widget_->autoClearCB->isChecked());
        settings.setValue(
index f7593a2cc1f69349d01258572a8bdec73154407f..94989093198bef63d477d84915ac4f5b6fb9b599 100644 (file)
@@ -61,7 +61,7 @@ public:
        void updateView() {}
        bool wantInitialFocus() const { return false; }
        void restoreSession();
-       void saveSession() const;
+       void saveSession(QSettings & settings) const;
        ///@}
 
 private Q_SLOTS:
index d519548e075fcc81b707494196b73535d42186d8..db96e0e526dbf3ed77bf208bc7092a191c7c6029 100644 (file)
@@ -351,9 +351,8 @@ QString GuiToolbar::sessionKey() const
 }
 
 
-void GuiToolbar::saveSession() const
+void GuiToolbar::saveSession(QSettings & settings) const
 {
-       QSettings settings;
        settings.setValue(sessionKey() + "/visibility", visibility_);
        settings.setValue(sessionKey() + "/movability", isMovable());
 }
index 6df840a9bd3b337d877a6ea4ef052ed39974e708..badd59930ab4d2d97fe12f99fabb7b1c1d3a09a1 100644 (file)
@@ -20,6 +20,8 @@
 #include <QToolBar>
 #include <QToolButton>
 
+class QSettings;
+
 namespace lyx {
 
 class DocumentClass;
@@ -84,7 +86,7 @@ public:
         **/
        QString sessionKey() const;
        /// Save session settings.
-       void saveSession() const;
+       void saveSession(QSettings & settings) const;
        /// Restore session settings.
        void restoreSession();
 
index f936c33d63dbd6dc2549f8c7d3e4ddc3c22b243a..c587460297833e251da32754ef2b8e1fc931a66b 100644 (file)
@@ -758,14 +758,16 @@ void GuiView::saveLayout() const
 
 void GuiView::saveUISettings() const
 {
+       QSettings settings;
+
        // Save the toolbar private states
        ToolbarMap::iterator end = d.toolbars_.end();
        for (ToolbarMap::iterator it = d.toolbars_.begin(); it != end; ++it)
-               it->second->saveSession();
+               it->second->saveSession(settings);
        // Now take care of all other dialogs
        map<string, DialogPtr>::const_iterator it = d.dialogs_.begin();
        for (; it!= d.dialogs_.end(); ++it)
-               it->second->saveSession();
+               it->second->saveSession(settings);
 }
 
 
index 80d3c0b459419fdbdc0810f4ef331afcfc8f6974..04c6bf5c349796661315388d72b26d91c9febab9 100644 (file)
@@ -367,9 +367,8 @@ void ViewSourceWidget::resizeEvent (QResizeEvent * event)
 }
 
 
-void ViewSourceWidget::saveSession(QString const & session_key) const
+void ViewSourceWidget::saveSession(QSettings & settings, QString const & session_key) const
 {
-       QSettings settings;
        settings.setValue(session_key + "/output", toqstr(view_format_));
        settings.setValue(session_key + "/contents", contentsCO->currentIndex());
        settings.setValue(session_key + "/autoupdate", autoUpdateCB->isChecked());
@@ -462,10 +461,10 @@ void GuiViewSource::updateTitle()
 }
 
 
-void GuiViewSource::saveSession() const
+void GuiViewSource::saveSession(QSettings & settings) const
 {
-       Dialog::saveSession();
-       widget_->saveSession(sessionKey());
+       Dialog::saveSession(settings);
+       widget_->saveSession(settings, sessionKey());
 }
 
 
index 873f8dbf4f293fc1ea74dbac62f0f0c7280c1c60..48f2903b74dce98bddabcbf04b56799eeb8c1c43 100644 (file)
@@ -47,7 +47,7 @@ public:
        /// returns true if the string has changed
        bool setText(QString const & qstr = QString());
        ///
-       void saveSession(QString const & session_key) const;
+       void saveSession(QSettings & settings, QString const & session_key) const;
        ///
        void restoreSession(QString const & session_key);
        ///
@@ -112,7 +112,7 @@ public:
        bool canApplyToReadOnly() const { return true; }
        void updateView();
        void enableView(bool enable);
-       void saveSession() const;
+       void saveSession(QSettings & settings) const;
        void restoreSession();
        bool wantInitialFocus() const { return false; }
        ///@}