0
0
mirror of https://github.com/obsproject/obs-studio.git synced 2024-09-19 20:32:15 +02:00
Commit Graph

10524 Commits

Author SHA1 Message Date
PatTheMav
fa50f64c3c
libobs: Trigger bindings injected by Qt directly
Instead of lettings the hotkey thread handle bindings triggered by Qt,
call the callback directly.

By this point, Qt has resolved the modifier state (so no need for the
hotkey thread to do the same), the pressed state is set as well,
the branch takes care of matching the pressed keys.

This also fixes the issue with the hotkey changes introduced by #3914,
which only inject key events when OBS is _not_ in focus (and as such
modifier states are never updated).
2022-08-06 16:36:37 +02:00
Theodore Dubois
2b60f04974
libobs: Rewrite macOS hotkeys implementation
Co-authored-by: Sebastian Beckmann <beckmann.sebastian@outlook.de>
2022-08-06 16:36:26 +02:00
Dossy Shiobara
ce78cd446e mac-capture: Improve window capture performance
Replaces the current implementation of Window Capture, which uses Core
Graphics to render a bitmap raster, with one that accesses the window's
CGImage bitmap directly, blits it, and hands that off as a frame to OBS
instead.

Co-Authored-By: Sebastian Beckmann <beckmann.sebastian@outlook.de>
2022-07-19 23:24:07 +02:00
Kurt Kartaltepe
d9865bdffb libobs-opengl: Use gl helpers in create_dmabuf_image
This replaces direct OpenGL calls to error handling helpers. Previously
this would cause errors to be misattributed to the next OpenGL functions
called.

Fixes DMA-BUF importing returning a texture on failure on KDE+NVIDIA.
2022-04-30 16:41:52 -07:00
jp9000
aab14ba29a libobs: Update version to 27.2.4 2022-03-27 16:29:23 -07:00
Monsteer
48f41c67dc UI: Add missing previousIcon in Rachni theme
The previous icon for the media icons set in the Rachni theme is missing
in the theme's .qss file.
2022-03-24 18:22:59 -07:00
derrod
c263266975 CI: Enable legacy CI for PRs to release branches 2022-03-24 18:22:59 -07:00
derrod
a1ba04536f CI: Fix CEF zip extraction path on Windows 2022-03-24 18:22:59 -07:00
Ryan Foster
ef53407c75 CI: Fix Qt XML Validator workflow
libxml2-utils updated recently but the manifest is out-of-date. Try to
fix it with the suggestion of running apt-get update first.
2022-03-24 18:22:59 -07:00
pkv
928597ec9d obs-libfdk: Set bitstream to ADTS for mpegts output
This sets the aac bitstream to ADTS for the mpegts output.
This fixes a bug with mpegts ouput where the avformat muxer issues
an error with fdk-aac encoder.

Signed-off-by: pkv <pkv@obsproject.com>
2022-03-24 18:22:59 -07:00
jpark37
b718aa41f4 win-waspai: Tighten version check for RTWQ
Getting reports that it isn't working for 1607 and below.

If they continue, we should probably just pull the RTWQ path.
2022-03-24 18:22:59 -07:00
eightball567
0d68aacfb6 mac-capture: Add vbcable to whitelist for loopback devices 2022-03-24 18:22:59 -07:00
cg2121
2056a41ca5 UI: Fix handling of remove signal with projectors
Since the remove signal is coming from another thread,
QMetaObject::invokeMethod has to be used, or corruption
could possibly occur.
2022-03-24 18:22:59 -07:00
jp9000
fb96d637e2 UI: Fix deferred source properties not updating 2022-03-24 18:22:59 -07:00
jp9000
1cfd1bb90a UI: Rename visual update callback variable
Having both a "callback" and "cb" doesn't make sense. One is
specifically for visual updates only, the other is for actual updates,
so use an appropriate name for both
2022-03-24 18:22:59 -07:00
cg2121
63f535c86e UI: Fix mixer hide toggle in studio mode
If the user would toggle hide in mixer in studio mode,
the source would show up in audio mixer, even if it
wasn't active.
2022-03-24 18:22:59 -07:00
Exeldro
27bb608130 libobs: Fix overflow subtracting unsigned numbers
When offset_size is greater than size, size would overflow
2022-03-24 18:22:59 -07:00
Kurt Kartaltepe
4845e88219 UI: Avoid calling obs_source_update multiple times
When we added undo/redo in 86eb7aeb a distinction between Updates and
Visual updates was made, presumably for filters which need special
handling of the update case. These functions were also added to regular
source properties, but didnt use any special code instead calling
obs_source_update an additional time after a short time.

