Commit Graph

457 Commits

Author SHA1 Message Date
PatTheMav
87dd366448 libobs: Remove old macOS guards for NSProcessInfo
With the lowest deployment target being macOS 11.0, there is no need
to check for the availability of the selectors on the NSProcessInfo
class anymore.
2023-09-05 14:39:00 -04:00
PatTheMav
7f8a55d0bb libobs: Fix warnings about implicit integer downcasts in macOS code 2023-08-31 17:52:08 -04:00
Richard Stanway
fef92a8a43 libobs: Log if CreateProcessW fails on Windows
This is used by the test programs as well as ffmpeg-mux. If a process
fails to start it's quite bad so we would like to know why.
2023-08-26 16:44:53 -07:00
Ryan Foster
64139a6bbd CI: Update to clang-format 16
This commit also modifies UI, libobs, and plugins.
2023-08-10 16:07:25 -04:00
Ryan Foster
39b4df12c8 libobs/util: Define PRAGMA_WARN_DEPRECATION for MSVC
Define PRAGMA_WARN_DEPRECATION for MSVC to enable using that define for
cross-platform code, which allows us to write slightly less code when we
need to suppress this warning.
2023-08-09 13:47:05 -04:00
tytan652
852dcf6f15 libobs/util: Contain simde diagnostic pragmas 2023-08-06 01:31:02 +02:00
gxalpha
5ed0b8a0b8 libobs: Assume Qt 6, always warn about Qt 5 plugins 2023-07-19 11:56:54 -04:00
derrod
dcc07cfe4e clang-format: Set AllowAllConstructorInitializersOnNextLine to false 2023-07-15 16:14:55 -07:00
Norihiro Kamae
bc6cfab615 libobs/util: Remove outdated comment 2023-07-12 13:54:50 -04:00
Norihiro Kamae
a4ddaf528a libobs/util: Use defined array types on function parameter lists
To avoid passing `struct darray *` type, which cannot hold the type
information of the array element, use defined array types on the
function parameter lists.
2023-07-01 00:39:13 -07:00
Norihiro Kamae
03b679d68e libobs/util: Remove unnecessary parentheses
The previous commit added parentheses inside the macros so that the
parentheses is unnecessary when using the macros.
2023-07-01 00:39:13 -07:00
Norihiro Kamae
6425d53ff0 libobs/util: Fix operator precedence in dyamic array macros
Passing DARRAY with an operator such as dereference (`*`) sometimes
caused a compile error. To avoid the error, introduced parentheses
inside the macros.
2023-07-01 00:39:13 -07:00
PatTheMav
f8e00d6071 clang-format: Update formatting of all ObjC and ObjC++ files 2023-06-11 14:56:45 +02:00
Lain
85ca5a25be libobs/util: Add da_clear()
Adds a bit more of an explicit function for clearing dynamic arrays
2023-06-10 14:29:33 -07:00
Lain
9178ec6a8d libobs/util: Actually fix use-after-free in da_insert_new
d040de51bb was prematurely merged, this
should actually do the job as requested.
2023-06-10 12:31:41 -07:00
Norihiro Kamae
d040de51bb libobs/util: Fix use-after-free in darray_insert_new
After the array is allocated in `darray_ensure_capacity`, the pointer
`item` is invalid.
2023-06-10 11:54:27 -07:00
Florian Zwoch
dd6841143d libobs/util: Do not include SIMDe for MinGW targets
MinGW comes with it's own intrinsics macros as regular MSVC does.
On MinGW the inclusion of SIMDe would cause multiple definitions
of the same macro names.

