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-09 00:43:22 +0200
commit1580bdc52a257870c908f32d2abe6fed84d83c50 (patch)
treede57d49257fd4805b0674b2a041736e0e3b5cb58 /src/lib/writer.cc
parent940b4a72b6242c19570acc7a629ce271de565322 (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 5b24d7491..9a0f83a22 100644
--- a/src/lib/writer.cc
+++ b/src/lib/writer.cc
@@ -217,16 +217,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) {