Instead lets remove the 2nd delayed call and only call obs_source_update
once per settings change.
2022-03-24 18:22:59 -07:00
jp9000
09df945fb8 UI: Use get_new_source_name instead of strprintf
Remove a bit of duplicated code, and fix non-Windows compilation. This
is a bit of a workaround to not have to modify cmake, but might as well
reuse a function that already exists anyway rather than duplicate the
code.
2022-03-24 18:22:59 -07:00
jp9000
23bc7c7544 UI: Fix duplicated source names in audio settings
When you add an audio capture source and use the "use existing" feature
in the source selection dialog, and then recreate the same audio source
again in audio settings, it will result in two sources using identical
names, which although relatively harmless can cause issues when doing
things such as trying to find sources by their name.

Fixes obsproject/obs-studio#5621
Closes obsproject/obs-studio#5947
2022-03-24 18:22:59 -07:00
jpark37
4b6170f258 win-dshow: Fix hwdevice_ctx leak 2022-03-24 18:22:59 -07:00
derrod
20332b01fd CI: Move obspython.py to Resources 2022-03-23 15:53:01 +01:00
derrod
afa8527723 obs-scripting: Load obspython.py from Resources on macOS 2022-03-23 15:53:01 +01:00
jp9000
b65ee7e7fb virtualcam-module: Revert changes since 27.1.3 (for now)
This reverts commit 4b0767741a,
3f3f9ed7e6,
0e7c17bd6e, and
865eecb739.
2022-03-02 17:36:49 -08:00
jp9000
399636847d virtualcam-module: Prevent placeholder memory leak 2022-03-02 05:05:13 -08:00
jp9000
9f0650658d virtualcam-module: Only initialize placeholder once 2022-03-02 05:04:47 -08:00
jp9000
201e9df041 libobs: Update version to 27.2.3 2022-03-02 04:26:32 -08:00
jp9000
fc20e7a71b virtualcam-module: Fix incorrect correct res/fps
Apparently the testing that was done was not sufficient enough or did
not check all test cases, so resolution/fps does not get set properly on
the virtualcam.
2022-03-02 04:20:27 -08:00
jpark37
5bd791dea6 UI: Remove conflicting setlocale call
Qt already sets LC_ALL to "" for non-Windows. We set LC_NUMERIC to "C"
afterward for sanity, and we don't want that setting to get smashed.
2022-03-01 12:54:25 -08:00
jpark37
b5f85bc788 UI: Restore LC_NUMERIC to C locale on Mac/Linux
Recommended by QCoreApplication doc for Unix.

Fixes CUBE LUT load, and FFmpeg output args for foreign locales.
2022-03-01 12:54:25 -08:00
jp9000
34b55180ab libobs: Update version to 27.2.2 2022-03-01 11:40:46 -08:00
jp9000
c1ff655dfe virtualcam-module: Remove unnecessarily inlines 2022-03-01 23:29:04 +11:00
jp9000
91759c2a2e virtualcam-module: Stop thread on Stop call
This causes the thread to only start when the IMediaFilter::Run/Pause
calls have been made, and stop whenever either the IMediaFilter::Stop
call has been made, or on destruction, whichever comes first.

