diff --git a/src/CrashReport.cpp b/src/CrashReport.cpp index 87d596e88..0f409d798 100644 --- a/src/CrashReport.cpp +++ b/src/CrashReport.cpp @@ -25,6 +25,8 @@ #include "AudioIOBase.h" #include "FileNames.h" #include "Internat.h" +#include "Project.h" +#include "ProjectFileIO.h" #include "prefs/GUIPrefs.h" #include "widgets/ErrorDialog.h" @@ -64,9 +66,12 @@ void Generate(wxDebugReport::Context ctx) auto gAudioIO = AudioIOBase::Get(); rpt.AddText(wxT("audiodev.txt"), gAudioIO->GetDeviceInfo(), wxT("Audio Device Info")); - #ifdef EXPERIMENTAL_MIDI_OUT +#ifdef EXPERIMENTAL_MIDI_OUT rpt.AddText(wxT("mididev.txt"), gAudioIO->GetMidiDeviceInfo(), wxT("MIDI Device Info")); - #endif +#endif + auto project = GetActiveProject(); + auto &projectFileIO = ProjectFileIO::Get( *project ); + rpt.AddText(wxT("project.txt"), projectFileIO.GenerateDoc(), wxT("Active project doc")); } auto logger = AudacityLogger::Get(); diff --git a/src/ProjectFileIO.cpp b/src/ProjectFileIO.cpp index 6ffe36f9f..c04557f3f 100644 --- a/src/ProjectFileIO.cpp +++ b/src/ProjectFileIO.cpp @@ -288,6 +288,16 @@ DBConnection &ProjectFileIO::GetConnection() return *curConn; } +wxString ProjectFileIO::GenerateDoc() +{ + auto &trackList = TrackList::Get( mProject ); + + XMLStringWriter doc; + WriteXMLHeader(doc); + WriteXML(doc, false, trackList.empty() ? nullptr : &trackList); + return doc; +} + sqlite3 *ProjectFileIO::DB() { return GetConnection().DB(); diff --git a/src/ProjectFileIO.h b/src/ProjectFileIO.h index b69cb0b1c..d21355886 100644 --- a/src/ProjectFileIO.h +++ b/src/ProjectFileIO.h @@ -189,6 +189,9 @@ public: //! Return a reference to a connection, creating it as needed on demand; throw on failure DBConnection &GetConnection(); + //! Return a strings representation of the active project XML doc + wxString GenerateDoc(); + private: void OnCheckpointFailure();