Since sse-intrin.h leaks into the public header space this
will cause 3rd party plugins build with MinGW tool-chains emit
redeclaration warnings when including obs-module.h.
2023-06-09 04:48:54 -07:00
PatTheMav
e400d3f1bc libobs: Fix struct type usage before actual include
In its current form `struct dstr` is used in functions declarations
in the header file before the actual type is included (as `dstr.h` is
included after in `window-helpers.c`.

`clang-cl` is unable to compile this code because the function signature
 defined in the header will not match the implementation in the source 
 code due to the implicit forward-declaration of `struct dstr` before 
 the type is included in the actual header.
2023-05-20 16:37:19 -07:00
Lain
106c7aa61f Update copyrights/names 2023-05-20 01:31:18 -07:00
PatTheMav
9581ebe7fd libobs: Remove support for deprecated MACH task info struct 2023-05-13 16:56:11 -07:00
tt2468
681093616a libobs: Check for extension validity in os_generate_formatted_filename
In some cases (ffmpeg_mux), the extension and format values are a
direct passthrough from arbitrary data. Instead of always postfixing
a `.` at the end of a generated path if the extension is invalid,
don't postfix the `.` at all.

Before: `my_formatted_string.`
After: `my_formatted_string`
2023-04-22 16:29:30 -07:00
Ryan Foster
ba263ee4fa Revert "libobs: Improve util_mul_div64 outside MSVC"
This reverts commit c977417747.

Reverted due to a regression.
2023-04-16 20:29:47 -04:00
jpark37
c977417747 libobs: Improve util_mul_div64 outside MSVC
Use inline assembly for x86_64 speed/accuracy.

Sacrifice speed for accuracy on other processors.

Continue to use original implementation for ARM on Windows.
2023-04-15 17:08:04 -07:00
Norihiro Kamae
593fb3d12d libobs: Remove newly introduced PRAGMA_WARN_STRINGOP_OVERFLOW macro
The macro PRAGMA_WARN_STRINGOP_OVERFLOW was introduced to suppress a
warning -Wstringop-overflow caused by a macro da_push_back_new calling
darray_push_back_new.
Extract the function in the macro to avoid the warning.
This will also enables checking the type check of the returned pointer.
2023-04-15 16:03:10 -07:00
Simon Rost
a144a736f9 libobs: Remove dependency on Visual Studio 2019+
In util_uint64.h the intrinsic function _udiv128 is used.
The implementation is only available in Visual Studio 2019+
2023-03-30 19:51:08 -04:00
Jim
6eace37e06 Merge pull request #8229 from derrod/hashed-tables
Hashtable Adventures
2023-03-19 00:34:44 -07:00
Norihiro Kamae
4ea0b69974 libobs/util: Simplify implementation of os_get_path_extension
To avoid a false use-after-free warning from GCC's -Wuse-after-free
option, revise the implementation without using memory allocation.
2023-03-18 15:36:41 -07:00
derrod
183fa8c06c libobs: Use uthash for translation lookup 2023-03-18 10:47:49 +01:00
derrod
e720bb4c09 libobs: Use uthash for config 2023-03-18 10:47:49 +01:00
derrod
2986d36d9b libobs/util: Add uthash
Adds a header including uthash and redefining some of its options for
use withint libobs and plugins (potentially).
2023-03-18 10:47:49 +01:00
derrod
f72cc4498f libobs: Add os_generate_uuid() to platform utils 2023-03-12 01:11:38 +01:00
derrod
75693a6682 libobs: Write default values to config 2023-03-07 17:44:19 -05:00
pkv
a0a23e8a18 libobs: Fix leak with empty path in stats
If the recording path is left empty in Settings, a leak can occur in
window-basic-stats.cpp because a bmalloc is called for a size 1.
This fixes the leak by checking against the path in the
os_get_free_disk_space function.

Signed-off-by: pkv <pkv@obsproject.com>
2023-03-04 16:23:07 -08:00
Richard Stanway
5b193bca55 libobs/util: Fix typo in curl revocation support check 2023-03-02 19:36:31 +01:00
derrod
f9cce334d2 libobs: Add copy constructor for ComQIPtr 2023-03-01 20:39:53 +01:00
derrod
a9d3b9cbd1 libobs: Clarify memalign ToDo item 2023-03-01 11:18:47 -05:00
derrod
a5468cfee0 libobs: Make wcs<->utf8 conversion consistent
On Windows NULL characters would be included in the output if insize is
non-zero, but on *nix it would abort on the first NULL.
2023-02-28 18:36:18 -08:00
tytan652
678b0287e6 libobs: Calm stringop-overflow warning on GCC
Those warnings appeared with GCC 12 with -O2, those are potentially
created by regression from GCC.
2023-01-19 13:08:46 -05:00
tytan652
c648222332 libobs,libobs-opengl,obs-ffmpeg-mux: Calm deprecation warnings on *nix
Calm libobs-opengl deprecation warnings on macOS.

Calm FFmpeg deprecation warning with LIBAVFORMAT_VERSION_MAJOR < 59.
2023-01-19 13:08:46 -05:00
Norihiro Kamae
1805712f46 libobs/util: Fix text-lookup not always case-insensitive
Convert `lookup` to upper-case before creating the tree so that later
code does not need to consider the case-insensitivity.
When converting to upper-case, use `toupper` instead of adding 0x20 so
that the behavior is consistent with `astrcmpi_n`.
2023-01-14 15:09:25 -08:00
jp9000
78f3389d17 libobs: Add funcs to get windows video adapter LUIDs
Useful for providing adapter order to encoder test subprocesses
2022-12-19 11:59:44 -08:00
PatTheMav
c6cb1eb7d1 libobs: Replace invocations of sprintf with snprintf
Fixes deprecation warnings in Xcode 14/clang on macOS and reduces
chance of buffer overflows.
2022-11-11 19:51:27 +01:00
Tommy Vercetti
41efdc498c libobs/util: Add function to get Windows x64 emulation status 2022-11-09 03:03:26 -08:00
derrod
567505b2ed libobs: Fix reading Windows release name 2022-11-08 08:47:23 -05:00
derrod
1b6e1ce655 libobs: Add utility function to get total RAM 2022-11-08 05:38:37 -08:00
Kurt Kartaltepe
615728fa3b libobs/util: Reject plugins linking Qt5 library for Linux
Since obs-studio switched to Qt6, old plugins linking Qt5 should be
rejected. On Linux system, OBS and it's plugins link the system
libraries so that obs could be crashed by such plugins that links Qt5
when Qt5 functions are called.

Co-authored-by: Norihiro Kamae <norihiro@nagater.net>
2022-09-19 10:01:18 -03:00
PatTheMav
2bb0818fb4 libobs: Use system header notation for pthread.h include
Using a relative path for the pthread.h header by w32-pthreads breaks
compilation of plugins which include threading.h from libobs (as
w32-pthreads will exist at a different location relative to the
libobs header).

As w32-pthreads (and its include directory) is added to the libobs
target by CMake, the pthread.h header will be found even when using
system header notation.

Fixes https://github.com/obsproject/obs-studio/issues/7155
2022-08-24 05:40:37 -07:00
Richard Stanway
86963f65d2 libobs, win-capture: Don't export ms_get_obfuscated_func
Since this was included in things like the inject helper and game
capture DLLs, it added an additional export to those programs. Instead,
simply share the source files directly in the projects that need it.

Co-authored-by: jpark37 <jpark37@users.noreply.github.com>
2022-08-07 19:41:23 +02:00
jp9000
a0eae6f33c libobs/util: Add get_plugin_info (internal)
Allows the ability to get additional information about the plugin beyond
just whether it's an OBS plugin. For this case, whether it can load,
which is primarily used on Windows and mostly just determines whether it
has an incompatible Qt version.
2022-07-28 16:36:01 -07:00
jp9000
f6e349f033 libobs/util: Put module load detection in its own func
Puts the detection of obs_module_load in Windows DLLs for the "is this
an obs plugin" check into its own function
2022-07-28 14:53:58 -07:00