File: 19-synth-state.diff

package info (click to toggle)
musescore3 3.2.3%2Bdfsg2-19
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 218,192 kB
  • sloc: cpp: 291,369; xml: 200,226; sh: 3,779; ansic: 1,447; python: 393; makefile: 249; perl: 82; pascal: 79
file content (28 lines) | stat: -rw-r--r-- 1,008 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Origin: upstream, commit:c9f84a4f5c1b959326276e88d480a550d2f10b67
Author: James Thistlewood <jamesthistlewood@gmail.com>
Description: fix #290323: synthesizer state duplicated when changing score with saved state

--- a/libmscore/synthesizerstate.cpp
+++ b/libmscore/synthesizerstate.cpp
@@ -42,6 +42,7 @@ void SynthesizerState::write(XmlWriter&
 
 void SynthesizerState::read(XmlReader& e)
       {
+      std::list<SynthesizerGroup> tempGroups;
       while (e.readNextStartElement()) {
             SynthesizerGroup group;
             group.setName(e.name().toString());
@@ -54,7 +55,12 @@ void SynthesizerState::read(XmlReader& e
                   else
                         e.unknown();
                   }
-            push_back(group);
+            tempGroups.push_back(group);
+            }
+
+      if (!tempGroups.empty()) {
+            // Replace any previously set state if we have read a new state
+            swap(tempGroups);
             setIsDefault(false);
             }
       }