]> git.lyx.org Git - lyx.git/commitdiff
Speed up exit time
authorEnrico Forestieri <forenr@lyx.org>
Wed, 18 Oct 2017 20:11:56 +0000 (22:11 +0200)
committerEnrico Forestieri <forenr@lyx.org>
Wed, 18 Oct 2017 20:11:56 +0000 (22:11 +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).

16 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
status.22x

index a9c1250b6eb5276660816435c370d06f2b8eae11..c44419bd042292934931ab616175d6b1982c663f 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 a9769ff4abe30cb686a7d88e102575492368791c..067d2f29699df92ad1081d62a9335c5d88f17d81 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 e01687678a95194310c2f79c96b04b54256dc8b6..218d619b37d75f72e53afdd6fc37ddd26cf6275b 100644 (file)
@@ -455,10 +455,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 812c08405a53dbc5f711be3481daa36bb96c01de..8cb39fe1b1f4883ac75c6392506e6adf581bc00e 100644 (file)
@@ -74,7 +74,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 4c4bcf13f793bd1b427ab3643f56098c0aedfcc0..8f8a73bd27ddd86f26e741dd0b1439b60f9b5d4a 100644 (file)
@@ -816,10 +816,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 035b2d2e2ac1d081d47e73acb2be5d47d813676f..8e27a480b7e5ec2f583a1771521cc0b01c0ebfe1 100644 (file)
@@ -76,7 +76,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 2a9c708d46bfed161b19fb434181aeb007215a91..15958d721be2a1bf577aa59bfdeaee66b3aa1de4 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 a27f6b2dc05f940323ddf102829a256efb2bafc4..69f1b73299b1db71ecf57b30bcbdfc6370e06e5c 100644 (file)
@@ -224,10 +224,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 9a743f2322827167d1fcfd3bbe694b4383ac0406..fd6db70ebc87defca092da410e78eaaa008d01f4 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 2f0b5109918df72dda7e482fa679b511b1e74bfe..902c6be08027fffda1e41ddddac0bca49d0bd3d9 100644 (file)
@@ -353,9 +353,8 @@ QString GuiToolbar::sessionKey() const
 }
 
 
-void GuiToolbar::saveSession() const
+void GuiToolbar::saveSession(QSettings & settings) const
 {
-       QSettings settings;
        settings.setValue(sessionKey() + "/visibility", visibility_);
 }
 
index caad355bd8c401a0d95f9db9c83924730c5734b2..3f54ac8bd4daf964b5828851a6b7d6fb70e8b9c9 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 0dd47a2a3f4edf444c1cbf2a848e46f0a6e61b96..79cb8a4f9dacca382d1711ab8e5b41943ae26ef1 100644 (file)
@@ -726,14 +726,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 8785c897da10db58511667f0ccd6b9edda2d8813..6937cd4ba0fdf2063d01114b5fbe31128787533a 100644 (file)
@@ -371,9 +371,9 @@ void ViewSourceWidget::resizeEvent (QResizeEvent * event)
        QWidget::resizeEvent(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());
@@ -457,10 +457,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 b7a5190ce275bc0ece6f0b6d9f056980e6af85c2..dfc302b5d2959dc2bce6034978173d66b2ec9784 100644 (file)
@@ -43,7 +43,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);
 
@@ -116,7 +116,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; }
        ///@}
index 58e47e055e5412602c730fc26b6f261eaf28fbfe..8128fb882eff640b1b15b2c04116a2af252df9ea 100644 (file)
@@ -26,6 +26,8 @@ What's new
 
 - Cache information on exportable formats (bug 9980).
 
+- Shorten the time required to save the session state on exit.
+
 
 * DOCUMENTATION AND LOCALIZATION