Fix logging in MovieFFmpeg with multiple threads #1026
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fix logging in MovieFFmpeg with multiple threads
Linked issues
n/a
Summarize your change.
The mechanism used to prevent duplicate log messages in MovieFFmpeg.cpp did not work correctly in a multithreaded context.
This PR refactors the code to use
std::once_flagandstd::call_once, which is more robust.Describe the reason for the change.
This issue was discovered while testing another fix. When opening RV from the command line and passing a media file as a parameter, the same log messages were printed multiple times and became intertwined.
Example:
WARNING: FFmpeg detected pixel format AV_PIX_FMT_NONE for frames in WARNING: FFmpeg detected pixel format AV_PIX_FMT_NONE for frames in media.avi. Using fallback pixel format: WARNING: FFmpeg detected pixel format AV_PIX_FMT_NONE for frames inAfter the fix:
WARNING: FFmpeg detected pixel format AV_PIX_FMT_NONE for frames in media.avi. Using fallback pixel format: bgr24Describe what you have tested and on which operating system.
Rocky Linux 9.6
Add a list of changes, and note any that might need special attention during the review.
If possible, provide screenshots.