Merge master.
[dcpomatic.git] / src / lib / cross.cc
index 7436dbf26a9b4582edcfb8e1702638b2e91d3416..8785553cbe32ccfc3f35656739f6b22432eab374 100644 (file)
@@ -34,6 +34,7 @@
 #ifdef DCPOMATIC_OSX
 #include <sys/sysctl.h>
 #include <mach-o/dyld.h>
+#include <IOKit/pwr_mgt/IOPMLib.h>
 #endif
 #ifdef DCPOMATIC_POSIX
 #include <sys/types.h>
@@ -187,7 +188,7 @@ run_ffprobe (boost::filesystem::path content, boost::filesystem::path out, share
                return;
        }
 
-       FILE* o = fopen (out.string().c_str(), "w");
+       FILE* o = fopen_boost (out, "w");
        if (!o) {
                log->log ("ffprobe call failed (could not create output file)");
                return;
@@ -288,3 +289,38 @@ fopen_boost (boost::filesystem::path p, string t)
         return fopen (p.c_str(), t.c_str ());
 #endif
 }
+
+int
+dcpomatic_fseek (FILE* stream, int64_t offset, int whence)
+{
+#ifdef DCPOMATIC_WINDOWS
+       return _fseeki64 (stream, offset, whence);
+#else  
+       return fseek (stream, offset, whence);
+#endif 
+}
+
+void
+Waker::nudge ()
+{
+#ifdef DCPOMATIC_WINDOWS
+       SetThreadExecutionState (ES_CONTINUOUS);
+#endif 
+}
+
+Waker::Waker ()
+{
+#ifdef DCPOMATIC_OSX
+       /* We should use this */
+        // IOPMAssertionCreateWithName (kIOPMAssertionTypeNoIdleSleep, kIOPMAssertionLevelOn, CFSTR ("Encoding DCP"), &_assertion_id);
+       /* but it's not available on 10.5, so we use this */
+        IOPMAssertionCreate (kIOPMAssertionTypeNoIdleSleep, kIOPMAssertionLevelOn, &_assertion_id);
+#endif 
+}
+
+Waker::~Waker ()
+{
+#ifdef DCPOMATIC_OSX   
+       IOPMAssertionRelease (_assertion_id);
+#endif 
+}