diff options
| author | Tim E. Real <termtech@rogers.com> | 2012-08-04 08:56:37 +0000 | 
|---|---|---|
| committer | Tim E. Real <termtech@rogers.com> | 2012-08-04 08:56:37 +0000 | 
| commit | 8ee7ac503d93d7a0b6cf3b49c3255d389ba59c17 (patch) | |
| tree | d21dd823d8365f08924525dfb0457c5b82b8193f /muse2/muse | |
| parent | 79d44ac604c41d431c36bf8a6422e4d5899e68dd (diff) | |
Introducing: More bits for Song Changed SC_* flags. 
Added member Song::updateFlags2. Song::update() now takes an extra 'flags2' param.
Please see ChangeLog for important information.
Diffstat (limited to 'muse2/muse')
37 files changed, 89 insertions, 60 deletions
| diff --git a/muse2/muse/arranger/arranger.cpp b/muse2/muse/arranger/arranger.cpp index 000faf91..62c405d3 100644 --- a/muse2/muse/arranger/arranger.cpp +++ b/muse2/muse/arranger/arranger.cpp @@ -524,7 +524,7 @@ Arranger::Arranger(ArrangerView* parent, const char* name)        connect(canvas, SIGNAL(dclickPart(MusECore::Track*)), SIGNAL(editPart(MusECore::Track*)));        connect(canvas, SIGNAL(startEditor(MusECore::PartList*,int)),   SIGNAL(startEditor(MusECore::PartList*, int))); -      connect(MusEGlobal::song,   SIGNAL(songChanged(int)), SLOT(songChanged(int))); +      connect(MusEGlobal::song,   SIGNAL(songChanged(int, int)), SLOT(songChanged(int)));        connect(canvas, SIGNAL(followEvent(int)), hscroll, SLOT(setOffset(int)));        connect(canvas, SIGNAL(selectionChanged()), SIGNAL(selectionChanged()));        connect(canvas, SIGNAL(dropSongFile(const QString&)), SIGNAL(dropSongFile(const QString&))); @@ -1198,7 +1198,7 @@ void Arranger::switchInfo(int n)                          delete w;                    w = new AudioStrip(trackInfo, (MusECore::AudioTrack*)selected);                    //w->setFocusPolicy(Qt::TabFocus);  // p4.0.9 -                  connect(MusEGlobal::song, SIGNAL(songChanged(int)), w, SLOT(songChanged(int))); +                  connect(MusEGlobal::song, SIGNAL(songChanged(int, int)), w, SLOT(songChanged(int)));                    connect(MusEGlobal::muse, SIGNAL(configChanged()), w, SLOT(configChanged()));                    w->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed));                    trackInfo->addWidget(w, 2); diff --git a/muse2/muse/arranger/arrangerview.cpp b/muse2/muse/arranger/arrangerview.cpp index 6fe38b69..14a0d8ef 100644 --- a/muse2/muse/arranger/arrangerview.cpp +++ b/muse2/muse/arranger/arrangerview.cpp @@ -113,7 +113,7 @@ ArrangerView::ArrangerView(QWidget* parent)    connect(MusEGlobal::muse, SIGNAL(configChanged()), arranger, SLOT(configChanged()));    connect(arranger, SIGNAL(setUsedTool(int)), editTools, SLOT(set(int)));    connect(arranger, SIGNAL(selectionChanged()), SLOT(selectionChanged())); -  connect(MusEGlobal::song, SIGNAL(songChanged(int)), this, SLOT(songChanged(int))); +  connect(MusEGlobal::song, SIGNAL(songChanged(int, int)), this, SLOT(songChanged(int))); diff --git a/muse2/muse/arranger/tlist.cpp b/muse2/muse/arranger/tlist.cpp index 05e23321..4d2a1251 100644 --- a/muse2/muse/arranger/tlist.cpp +++ b/muse2/muse/arranger/tlist.cpp @@ -113,7 +113,7 @@ TList::TList(Header* hdr, QWidget* parent, const char* name)        //setAttribute(Qt::WA_OpaquePaintEvent);        resizeFlag = false; -      connect(MusEGlobal::song, SIGNAL(songChanged(int)), SLOT(songChanged(int))); +      connect(MusEGlobal::song, SIGNAL(songChanged(int, int)), SLOT(songChanged(int)));        connect(MusEGlobal::muse, SIGNAL(configChanged()), SLOT(redraw()));        connect(MusEGlobal::heartBeatTimer, SIGNAL(timeout()), SLOT(maybeUpdateVolatileCustomColumns()));        } diff --git a/muse2/muse/cliplist/cliplist.cpp b/muse2/muse/cliplist/cliplist.cpp index 1f54f9b4..f32fabbc 100644 --- a/muse2/muse/cliplist/cliplist.cpp +++ b/muse2/muse/cliplist/cliplist.cpp @@ -146,7 +146,7 @@ ClipListEdit::ClipListEdit(QWidget* parent)        connect(editor->view, SIGNAL(itemSelectionChanged()), SLOT(clipSelectionChanged()));        connect(editor->view, SIGNAL(itemClicked(QTreeWidgetItem*, int)), SLOT(clicked(QTreeWidgetItem*, int))); -      connect(MusEGlobal::song, SIGNAL(songChanged(int)), SLOT(songChanged(int))); +      connect(MusEGlobal::song, SIGNAL(songChanged(int, int)), SLOT(songChanged(int)));        connect(editor->start, SIGNAL(valueChanged(const MusECore::Pos&)), SLOT(startChanged(const MusECore::Pos&)));        connect(editor->len, SIGNAL(valueChanged(const MusECore::Pos&)), SLOT(lenChanged(const MusECore::Pos&))); diff --git a/muse2/muse/confmport.cpp b/muse2/muse/confmport.cpp index 32e1dc91..2281f134 100644 --- a/muse2/muse/confmport.cpp +++ b/muse2/muse/confmport.cpp @@ -1107,7 +1107,7 @@ MPConfig::MPConfig(QWidget* parent)           this, SLOT(rbClicked(QTableWidgetItem*)));        connect(mdevView, SIGNAL(itemChanged(QTableWidgetItem*)),           this, SLOT(mdevViewItemRenamed(QTableWidgetItem*))); -      connect(MusEGlobal::song, SIGNAL(songChanged(int)), SLOT(songChanged(int))); +      connect(MusEGlobal::song, SIGNAL(songChanged(int, int)), SLOT(songChanged(int)));        connect(synthList, SIGNAL(itemSelectionChanged()), SLOT(selectionChanged()));        connect(instanceList, SIGNAL(itemSelectionChanged()), SLOT(selectionChanged())); diff --git a/muse2/muse/ctrl/ctrlcanvas.cpp b/muse2/muse/ctrl/ctrlcanvas.cpp index aa6fbf38..b1e8753c 100644 --- a/muse2/muse/ctrl/ctrlcanvas.cpp +++ b/muse2/muse/ctrl/ctrlcanvas.cpp @@ -216,7 +216,7 @@ CtrlCanvas::CtrlCanvas(MidiEditor* e, QWidget* parent, int xmag,        if (!editor->parts()->empty())              setCurTrackAndPart(); -      connect(MusEGlobal::song, SIGNAL(songChanged(int)), SLOT(songChanged(int))); +      connect(MusEGlobal::song, SIGNAL(songChanged(int, int)), SLOT(songChanged(int)));        connect(MusEGlobal::muse, SIGNAL(configChanged()), SLOT(configChanged()));        setCurDrumPitch(editor->curDrumInstrument()); diff --git a/muse2/muse/instruments/midictrledit.cpp b/muse2/muse/instruments/midictrledit.cpp index 44f1a150..03aa2f76 100644 --- a/muse2/muse/instruments/midictrledit.cpp +++ b/muse2/muse/instruments/midictrledit.cpp @@ -132,7 +132,7 @@ MidiControllerEditDialog::MidiControllerEditDialog(QWidget* parent, const char*        updateViewController();        _modified = false;        buttonApply->setEnabled(false); -      connect(MusEGlobal::song, SIGNAL(songChanged(int)), SLOT(songChanged(int))); +      connect(MusEGlobal::song, SIGNAL(songChanged(int, int)), SLOT(songChanged(int)));        }  //--------------------------------------------------------- diff --git a/muse2/muse/liste/listedit.cpp b/muse2/muse/liste/listedit.cpp index 2747de85..62b2004d 100644 --- a/muse2/muse/liste/listedit.cpp +++ b/muse2/muse/liste/listedit.cpp @@ -588,7 +588,7 @@ ListEdit::ListEdit(MusECore::PartList* pl)        mainGrid->setRowStretch(1, 100);        mainGrid->setColumnStretch(0, 100);        mainGrid->addWidget(liste, 1, 0, 2, 1); -      connect(MusEGlobal::song, SIGNAL(songChanged(int)), SLOT(songChanged(int))); +      connect(MusEGlobal::song, SIGNAL(songChanged(int, int)), SLOT(songChanged(int)));        if(pl->empty())        { diff --git a/muse2/muse/marker/markerview.cpp b/muse2/muse/marker/markerview.cpp index 062f4385..037c0ff3 100644 --- a/muse2/muse/marker/markerview.cpp +++ b/muse2/muse/marker/markerview.cpp @@ -271,7 +271,7 @@ MarkerView::MarkerView(QWidget* parent)        //    Rest        //--------------------------------------------------- -      connect(MusEGlobal::song, SIGNAL(songChanged(int)), SLOT(songChanged(int))); +      connect(MusEGlobal::song, SIGNAL(songChanged(int, int)), SLOT(songChanged(int)));        updateList(); diff --git a/muse2/muse/master/lmaster.cpp b/muse2/muse/master/lmaster.cpp index 154b5e1f..23c39bc7 100644 --- a/muse2/muse/master/lmaster.cpp +++ b/muse2/muse/master/lmaster.cpp @@ -267,7 +267,7 @@ LMaster::LMaster()        connect(view, SIGNAL(currentItemChanged(QTreeWidgetItem*, QTreeWidgetItem*)), SLOT(select(QTreeWidgetItem*, QTreeWidgetItem*)));        connect(view, SIGNAL(itemPressed(QTreeWidgetItem*, int)), SLOT(itemPressed(QTreeWidgetItem*, int)));        connect(view, SIGNAL(itemDoubleClicked(QTreeWidgetItem*, int)), SLOT(itemDoubleClicked(QTreeWidgetItem*))); -      connect(MusEGlobal::song, SIGNAL(songChanged(int)), SLOT(songChanged(int))); +      connect(MusEGlobal::song, SIGNAL(songChanged(int, int)), SLOT(songChanged(int)));        connect(this, SIGNAL(seekTo(int)), MusEGlobal::song, SLOT(seekTo(int)));        connect(tempoButton, SIGNAL(clicked()), SLOT(tempoButtonClicked()));        connect(timeSigButton, SIGNAL(clicked()), SLOT(timeSigButtonClicked())); diff --git a/muse2/muse/master/master.cpp b/muse2/muse/master/master.cpp index 88dcc8a7..9f692465 100644 --- a/muse2/muse/master/master.cpp +++ b/muse2/muse/master/master.cpp @@ -60,7 +60,7 @@ Master::Master(MidiEditor* e, QWidget* parent, int xmag, int ymag)        setFocusPolicy(Qt::StrongFocus);          setMouseTracking(true);        connect(MusEGlobal::song, SIGNAL(posChanged(int, unsigned, bool)), this, SLOT(setPos(int, unsigned, bool))); -      connect(MusEGlobal::song, SIGNAL(songChanged(int)), this, SLOT(songChanged(int))); +      connect(MusEGlobal::song, SIGNAL(songChanged(int, int)), this, SLOT(songChanged(int)));        }  //--------------------------------------------------------- diff --git a/muse2/muse/master/masteredit.cpp b/muse2/muse/master/masteredit.cpp index 53ebf953..68ba5168 100644 --- a/muse2/muse/master/masteredit.cpp +++ b/muse2/muse/master/masteredit.cpp @@ -246,7 +246,7 @@ MasterEdit::MasterEdit()        connect(tscale, SIGNAL(tempoChanged(int)), SLOT(setTempo(int)));        connect(canvas, SIGNAL(tempoChanged(int)), SLOT(setTempo(int))); -      connect(MusEGlobal::song, SIGNAL(songChanged(int)), SLOT(songChanged(int))); +      connect(MusEGlobal::song, SIGNAL(songChanged(int, int)), SLOT(songChanged(int)));        connect(MusEGlobal::song, SIGNAL(posChanged(int,unsigned,bool)), SLOT(posChanged(int,unsigned,bool)));        connect(canvas, SIGNAL(followEvent(int)), hscroll, SLOT(setOffset(int))); diff --git a/muse2/muse/midiedit/dcanvas.cpp b/muse2/muse/midiedit/dcanvas.cpp index 42eda0fd..e06fd40a 100644 --- a/muse2/muse/midiedit/dcanvas.cpp +++ b/muse2/muse/midiedit/dcanvas.cpp @@ -1670,7 +1670,7 @@ void DrumCanvas::rebuildOurDrumMap()        emit ourDrumMapChanged(false);      if (need_update) -      MusEGlobal::song->update(SC_DRUMMAP, true); // i know, this causes a recursion, which possibly +      MusEGlobal::song->update(SC_DRUMMAP, 0, true); // i know, this causes a recursion, which possibly                                                    // isn't the most elegant solution here. but it will                                                    // never be an infinite recursion    } diff --git a/muse2/muse/midiedit/drumedit.cpp b/muse2/muse/midiedit/drumedit.cpp index ae8ece29..196e7ffc 100644 --- a/muse2/muse/midiedit/drumedit.cpp +++ b/muse2/muse/midiedit/drumedit.cpp @@ -562,8 +562,8 @@ DrumEdit::DrumEdit(MusECore::PartList* pl, QWidget* parent, const char* name, un        connect(canvas, SIGNAL(verticalScroll(unsigned)), vscroll, SLOT(setPos(unsigned)));        connect(canvas,  SIGNAL(horizontalScroll(unsigned)),hscroll, SLOT(setPos(unsigned)));        connect(canvas,  SIGNAL(horizontalScrollNoLimit(unsigned)),hscroll, SLOT(setPosNoLimit(unsigned)));  -      connect(MusEGlobal::song, SIGNAL(songChanged(int)), SLOT(songChanged1(int))); -      connect(MusEGlobal::song, SIGNAL(songChanged(int)),      dlist, SLOT(songChanged(int))); +      connect(MusEGlobal::song, SIGNAL(songChanged(int, int)), SLOT(songChanged1(int))); +      connect(MusEGlobal::song, SIGNAL(songChanged(int, int)),      dlist, SLOT(songChanged(int)));        connect(vscroll, SIGNAL(scrollChanged(int)), canvas, SLOT(setYPos(int)));        connect(vscroll, SIGNAL(scaleChanged(int)),  canvas, SLOT(setYMag(int)));        connect(vscroll, SIGNAL(scaleChanged(int)),  dlist, SLOT(setYMag(int))); diff --git a/muse2/muse/midiedit/pianoroll.cpp b/muse2/muse/midiedit/pianoroll.cpp index d53867bd..7fce2e30 100644 --- a/muse2/muse/midiedit/pianoroll.cpp +++ b/muse2/muse/midiedit/pianoroll.cpp @@ -442,7 +442,7 @@ PianoRoll::PianoRoll(MusECore::PartList* pl, QWidget* parent, const char* name,        vscroll->setPos(KH * 30);        info->setEnabled(false); -      connect(MusEGlobal::song, SIGNAL(songChanged(int)), SLOT(songChanged1(int))); +      connect(MusEGlobal::song, SIGNAL(songChanged(int, int)), SLOT(songChanged1(int)));        setWindowTitle(canvas->getCaption()); diff --git a/muse2/muse/midiedit/scoreedit.cpp b/muse2/muse/midiedit/scoreedit.cpp index 9630fc7c..8a252d74 100644 --- a/muse2/muse/midiedit/scoreedit.cpp +++ b/muse2/muse/midiedit/scoreedit.cpp @@ -212,7 +212,7 @@ ScoreEdit::ScoreEdit(QWidget* parent, const char* name, unsigned initPos)  	connect(score_canvas, SIGNAL(canvas_height_changed(int)), SLOT(canvas_height_changed(int)));  	connect(score_canvas, SIGNAL(viewport_height_changed(int)), SLOT(viewport_height_changed(int))); -	connect(MusEGlobal::song, SIGNAL(songChanged(int)), score_canvas, SLOT(song_changed(int))); +	connect(MusEGlobal::song, SIGNAL(songChanged(int, int)), score_canvas, SLOT(song_changed(int)));  	connect(xscroll, SIGNAL(valueChanged(int)), time_bar, SLOT(set_xpos(int)));  	connect(score_canvas, SIGNAL(pos_add_changed()), time_bar, SLOT(pos_add_changed())); @@ -518,7 +518,7 @@ ScoreEdit::ScoreEdit(QWidget* parent, const char* name, unsigned initPos)  	clipboard_changed();  	selection_changed(); -	connect(MusEGlobal::song, SIGNAL(songChanged(int)), SLOT(song_changed(int)));	 +	connect(MusEGlobal::song, SIGNAL(songChanged(int, int)), SLOT(song_changed(int)));	  	connect(MusEGlobal::song, SIGNAL(newPartsCreated(const std::map< MusECore::Part*, std::set<MusECore::Part*> >&)), score_canvas, SLOT(add_new_parts(const std::map< MusECore::Part*, std::set<MusECore::Part*> >&)));	  	score_canvas->fully_recalculate(); diff --git a/muse2/muse/miditransform.cpp b/muse2/muse/miditransform.cpp index 9f068882..4692e5d9 100644 --- a/muse2/muse/miditransform.cpp +++ b/muse2/muse/miditransform.cpp @@ -421,7 +421,7 @@ MidiTransformerDialog::MidiTransformerDialog(QDialog* parent, Qt::WFlags fl)        //---------------------------------------------------        updatePresetList(); -      connect(MusEGlobal::song, SIGNAL(songChanged(int)), SLOT(songChanged(int))); +      connect(MusEGlobal::song, SIGNAL(songChanged(int, int)), SLOT(songChanged(int)));        }  //--------------------------------------------------------- diff --git a/muse2/muse/mixer/amixer.cpp b/muse2/muse/mixer/amixer.cpp index 1f8aa27f..1dd09c4f 100644 --- a/muse2/muse/mixer/amixer.cpp +++ b/muse2/muse/mixer/amixer.cpp @@ -238,7 +238,7 @@ AudioMixerApp::AudioMixerApp(QWidget* parent, MusEGlobal::MixerConfig* c)        connect(view, SIGNAL(layoutRequest()), SLOT(setSizing()));          ///connect(this, SIGNAL(layoutRequest()), SLOT(setSizing()));   -      connect(MusEGlobal::song, SIGNAL(songChanged(int)), SLOT(songChanged(int))); +      connect(MusEGlobal::song, SIGNAL(songChanged(int, int)), SLOT(songChanged(int)));        connect(MusEGlobal::muse, SIGNAL(configChanged()), SLOT(configChanged()));        //MusEGlobal::song->update();  // calls update mixer diff --git a/muse2/muse/mixer/rack.cpp b/muse2/muse/mixer/rack.cpp index 744d15b0..8b5bc716 100644 --- a/muse2/muse/mixer/rack.cpp +++ b/muse2/muse/mixer/rack.cpp @@ -174,7 +174,7 @@ EffectRack::EffectRack(QWidget* parent, MusECore::AudioTrack* t)        connect(this, SIGNAL(itemDoubleClicked(QListWidgetItem*)),           this, SLOT(doubleClicked(QListWidgetItem*))); -      connect(MusEGlobal::song, SIGNAL(songChanged(int)), SLOT(songChanged(int))); +      connect(MusEGlobal::song, SIGNAL(songChanged(int, int)), SLOT(songChanged(int)));        EffectRackDelegate* er_delegate = new EffectRackDelegate(this, track);        setItemDelegate(er_delegate); diff --git a/muse2/muse/mixer/routedialog.cpp b/muse2/muse/mixer/routedialog.cpp index a0b00278..2d73a6c0 100644 --- a/muse2/muse/mixer/routedialog.cpp +++ b/muse2/muse/mixer/routedialog.cpp @@ -47,7 +47,7 @@ RouteDialog::RouteDialog(QWidget* parent)        connect(newDstList, SIGNAL(itemSelectionChanged()), SLOT(dstSelectionChanged()));        connect(removeButton, SIGNAL(clicked()), SLOT(removeRoute()));        connect(connectButton, SIGNAL(clicked()), SLOT(addRoute())); -      connect(MusEGlobal::song, SIGNAL(songChanged(int)), SLOT(songChanged(int))); +      connect(MusEGlobal::song, SIGNAL(songChanged(int, int)), SLOT(songChanged(int)));        routingChanged();        } diff --git a/muse2/muse/mplugins/midiitransform.cpp b/muse2/muse/mplugins/midiitransform.cpp index 978e381e..232c6f99 100644 --- a/muse2/muse/mplugins/midiitransform.cpp +++ b/muse2/muse/mplugins/midiitransform.cpp @@ -918,7 +918,7 @@ MidiInputTransformDialog::MidiInputTransformDialog(QDialog* parent, Qt::WFlags f        updatePresetList();        presetList->setCurrentItem(presetList->item(0));        presetChanged(presetList->item(0)); -      connect(MusEGlobal::song, SIGNAL(songChanged(int)), SLOT(songChanged(int))); +      connect(MusEGlobal::song, SIGNAL(songChanged(int, int)), SLOT(songChanged(int)));        }  //--------------------------------------------------------- diff --git a/muse2/muse/song.cpp b/muse2/muse/song.cpp index 020d620c..b738c795 100644 --- a/muse2/muse/song.cpp +++ b/muse2/muse/song.cpp @@ -1370,17 +1370,22 @@ void Song::rewindStart()  //   update  //--------------------------------------------------------- -void Song::update(int flags, bool allowRecursion) +void Song::update(int flags, int flags2, bool allowRecursion)        { +      // HACK: If flags is -1, it is very highly likely the caller wanted flags2 = -1 as well. +      //       Highly improbable someone only wanted all 32 flags set and not flags2. +      if(flags == -1) +        flags2 = -1; +              static int level = 0;         // DEBUG        if (level && !allowRecursion) { -            printf("THIS SHOULD NEVER HAPPEN: unallowed recursion in Song::update(%08x), level %d!\n" +            printf("THIS SHOULD NEVER HAPPEN: unallowed recursion in Song::update(%08x %08x), level %d!\n"                     "                          the songChanged() signal is NOT emitted. this will\n" -                   "                          probably cause windows being not up-to-date.\n", flags, level); +                   "                          probably cause windows being not up-to-date.\n", flags, flags2, level);              return;              }        ++level; -      emit songChanged(flags); +      emit songChanged(flags, flags2);        --level;        } @@ -1774,11 +1779,11 @@ void Song::rescanAlsaPorts()  void Song::endMsgCmd()        { -      if (updateFlags) { +      if (updateFlags || updateFlags2) {              redoList->clearDelete();              MusEGlobal::undoAction->setEnabled(true);              MusEGlobal::redoAction->setEnabled(false); -            emit songChanged(updateFlags); +            emit songChanged(updateFlags, updateFlags2);              }        } @@ -1789,6 +1794,7 @@ void Song::endMsgCmd()  void Song::undo()        {        updateFlags = 0; +      updateFlags2 = 0;        if (doUndo1())              return;        MusEGlobal::audio->msgUndo(); @@ -1799,7 +1805,7 @@ void Song::undo()        if(updateFlags && (SC_TRACK_REMOVED | SC_TRACK_INSERTED))          MusEGlobal::audio->msgUpdateSoloStates(); -      emit songChanged(updateFlags); +      emit songChanged(updateFlags, updateFlags2);        }  //--------------------------------------------------------- @@ -1809,6 +1815,7 @@ void Song::undo()  void Song::redo()        {        updateFlags = 0; +      updateFlags2 = 0;        if (doRedo1())              return;        MusEGlobal::audio->msgRedo(); @@ -1819,7 +1826,7 @@ void Song::redo()        if(updateFlags && (SC_TRACK_REMOVED | SC_TRACK_INSERTED))          MusEGlobal::audio->msgUpdateSoloStates(); -      emit songChanged(updateFlags); +      emit songChanged(updateFlags, updateFlags2);        }  //--------------------------------------------------------- @@ -1851,15 +1858,20 @@ void Song::processMsg(AudioMsg* msg)                                }                          }                    updateFlags = SC_TRACK_MODIFIED; +                  updateFlags2 = 0;                    break;              case SEQM_ADD_EVENT:                    updateFlags = SC_EVENT_INSERTED; +                  updateFlags2 = 0;                    if (addEvent(msg->ev1, (MidiPart*)msg->p2)) {                          Event ev;                          addUndo(UndoOp(UndoOp::AddEvent, ev, msg->ev1, (Part*)msg->p2, msg->a, msg->b));                          }                    else +                  {                          updateFlags = 0; +                        updateFlags2 = 0; +                  }                    if(msg->a)                      addPortCtrlEvents(msg->ev1, (Part*)msg->p2, msg->b);                    break; @@ -1873,6 +1885,7 @@ void Song::processMsg(AudioMsg* msg)                    addUndo(UndoOp(UndoOp::DeleteEvent, e, event, (Part*)part, msg->a, msg->b));                    deleteEvent(event, part);                    updateFlags = SC_EVENT_REMOVED; +                  updateFlags2 = 0;                    }                    break;              case SEQM_CHANGE_EVENT: @@ -1883,6 +1896,7 @@ void Song::processMsg(AudioMsg* msg)                      addPortCtrlEvents(msg->ev2, (Part*)msg->p3, msg->b);                    addUndo(UndoOp(UndoOp::ModifyEvent, msg->ev2, msg->ev1, (Part*)msg->p3, msg->a, msg->b));                    updateFlags = SC_EVENT_MODIFIED; +                  updateFlags2 = 0;                    break;              // Moved here from MidiSeq::processMsg   p4.0.34 @@ -1909,12 +1923,14 @@ void Song::processMsg(AudioMsg* msg)                    addUndo(UndoOp(UndoOp::AddTempo, msg->a, msg->b));                    MusEGlobal::tempomap.addTempo(msg->a, msg->b);                    updateFlags = SC_TEMPO; +                  updateFlags2 = 0;                    break;              case SEQM_SET_TEMPO:                    addUndo(UndoOp(UndoOp::AddTempo, msg->a, msg->b));                    MusEGlobal::tempomap.setTempo(msg->a, msg->b);                    updateFlags = SC_TEMPO; +                  updateFlags2 = 0;                    break;              case SEQM_SET_GLOBAL_TEMPO: @@ -1925,30 +1941,35 @@ void Song::processMsg(AudioMsg* msg)                    addUndo(UndoOp(UndoOp::DeleteTempo, msg->a, msg->b));                    MusEGlobal::tempomap.delTempo(msg->a);                    updateFlags = SC_TEMPO; +                  updateFlags2 = 0;                    break;              case SEQM_ADD_SIG:                    addUndo(UndoOp(UndoOp::AddSig, msg->a, msg->b, msg->c));                    AL::sigmap.add(msg->a, AL::TimeSignature(msg->b, msg->c));                    updateFlags = SC_SIG; +                  updateFlags2 = 0;                    break;              case SEQM_REMOVE_SIG:                    addUndo(UndoOp(UndoOp::DeleteSig, msg->a, msg->b, msg->c));                    AL::sigmap.del(msg->a);                    updateFlags = SC_SIG; +                  updateFlags2 = 0;                    break;              case SEQM_ADD_KEY:                    addUndo(UndoOp(UndoOp::AddKey, msg->a, msg->b));                    MusEGlobal::keymap.addKey(msg->a, (key_enum) msg->b);                    updateFlags = SC_KEY; +                  updateFlags2 = 0;                    break;              case SEQM_REMOVE_KEY:                    addUndo(UndoOp(UndoOp::DeleteKey, msg->a, msg->b));                    MusEGlobal::keymap.delKey(msg->a);                    updateFlags = SC_KEY; +                  updateFlags2 = 0;                    break;              default: @@ -1966,6 +1987,7 @@ void Song::cmdAddPart(Part* part)        addPart(part);        addUndo(UndoOp(UndoOp::AddPart, part));        updateFlags = SC_PART_INSERTED; +      updateFlags2 = 0;        }  //--------------------------------------------------------- @@ -1979,6 +2001,7 @@ void Song::cmdRemovePart(Part* part)        part->events()->incARef(-1);        unchainClone(part);        updateFlags = SC_PART_REMOVED; +      updateFlags2 = 0;        }  //--------------------------------------------------------- @@ -2005,6 +2028,7 @@ void Song::cmdChangePart(Part* oldPart, Part* newPart, bool doCtrls, bool doClon          addPortCtrlEvents(newPart, doClones);        updateFlags = SC_PART_MODIFIED; +      updateFlags2 = 0;        }  //--------------------------------------------------------- @@ -2139,7 +2163,7 @@ void Song::clear(bool signal, bool clear_all)        if (signal) {              emit loopChanged(false);              recordChanged(false); -            emit songChanged(-1); +            emit songChanged(-1, -1);                }        } diff --git a/muse2/muse/song.h b/muse2/muse/song.h index 6570ad8d..44d5efa6 100644 --- a/muse2/muse/song.h +++ b/muse2/muse/song.h @@ -129,6 +129,7 @@ class Song : public QObject {        TempoFifo _tempoFifo; // External tempo changes, processed in heartbeat.        int updateFlags; +      int updateFlags2;  // Extra room for more flags        TrackList _tracks;      // tracklist as seen by arranger        MidiTrackList  _midis; @@ -345,7 +346,7 @@ class Song : public QObject {        //-----------------------------------------        void startUndo(); -      void endUndo(int); +      void endUndo(int /*flags*/, int /*flags2*/ = 0);        void undoOp(UndoOp::UndoType type, const char* changedFile, const char* changeData, int startframe, int endframe); @@ -371,7 +372,7 @@ class Song : public QObject {        //-----------------------------------------        void dumpMaster(); -      void addUpdateFlags(int f)  { updateFlags |= f; } +      void addUpdateFlags(int f, int f2 = 0)  { updateFlags |= f; updateFlags2 |= f2; }        //-----------------------------------------        //   Python bridge related @@ -383,9 +384,9 @@ class Song : public QObject {     public slots:        void seekTo(int tick); -      void update(int flags = -1, bool allowRecursion=false); // use allowRecursion with care! this -                                                              // could lock up muse if you aren't sure -                                                              // that your recursion will be finite! +      // use allowRecursion with care! this could lock up muse if you  +      //  aren't sure that your recursion will be finite! +      void update(int flags = -1, int flags2 = 0, bool allowRecursion=false);         void beat();        void undo(); @@ -419,7 +420,7 @@ class Song : public QObject {        void populateScriptMenu(QMenu* menuPlugins, QObject* receiver);     signals: -      void songChanged(int); +      void songChanged(int /*flags*/, int /*flags2*/ = 0);         void posChanged(int, unsigned, bool);        void loopChanged(bool);        void recordChanged(bool); diff --git a/muse2/muse/trackdrummapupdater.cpp b/muse2/muse/trackdrummapupdater.cpp index 35d5c056..5fce2587 100644 --- a/muse2/muse/trackdrummapupdater.cpp +++ b/muse2/muse/trackdrummapupdater.cpp @@ -31,7 +31,7 @@ using MusEGlobal::song;  TrackDrummapUpdater::TrackDrummapUpdater()  { -  connect(song,SIGNAL(songChanged(int)), this, SLOT(songChanged(int))); +  connect(song,SIGNAL(songChanged(int, int)), this, SLOT(songChanged(int)));  }  void TrackDrummapUpdater::songChanged(int flags) @@ -52,7 +52,7 @@ void TrackDrummapUpdater::songChanged(int flags)      {        // allow recursion. there will be no more recursion, because this        // is only executed when something other than SC_DRUMMAP happens -      song->update(SC_DRUMMAP, true);  +      song->update(SC_DRUMMAP, 0, true);       }    } diff --git a/muse2/muse/transport.cpp b/muse2/muse/transport.cpp index 5ed83800..f88bed1b 100644 --- a/muse2/muse/transport.cpp +++ b/muse2/muse/transport.cpp @@ -501,7 +501,7 @@ Transport::Transport(QWidget* parent, const char* name)        connect(tempo, SIGNAL(tempoChanged(int)), MusEGlobal::song, SLOT(setTempo(int)));        connect(tempo, SIGNAL(sigChanged(const AL::TimeSignature&)), SLOT(sigChange(const AL::TimeSignature&)));        connect(MusEGlobal::song, SIGNAL(playChanged(bool)), SLOT(setPlay(bool))); -      connect(MusEGlobal::song, SIGNAL(songChanged(int)), this, SLOT(songChanged(int))); +      connect(MusEGlobal::song, SIGNAL(songChanged(int, int)), this, SLOT(songChanged(int)));        connect(MusEGlobal::muse, SIGNAL(configChanged()), SLOT(configChanged())); diff --git a/muse2/muse/undo.cpp b/muse2/muse/undo.cpp index b81de33d..38582d58 100644 --- a/muse2/muse/undo.cpp +++ b/muse2/muse/undo.cpp @@ -217,6 +217,7 @@ void Song::startUndo()        undoList->push_back(Undo());        updateFlags = 0; +      updateFlags2 = 0;        undoMode = true;        } @@ -224,9 +225,10 @@ void Song::startUndo()  //   endUndo  //--------------------------------------------------------- -void Song::endUndo(int flags) +void Song::endUndo(int flags, int flags2)        {        updateFlags |= flags; +      updateFlags2 |= flags2;        endMsgCmd();        undoMode = false;        } @@ -396,7 +398,8 @@ void Song::doUndo2()                          break;                    case UndoOp::ModifySongLen:                          _len=i->b; -                        updateFlags = -1; // set all flags +                        updateFlags = -1; // set all flags     // TODO Refine this! Too many flags.  // REMOVE Tim. +                        updateFlags2 = -1; // set all flags                          break;                    case UndoOp::ModifyClip:                    case UndoOp::ModifyMarker: @@ -506,7 +509,8 @@ void Song::doRedo2()                          break;                    case UndoOp::ModifySongLen:                          _len=i->a; -                        updateFlags = -1; // set all flags +                        updateFlags = -1; // set all flags   // TODO Refine this! Too many flags.  // REMOVE Tim. +                        updateFlags2 = -1; // set all flags                             break;                    case UndoOp::ModifyClip:                    case UndoOp::ModifyMarker: diff --git a/muse2/muse/waveedit/waveedit.cpp b/muse2/muse/waveedit/waveedit.cpp index 1504958a..67c46ad2 100644 --- a/muse2/muse/waveedit/waveedit.cpp +++ b/muse2/muse/waveedit/waveedit.cpp @@ -267,7 +267,7 @@ WaveEdit::WaveEdit(MusECore::PartList* pl)        connect(view,  SIGNAL(horizontalScroll(unsigned)),hscroll, SLOT(setPos(unsigned)));        connect(hscroll, SIGNAL(scaleChanged(int)),  SLOT(updateHScrollRange())); -      connect(MusEGlobal::song, SIGNAL(songChanged(int)), SLOT(songChanged1(int))); +      connect(MusEGlobal::song, SIGNAL(songChanged(int, int)), SLOT(songChanged1(int)));        initShortcuts(); diff --git a/muse2/muse/waveedit/waveview.cpp b/muse2/muse/waveedit/waveview.cpp index 5b143e22..1af1d83a 100644 --- a/muse2/muse/waveedit/waveview.cpp +++ b/muse2/muse/waveedit/waveview.cpp @@ -79,7 +79,7 @@ WaveView::WaveView(MidiEditor* pr, QWidget* parent, int xscale, int yscale)        connect(MusEGlobal::song, SIGNAL(posChanged(int,unsigned,bool)), SLOT(setPos(int,unsigned,bool))); -      connect(MusEGlobal::song, SIGNAL(songChanged(int)), SLOT(songChanged(int))); +      connect(MusEGlobal::song, SIGNAL(songChanged(int, int)), SLOT(songChanged(int)));        songChanged(SC_SELECTION);        } diff --git a/muse2/muse/widgets/comment.cpp b/muse2/muse/widgets/comment.cpp index f070cac0..ea08c5b3 100644 --- a/muse2/muse/widgets/comment.cpp +++ b/muse2/muse/widgets/comment.cpp @@ -57,7 +57,7 @@ TrackComment::TrackComment(MusECore::Track* t, QWidget* parent)        setAttribute(Qt::WA_DeleteOnClose);        setWindowTitle(tr("MusE: Track Comment"));        track = t; -      connect(MusEGlobal::song, SIGNAL(songChanged(int)), SLOT(songChanged(int))); +      connect(MusEGlobal::song, SIGNAL(songChanged(int, int)), SLOT(songChanged(int)));        textentry->setText(track->comment());        textentry->moveCursor(QTextCursor::End);        connect(textentry, SIGNAL(textChanged()), SLOT(textChanged())); diff --git a/muse2/muse/widgets/midisyncimpl.cpp b/muse2/muse/widgets/midisyncimpl.cpp index e286ca74..44d3ca04 100644 --- a/muse2/muse/widgets/midisyncimpl.cpp +++ b/muse2/muse/widgets/midisyncimpl.cpp @@ -262,7 +262,7 @@ MidiSyncConfig::MidiSyncConfig(QWidget* parent)        connect(syncDelaySpinBox, SIGNAL(valueChanged(int)), SLOT(syncChanged()));        // Done in show(). -      //connect(MusEGlobal::song, SIGNAL(songChanged(int)), SLOT(songChanged(int))); +      //connect(MusEGlobal::song, SIGNAL(songChanged(int, int)), SLOT(songChanged(int)));        //connect(MusEGlobal::heartBeatTimer, SIGNAL(timeout()), SLOT(heartBeat()));  } @@ -578,7 +578,7 @@ void MidiSyncConfig::cancel()  void MidiSyncConfig::show()  {    songChanged(-1); -  connect(MusEGlobal::song, SIGNAL(songChanged(int)), SLOT(songChanged(int))); +  connect(MusEGlobal::song, SIGNAL(songChanged(int, int)), SLOT(songChanged(int)));    connect(MusEGlobal::heartBeatTimer, SIGNAL(timeout()), SLOT(heartBeat()));    QDialog::show();  } @@ -607,7 +607,7 @@ void MidiSyncConfig::closeEvent(QCloseEvent* e)        }        disconnect(MusEGlobal::heartBeatTimer, SIGNAL(timeout()), this, SLOT(heartBeat())); -      disconnect(MusEGlobal::song, SIGNAL(songChanged(int)), this, SLOT(songChanged(int))); +      disconnect(MusEGlobal::song, SIGNAL(songChanged(int, int)), this, SLOT(songChanged(int)));        e->accept();        } diff --git a/muse2/muse/widgets/mtrackinfo.cpp b/muse2/muse/widgets/mtrackinfo.cpp index 427ac41d..fc28f5d2 100644 --- a/muse2/muse/widgets/mtrackinfo.cpp +++ b/muse2/muse/widgets/mtrackinfo.cpp @@ -265,7 +265,7 @@ MidiTrackInfo::MidiTrackInfo(QWidget* parent, MusECore::Track* sel_track) : QWid    //oRButton->setVisible(false);    connect(oRButton, SIGNAL(pressed()), SLOT(outRoutesPressed())); -  connect(MusEGlobal::song, SIGNAL(songChanged(int)), SLOT(songChanged(int))); +  connect(MusEGlobal::song, SIGNAL(songChanged(int, int)), SLOT(songChanged(int)));    connect(MusEGlobal::muse, SIGNAL(configChanged()), SLOT(configChanged()));    connect(MusEGlobal::heartBeatTimer, SIGNAL(timeout()), SLOT(heartBeat())); diff --git a/muse2/muse/widgets/mtscale.cpp b/muse2/muse/widgets/mtscale.cpp index 76822bdd..f0e5ba8d 100644 --- a/muse2/muse/widgets/mtscale.cpp +++ b/muse2/muse/widgets/mtscale.cpp @@ -58,7 +58,7 @@ MTScale::MTScale(int* r, QWidget* parent, int xs, bool _mode)        button = Qt::NoButton;        setMouseTracking(true);        connect(MusEGlobal::song, SIGNAL(posChanged(int, unsigned, bool)), SLOT(setPos(int, unsigned, bool))); -      connect(MusEGlobal::song, SIGNAL(songChanged(int)), SLOT(songChanged(int))); +      connect(MusEGlobal::song, SIGNAL(songChanged(int, int)), SLOT(songChanged(int)));        connect(MusEGlobal::song, SIGNAL(markerChanged(int)), SLOT(redraw()));        setFixedHeight(28); diff --git a/muse2/muse/widgets/mtscale_flo.cpp b/muse2/muse/widgets/mtscale_flo.cpp index d0d10e8c..787d9030 100644 --- a/muse2/muse/widgets/mtscale_flo.cpp +++ b/muse2/muse/widgets/mtscale_flo.cpp @@ -51,7 +51,7 @@ MTScaleFlo::MTScaleFlo(ScoreCanvas* parent_editor, QWidget* parent_widget)        button = Qt::NoButton;        setMouseTracking(true);        connect(MusEGlobal::song, SIGNAL(posChanged(int, unsigned, bool)), SLOT(setPos(int, unsigned, bool))); -      connect(MusEGlobal::song, SIGNAL(songChanged(int)), SLOT(songChanged(int))); +      connect(MusEGlobal::song, SIGNAL(songChanged(int, int)), SLOT(songChanged(int)));        connect(MusEGlobal::song, SIGNAL(markerChanged(int)), SLOT(redraw()));        parent=parent_editor; diff --git a/muse2/muse/widgets/routepopup.cpp b/muse2/muse/widgets/routepopup.cpp index 72bcb05d..84b98d79 100644 --- a/muse2/muse/widgets/routepopup.cpp +++ b/muse2/muse/widgets/routepopup.cpp @@ -737,7 +737,7 @@ RoutePopupMenu::RoutePopupMenu(const QString& title, QWidget* parent, MusECore::  void RoutePopupMenu::init()  {    //printf("RoutePopupMenu::init this:%p\n", this);   -  connect(MusEGlobal::song, SIGNAL(songChanged(int)), SLOT(songChanged(int))); +  connect(MusEGlobal::song, SIGNAL(songChanged(int, int)), SLOT(songChanged(int)));  }  void RoutePopupMenu::songChanged(int val) diff --git a/muse2/muse/widgets/sig_tempo_toolbar.cpp b/muse2/muse/widgets/sig_tempo_toolbar.cpp index 4ccf2092..22296df2 100644 --- a/muse2/muse/widgets/sig_tempo_toolbar.cpp +++ b/muse2/muse/widgets/sig_tempo_toolbar.cpp @@ -46,7 +46,7 @@ namespace MusEGui  		layout->addWidget(label);  		layout->addWidget(tempo_edit); -		connect(MusEGlobal::song, SIGNAL(songChanged(int)), this, SLOT(song_changed(int))); +		connect(MusEGlobal::song, SIGNAL(songChanged(int, int)), this, SLOT(song_changed(int)));  		connect(MusEGlobal::song, SIGNAL(posChanged(int, unsigned, bool)), this, SLOT(pos_changed(int,unsigned,bool)));  		connect(tempo_edit, SIGNAL(tempoChanged(double)), MusEGlobal::song, SLOT(setTempo(double))); @@ -92,7 +92,7 @@ namespace MusEGui  		layout->addWidget(label);  		layout->addWidget(sig_edit); -		connect(MusEGlobal::song, SIGNAL(songChanged(int)), this, SLOT(song_changed(int))); +		connect(MusEGlobal::song, SIGNAL(songChanged(int, int)), this, SLOT(song_changed(int)));  		connect(MusEGlobal::song, SIGNAL(posChanged(int, unsigned, bool)), this, SLOT(pos_changed(int,unsigned,bool)));  		connect(sig_edit, SIGNAL(valueChanged(const AL::TimeSignature&)), MusEGlobal::song, SLOT(setSig(const AL::TimeSignature&))); diff --git a/muse2/muse/widgets/songpos_toolbar.cpp b/muse2/muse/widgets/songpos_toolbar.cpp index 1ffd0242..ef87f378 100644 --- a/muse2/muse/widgets/songpos_toolbar.cpp +++ b/muse2/muse/widgets/songpos_toolbar.cpp @@ -33,7 +33,7 @@ namespace MusEGui  	{  		_raster=0;  		setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); -		connect(MusEGlobal::song, SIGNAL(songChanged(int)), this, SLOT(song_changed(int))); +		connect(MusEGlobal::song, SIGNAL(songChanged(int, int)), this, SLOT(song_changed(int)));  		song_changed(0);  	} diff --git a/muse2/muse/widgets/wtscale.cpp b/muse2/muse/widgets/wtscale.cpp index 82ab0ca4..b41e7b83 100644 --- a/muse2/muse/widgets/wtscale.cpp +++ b/muse2/muse/widgets/wtscale.cpp @@ -54,7 +54,7 @@ WTScale::WTScale(int* r, QWidget* parent, int xs)        button = Qt::NoButton;        setMouseTracking(true);        connect(MusEGlobal::song, SIGNAL(posChanged(int, unsigned, bool)), SLOT(setPos(int, unsigned, bool))); -      connect(MusEGlobal::song, SIGNAL(songChanged(int)), SLOT(songChanged(int))); +      connect(MusEGlobal::song, SIGNAL(songChanged(int, int)), SLOT(songChanged(int)));        connect(MusEGlobal::song, SIGNAL(markerChanged(int)), SLOT(redraw()));        setFixedHeight(28);        setBg(QColor(0xe0, 0xe0, 0xe0)); @@ -254,7 +254,7 @@ void WTScale::pdraw(QPainter& p, const QRect& r)              int b = MusEGlobal::song->tick2samples(stick);              int tpix  = rmapx(a - b);              if (tpix < 64) { -                  // don´t show beats if measure is this small +                  // don�t show beats if measure is this small                    int n = 1;                    if (tpix < 32)                          n = 2; | 
