revert incorrect include path changes and removal of export macros for two libardour...
[ardour.git] / libs / pbd / undo.cc
index a06127926f74e6397c4d05210e515480b6030519..42f7d574ea4030f44f486215901dedba64c0af25 100644 (file)
@@ -18,7 +18,6 @@
     $Id$
 */
 
-#include <iostream>
 #include <string>
 #include <sstream>
 #include <time.h>
@@ -39,9 +38,9 @@ UndoTransaction::UndoTransaction ()
 
 UndoTransaction::UndoTransaction (const UndoTransaction& rhs)
        : Command(rhs._name)
-       , PBD::ScopedConnectionList ()
        , _clearing(false)
 {
+        _timestamp = rhs._timestamp;
        clear ();
        actions.insert(actions.end(),rhs.actions.begin(),rhs.actions.end());
 }
@@ -77,15 +76,15 @@ UndoTransaction::operator= (const UndoTransaction& rhs)
 }
 
 void
-UndoTransaction::add_command (Command *const action)
+UndoTransaction::add_command (Command *const cmd)
 {
        /* catch death of command (e.g. caused by death of object to
           which it refers. command_death() is a normal static function
           so there is no need to manage this connection.
         */
 
-       action->DropReferences.connect_same_thread (*this, boost::bind (&command_death, this, action));
-       actions.push_back (action);
+       cmd->DropReferences.connect_same_thread (*this, boost::bind (&command_death, this, cmd));
+       actions.push_back (cmd);
 }
 
 void
@@ -250,9 +249,6 @@ UndoHistory::undo (unsigned int n)
                return;
        }
 
-       struct timeval start, end, diff;
-       gettimeofday (&start, 0);
-
        {
                UndoRedoSignaller exception_safe_signaller (*this);
 
@@ -265,16 +261,8 @@ UndoHistory::undo (unsigned int n)
                        ut->undo ();
                        RedoList.push_back (ut);
                }
-               gettimeofday (&end, 0);
-               timersub (&end, &start, &diff);
-               cerr << "Undo-pre-signals took " << diff.tv_sec << '.' << diff.tv_usec << endl;
-
        }
 
-       gettimeofday (&end, 0);
-       timersub (&end, &start, &diff);
-       cerr << "Undo took " << diff.tv_sec << '.' << diff.tv_usec << endl;
-
        Changed (); /* EMIT SIGNAL */
 }
 
@@ -285,9 +273,6 @@ UndoHistory::redo (unsigned int n)
                return;
        }
 
-       struct timeval start, end, diff;
-       gettimeofday (&start, 0);
-
        {
                UndoRedoSignaller exception_safe_signaller (*this);
                
@@ -300,15 +285,8 @@ UndoHistory::redo (unsigned int n)
                        ut->redo ();
                        UndoList.push_back (ut);
                }
-               gettimeofday (&end, 0);
-               timersub (&end, &start, &diff);
-               cerr << "Redo-pre-signals took " << diff.tv_sec << '.' << diff.tv_usec << endl;
        }
 
-       gettimeofday (&end, 0);
-       timersub (&end, &start, &diff);
-       cerr << "Redo took " << diff.tv_sec << '.' << diff.tv_usec << endl;
-
        Changed (); /* EMIT SIGNAL */
 }
 
@@ -316,6 +294,9 @@ void
 UndoHistory::clear_redo ()
 {
        _clearing = true;
+        for (std::list<UndoTransaction*>::iterator i = RedoList.begin(); i != RedoList.end(); ++i) {
+                delete *i;
+        }
        RedoList.clear ();
        _clearing = false;
 
@@ -327,6 +308,9 @@ void
 UndoHistory::clear_undo ()
 {
        _clearing = true;
+        for (std::list<UndoTransaction*>::iterator i = UndoList.begin(); i != UndoList.end(); ++i) {
+                delete *i;
+        }
        UndoList.clear ();
        _clearing = false;