This potentially will work around a suspected race condition that
appears to be in the WebRTC library where the filter's library will be
released while the filter is in the process of being destroyed, which
can take longer than usual if the join takes too long. Basically, fixes
a reported crash (that doesn't appear to technically be our fault) when
the filter is used with browsers when the virtualcam is deactivating in
web browsers.
2022-03-01 23:28:59 +11:00
jp9000
d23cb52796 win-dshow: Ensure thread is joinable before joining
This may have been the issue behind the reported firefox crashes, but
strangely, the thread should always be joinable here because it's
explicitly always created in the constructor and joined in the
destructor.
2022-03-01 23:28:37 +11:00
jp9000
1acc6c69da obs-scripting: Make callback "removed" variable atomic
Makes the callback variable "removed" atomic, and on script unload,
first sets all callbacks to removed before actually unloading the script
out of a safety precaution. (See note at the bottom for further details)

This minimizes the possibility of a race condition where the script
callback could be called while those callbacks were being removed.

Big note for this change, this change should eventually be replaced with
a reference counting ownership method where script callbacks can hold a
reference and share ownership of the script if it's still alive while
the script callback is being called. That way the script callbacks can
safely execute. May require a fair amount of reworking of the script
object.
2022-03-01 04:06:33 -08:00
jpark37
fea9281a1f libobs/util: Use integer math for Windows timing
Cleaner and faster than double math.
2022-03-01 17:03:31 +11:00
jpark37
2e1a6c9c64 libobs: Clamp video timing for safety
os_gettime_ns and os_sleepto_ns may not match up exactly.
2022-03-01 17:03:27 +11:00
jp9000
2d7cda18e9 libobs/util: Fix rounding error with os_sleepto_ns()
os_sleepto_ns() can occasionally return false on times that the
processor may not have reached yet. The reason is because the
count_target, which converts time_target into a QPC counter, is subject
to a rounding error.

Using numbers I generated from an actual clock cycle on my own CPU, I
can show an example of this occurring: if the clock frequency value is
10000000.0, and you call os_sleepto_ns(42164590320600), it will convert
that number first to a double floating point of its QPC value:
421645903205.99994. Then, because it converts that to a LONGLONG
integer, it of course strips off the decimal point. If you convert
421645903205 *back* to a time value, the new value will be
42164590320500, which is lower than the original value by approximately
100 nanoseconds. While this may seem insignificant, it was apparently
enough to cause the os_sleepto_ns() call in video_sleep() to sometimes
return false despite the current time being lower than the target time,
which would cause it to incorrectly calculate how many frames were
duplicated by subtracting the frame time from the current system time,
divide that by the current frame interval, set the vframe_info.count
value to 0, and thus cause an infinite loop in the encode_gpu()
function because queue_frame now starts returning negative numbers in
perpetuity.

This change fixes some rare reports of users having their video lock up
and disconnect, forcing the user to have to forcibly shut down the
program.

Thanks to Twitch user SNLabat for having the patience to kindly provide
us with a dump file from the freeze, and to Matt for coordinating with
that user to obtain it from them.
2022-02-28 22:22:29 +11:00
Kevin Degeling
db3cee0868 UI: Additional product details
Based on the product description from the main website
2022-02-28 22:22:09 +11:00
obiwac
c09429aa8c linux-v4l2: scandir with alphasort on non-Linux
Sort video device entries with `alphasort` on non-Linux platforms,
as opposed to `versionsort` on Linux.
(`versionsort` is a GNU extension, unavailable on e.g. FreeBSD.)

UI: Fix call to `to_string` on FreeBSD
2022-02-28 22:21:46 +11:00
obiwac
cedd8b9d15 libobs/graphics: gs_query_dmabuf_* on FreeBSD too 2022-02-28 22:21:41 +11:00
gxalpha
46f9a5a8b9 UI: Refresh edit menu on item locked signal 2022-02-28 22:21:30 +11:00
Kurt Kartaltepe
eff0148dd7 linux-v4l2: Fix warnings in mjpeg
Previously the switch did not catch all cases issuing a quite large
warning. Also there was a const-ness warning for codecs on ffmpeg 5.0
that this addresses.
2022-02-28 22:21:14 +11:00
Richard Stanway
bad7edd051 win-wasapi: Fall back to old code if RTWQ fails
Fixes a crash if RTWQ is unavailable, e.g. if the mmcss service is not
running.
2022-02-28 22:20:45 +11:00
Ryan Foster
cc1395857a CI: Update workflow to copy SOVERSION symlinks
Commit 7a5bffc0a6 applied a fix to the
macOS build script. This applies the same fix to the GitHub Actions
workflow that is actually currently used on CI.
2022-02-22 17:17:25 -05:00
Julian Orth
68a8264197 libobs: Map wayland keymap with MAP_PRIVATE
Wayland clients are required to use MAP_PRIVATE starting with version 7
of the wl_seat protocol.

Signed-off-by: Julian Orth <ju.orth@gmail.com>
2022-02-21 14:10:36 -05:00
jp9000
acad9dbaf7 libobs: Update version to 27.2.1 2022-02-20 16:35:43 -08:00
Richard Stanway
bfcc066099 obs-outputs: Set a fixed size socket buffer on Windows 7
Auto tuning apparently doesn't work very well on this version and
af6844f5c2 caused throughput
regressions.
2022-02-21 11:21:20 +11:00
Matt Gajownik
2f48733f3c CI: Bump Windows CEF cache to fix reported version
While the previous cache had the correct changes, the version was
reported incorrectly. This will avoid confusion.
2022-02-21 10:32:40 +11:00
Matt Gajownik
c9dfad7340 CI: Bump Windows CEF cache for new OnAcceleratedPaint2
See https://github.com/obsproject/cef/commit/36fdac16a7 for more info.

This only bumps the cache on Windows as the changes are currently
Windows-specific.
2022-02-21 10:32:36 +11:00