summaryrefslogtreecommitdiff
path: root/src/lib/writer.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2019-10-09 00:43:22 +0200
committerCarl Hetherington <cth@carlh.net>2019-10-15 11:55:56 +0000
commit0e0696155ba56a2c7d4adde87b70bd2739d334f9 (patch)
treef3090125cd4ef57eb5e2a1f49c045ee7f64c920b /src/lib/writer.cc
parentb6f681b802642ba38625a4d574c0a9e4f630fa3d (diff)
Fix cross-thread access to info files. May help with #1618.
Diffstat (limited to 'src/lib/writer.cc')
-rw-r--r--src/lib/writer.cc14
1 files changed, 6 insertions, 8 deletions
diff --git a/src/lib/writer.cc b/src/lib/writer.cc
index 8666d90c8..ca412dd3f 100644
--- a/src/lib/writer.cc
+++ b/src/lib/writer.cc
@@ -216,16 +216,14 @@ Writer::fake_write (Frame frame, Eyes eyes)
size_t const reel = video_reel (frame);
Frame const reel_frame = frame - _reels[reel].start ();
- FILE* file = fopen_boost (_film->info_file(_reels[reel].period()), "rb");
- if (!file) {
- throw ReadFileError (_film->info_file(_reels[reel].period()));
- }
- dcp::FrameInfo info = _reels[reel].read_frame_info (file, reel_frame, eyes);
- fclose (file);
-
QueueItem qi;
qi.type = QueueItem::FAKE;
- qi.size = info.size;
+
+ {
+ shared_ptr<InfoFileHandle> info_file = _film->info_file_handle(_reels[reel].period(), true);
+ qi.size = _reels[reel].read_frame_info(info_file, reel_frame, eyes).size;
+ }
+
qi.reel = reel;
qi.frame = reel_frame;
if (_film->three_d() && eyes == EYES_BOTH) {