diff options
| author | Carl Hetherington <cth@carlh.net> | 2019-10-09 00:43:22 +0200 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2019-10-15 11:55:56 +0000 |
| commit | 0e0696155ba56a2c7d4adde87b70bd2739d334f9 (patch) | |
| tree | f3090125cd4ef57eb5e2a1f49c045ee7f64c920b /src/lib/writer.cc | |
| parent | b6f681b802642ba38625a4d574c0a9e4f630fa3d (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.cc | 14 |
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) { |
