]> git.sesse.net Git - nageru/blobdiff - h264encode.cpp
Fix fence behavior in H.264 encoder.
[nageru] / h264encode.cpp
index 9660a1afaf316bda61da4fda57608369f9faa139..784531663c3e6f7191f1847130b3291d34ee7203 100644 (file)
@@ -1949,7 +1949,12 @@ void H264EncoderImpl::encode_frame(H264EncoderImpl::PendingFrame frame, int enco
                                    int frame_type, int64_t pts, int64_t dts)
 {
        // Wait for the GPU to be done with the frame.
-       glClientWaitSync(frame.fence.get(), 0, 0);
+       GLenum sync_status;
+       do {
+               sync_status = glClientWaitSync(frame.fence.get(), 0, 1000000000);
+               check_error();
+       } while (sync_status == GL_TIMEOUT_EXPIRED);
+       assert(sync_status != GL_WAIT_FAILED);
 
        // Release back any input frames we needed to render this frame.
        frame.input_frames.clear();