X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Ftools%2Fdcpomatic_disk.cc;h=bf4d45e2040461b6770fb8c54139ee4021240da2;hb=747e81de1927c71b39dc916be05bb9296ca6b882;hp=ba92cf94e808cbb4133fc2eadabfddecf5c655fe;hpb=06d773174378a70289bee8d7abb62e67deaaddf8;p=dcpomatic.git diff --git a/src/tools/dcpomatic_disk.cc b/src/tools/dcpomatic_disk.cc index ba92cf94e..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.internal_name() + "\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(); @@ -218,7 +218,7 @@ private: _drive->Clear (); int re_select = wxNOT_FOUND; int j = 0; - _drives = get_drives (); + _drives = Drive::get (); BOOST_FOREACH (Drive i, _drives) { wxString const s = std_to_wx(i.description()); if (s == current) { @@ -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; };