]> git.sesse.net Git - nageru/commitdiff
Fix a thread race in QuickSyncEncoder. Found by GCC TSan.
authorSteinar H. Gunderson <sgunderson@bigfoot.com>
Fri, 23 Mar 2018 15:33:11 +0000 (16:33 +0100)
committerSteinar H. Gunderson <sgunderson@bigfoot.com>
Fri, 23 Mar 2018 15:33:11 +0000 (16:33 +0100)
quicksync_encoder.cpp

index 67e9668faaecbac253e6d37877664651ba47a927..8761d56ac88903f39b481030171817acb81b382a 100644 (file)
@@ -1875,8 +1875,11 @@ void QuickSyncEncoderImpl::encode_thread_func()
 
                        if (frame_type == FRAME_IDR) {
                                // Release any reference frames from the previous GOP.
-                               for (const ReferenceFrame &frame : reference_frames) {
-                                       release_gl_surface(frame.display_number);
+                               {
+                                       unique_lock<mutex> lock(storage_task_queue_mutex);
+                                       for (const ReferenceFrame &frame : reference_frames) {
+                                               release_gl_surface(frame.display_number);
+                                       }
                                }
                                reference_frames.clear();
                                current_ref_frame_num = 0;