From b928e7e9f24c83d0ffffc1daae75736251a0e9cf Mon Sep 17 00:00:00 2001 From: Leland Lucius Date: Sat, 13 Feb 2021 01:58:09 -0600 Subject: [PATCH] Add dump of active AUP3 XML doc to support data --- src/CrashReport.cpp | 9 +++++++-- src/ProjectFileIO.cpp | 10 ++++++++++ src/ProjectFileIO.h | 3 +++ 3 files changed, 20 insertions(+), 2 deletions(-) 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();