diff options
| author | Carl Hetherington <cth@carlh.net> | 2020-04-09 20:53:22 +0200 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2020-04-13 00:27:39 +0200 |
| commit | 747e81de1927c71b39dc916be05bb9296ca6b882 (patch) | |
| tree | 4068bac39995c02aa43917f39fb3dff664f71efd /src/tools/dcpomatic_disk.cc | |
| parent | 6d27b49a7a767a9c8b31dc0f799da940ddb7232f (diff) | |
Support unmounting on macOS and Windows.v2.15.51
Diffstat (limited to 'src/tools/dcpomatic_disk.cc')
| -rw-r--r-- | src/tools/dcpomatic_disk.cc | 44 |
1 files changed, 42 insertions, 2 deletions
diff --git a/src/tools/dcpomatic_disk.cc b/src/tools/dcpomatic_disk.cc index 3ceead860..bf4d45e20 100644 --- a/src/tools/dcpomatic_disk.cc +++ b/src/tools/dcpomatic_disk.cc @@ -178,7 +178,7 @@ private: if (!_nanomsg.send(DISK_WRITER_UNMOUNT "\n", 2000)) { throw CommunicationFailedError (); } - if (!_nanomsg.send(drive.as_xml() + "\n", 2000)) { + if (!_nanomsg.send(drive.as_xml(), 2000)) { throw CommunicationFailedError (); } optional<string> reply = _nanomsg.receive (2000); @@ -194,7 +194,7 @@ private: } } - + DriveWipeWarningDialog* d = new DriveWipeWarningDialog (this, _drive->GetString(_drive->GetSelection())); int const r = d->ShowModal (); bool ok = r == wxID_OK && d->confirmed(); @@ -244,7 +244,9 @@ private: JobManagerView* _jobs; boost::optional<boost::filesystem::path> _dcp_path; std::vector<Drive> _drives; +#ifndef DCPOMATIC_OSX boost::process::child* _writer; +#endif Nanomsg _nanomsg; wxSizer* _sizer; }; @@ -330,6 +332,44 @@ public: ev.Skip (); } + void report_exception () + { + try { + throw; + } catch (FileError& e) { + error_dialog ( + 0, + wxString::Format ( + _("An exception occurred: %s (%s)\n\n") + REPORT_PROBLEM, + std_to_wx (e.what()), + std_to_wx (e.file().string().c_str ()) + ) + ); + } catch (exception& e) { + error_dialog ( + 0, + wxString::Format ( + _("An exception occurred: %s.\n\n") + REPORT_PROBLEM, + std_to_wx (e.what ()) + ) + ); + } catch (...) { + error_dialog (0, _("An unknown exception occurred.") + " " + REPORT_PROBLEM); + } + } + + bool OnExceptionInMainLoop () + { + report_exception (); + /* This will terminate the program */ + return false; + } + + void OnUnhandledException () + { + report_exception (); + } + DOMFrame* _frame; }; |
