51166265bf58b632051e3f0dd243e34311e3b28c
[ardour.git] / libs / ardour / test / profiling / lots_of_regions.cc
1 #include "test_util.h"
2 #include "ardour/ardour.h"
3 #include "ardour/midi_track.h"
4 #include "ardour/midi_region.h"
5 #include "ardour/session.h"
6 #include "ardour/playlist.h"
7 #include "pbd/stateful_diff_command.h"
8
9 using namespace std;
10 using namespace ARDOUR;
11 using namespace PBD;
12
13 int
14 main (int argc, char* argv[])
15 {
16         ARDOUR::init (false, true);
17         Session* session = load_session ("../libs/ardour/test/profiling/sessions/1region", "1region.ardour");
18
19         /* Find the track */
20         boost::shared_ptr<MidiTrack> track = boost::dynamic_pointer_cast<MidiTrack> (session->get_routes()->back());
21         assert (track);
22
23         /* And the playlist */
24         boost::shared_ptr<Playlist> playlist = track->playlist ();
25         assert (playlist);
26
27         /* And the region */
28         boost::shared_ptr<MidiRegion> region = boost::dynamic_pointer_cast<MidiRegion> (playlist->region_list().rlist().front());
29         assert (region);
30
31         /* Duplicate it a lot */
32         session->begin_reversible_command ("foo");
33         playlist->clear_changes ();
34         playlist->duplicate (region, region->last_frame(), 1000);
35         session->add_command (new StatefulDiffCommand (playlist));
36         session->commit_reversible_command ();
37
38         /* Undo that */
39         session->undo (1);
40
41         /* And do it again */
42         session->begin_reversible_command ("foo");
43         playlist->clear_changes ();
44         playlist->duplicate (region, region->last_frame(), 1000);
45         session->add_command (new StatefulDiffCommand (playlist));
46         session->commit_reversible_command ();
47 }