X-Git-Url: https://main.carlh.net/gitweb/?p=dcpomatic.git;a=blobdiff_plain;f=src%2Ftools%2Fdcpomatic_disk.cc;h=bf4d45e2040461b6770fb8c54139ee4021240da2;hp=3ceead860f2fd4c2f773900930310baa939c26aa;hb=747e81de1927c71b39dc916be05bb9296ca6b882;hpb=6d27b49a7a767a9c8b31dc0f799da940ddb7232f 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 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 _dcp_path; std::vector _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; };