Checks the hook version to ensure compatibility with hook DLL. It's
unlikely it'll ever be necessary to increment the hook version, but this
is just a precautionary thing that allows a hook DLL to make sure it's
rejected by an older OBS version if needed. Again however, very
unlikely that the major version will ever be incremented.
The inject helper should be able to specify the full path rather than
assume the path of the hook DLL. This change allows us to modify the
hook's location. This needs to be done because the hook needs to be
relocated to ProgramData to prevent the possibility of multiple Vulkan
capture hooks.
Prevents multiple separate hook DLLs from being loaded in to a target at
once. This is done just in the off-chance that someone might add
another hook to the Vulkan layer registry.
Allows automatically outputting the function name as part of the hook
logging. This really doesn't need to be a manual process. Makes code a
bit cleaner when used.
'PlugIns' is normal for MacOS and whatever is generating qt.conf
(macdeployqt?) is using 'PlugIns', so this both builds and generates
an app that works on case insensitive filesystems but fails to load
on case sensitive filesystems.
I haven't tested building the installer, only modifying the
qt.conf in the installed copy of OBS.app.
Fixes https://github.com/obsproject/obs-studio/issues/2302
This reverts commit ff22c20019115adee471328f729588db0115f45f.
This caused a bug in FTL output, which started hitching after this
commit. Presumably due to opus; it's likely you're not supposed to do
this with all audio encoders.
This re-uses the game capture code for checking whether the original
window still exists or not. If it doesn't or the name changed, it'll
insert the value at the top of the list so it doesn't automatically
select another when the user opens properties.
Basically, this fixes an issue where opening properties could sometimes
cause it to instantly capture whatever window was at the top of the
list, which is undesirable.
Closesobsproject/obs-studio#2421
os_readdir might return an empty path if the OS filename doesn't fit
into the buffer after os_wcs_to_utf8. If this empty path is then passed
to os_get_path_extension it causes a crash.
When an audio source is removed, it signals its "destroy" callbacks.
One of the callbacks is OBSSourceLabel::SourceDestroyed. When its Qt
destroy signal is fired, it causes a call to LoadAudioSources to refresh
the source list. LoadAudioSources deletes the old layout, and so the
QWidget that the OBSSource is based on is freed while it's still in the
middle of running the signal callback, resulting in access to freed
memory.