diff options
| author | Carl Hetherington <cth@carlh.net> | 2020-05-02 21:37:14 +0200 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2020-05-02 21:37:14 +0200 |
| commit | 3a715c7e0d5cbb39ffd6816899ef3050e8331882 (patch) | |
| tree | 0c3b7c11dae457d49126d4e713d1b4ba6ee4e301 /src | |
| parent | 88ad1ed243572b5310a4e866e87a61e8d8c8969e (diff) | |
Try to start _writer on-demand on macOS (#1739).
Diffstat (limited to 'src')
| -rw-r--r-- | src/tools/dcpomatic_disk.cc | 6 | ||||
| -rw-r--r-- | src/tools/dcpomatic_disk_writer.cc | 8 |
2 files changed, 13 insertions, 1 deletions
diff --git a/src/tools/dcpomatic_disk.cc b/src/tools/dcpomatic_disk.cc index 6f72bfed0..b2678ce42 100644 --- a/src/tools/dcpomatic_disk.cc +++ b/src/tools/dcpomatic_disk.cc @@ -42,6 +42,7 @@ #endif #ifdef DCPOMATIC_OSX #include <ApplicationServices/ApplicationServices.h> +#include <notify.h> #endif using std::string; @@ -132,7 +133,10 @@ public: _writer = new boost::process::child (disk_writer_path()); #endif - /* _writer is always running on macOS at the moment */ +#ifdef DCPOMATIC_OSX + LOG_DISK_NC("Sending notification to writer daemon"); + notify_post ("com.dcpomatic.disk.writer.start"); +#endif } ~DOMFrame () diff --git a/src/tools/dcpomatic_disk_writer.cc b/src/tools/dcpomatic_disk_writer.cc index 66f347943..d5599f25b 100644 --- a/src/tools/dcpomatic_disk_writer.cc +++ b/src/tools/dcpomatic_disk_writer.cc @@ -48,6 +48,7 @@ extern "C" { extern "C" { #include <lwext4/file_dev.h> } +#include <xpc/xpc.h> #endif #ifdef DCPOMATIC_LINUX @@ -520,6 +521,13 @@ main () LOG_DISK_NC("dcpomatic_disk_writer started"); #endif +#ifdef DCPOMATIC_OSX + /* I *think* this confumes the notifyd event that we used to start the process, so we only + * get started once per notification. + */ + xpc_set_event_stream_handler("com.apple.notifyd.matching", DISPATCH_TARGET_QUEUE_DEFAULT, ^(xpc_object_t event) {}); +#endif + try { nanomsg = new Nanomsg (false); } catch (runtime_error& e) { |
