Commit Graph

711 Commits (4303e31268f038affdf46caec14d348c56671d2e)

Author SHA1 Message Date
PatTheMav f1cf3ff141 UI: Fix Qt call on UI thread from graphics thread
Calling `devicePixelRatioF` from any thread but the main UI thread
triggers thread-safety warnings at runtime on macOS, because Qt uses
NSView calls to determine the value.

NSView calls are only allowed to be made from the main thread on macOS,
so instead the value is stored as a property of the OBSQTDisplay at
initialization, to be retrieved from the preview object later.

Static functions that do not have access to the preview object have the
pixel ratio passed in their call signature.
2022-07-31 19:36:34 +02:00
gxalpha 37526e9ac9 UI: Add macOS permissions window
Co-Authored-By: Matt Gajownik <git@wizardcm.com>
2022-07-31 18:14:41 +02:00
cg2121 e072976ccf UI: Add audio mixer toolbar
This adds a toolbar to the audio mixer dock, so it is
easier to access advanced audio dialog and unhide/vertical
actions.
2022-07-31 20:22:02 +10:00
Clayton Groeneveld 2d6a9c9cc1 UI: Show spacing helpers in preview
This shows distance between sides of preview and edges of sources.
This will allow users to more easily align sources.

Co-authored-by: Palakis <contact@slepin.fr>
2022-07-30 19:41:18 -07:00
cg2121 5bdd4fe658 UI: Fix studio mode label not updating
When studio mode is enabled and OBS is first started, the program
scene label would be empty.
2022-07-31 09:18:14 +10:00
gxalpha ea9350bcbf UI: Add hotkey to split file
Adds a frontend hotkey that splits the current recording file. Ideally,
this would only appear if file splitting is enabled like the replay
buffer hotkey, however that is an output hotkey which is hidden because
the output doesn't exist. This doesn't work here since the recording
output is obviously always available, but is unaware of whether file
splitting is enabled until the output is started.
2022-07-30 15:21:08 +02:00
jp9000 2b3c90d2cc UI: Show warning on plugin load failure
Allows the user to know what plugins failed to load. This is
particularly useful if we're going to block Qt5 plugins as well, or if
certain plugins can't load because they're incompatible with a newer
version.
2022-07-28 16:36:01 -07:00
VodBox 77694d76e8 UI: Add Accessibility menu to settings
This change introduces an accessibility menu to settings, along with
options for overriding the colors used by OBS in the mixer and in the
preview to be more color blind friendly than the options provided by the
current theme.
2022-07-27 21:37:30 -04:00
Clayton Groeneveld aae15fc497 UI: Fix bugs with missing files refactor
With https://github.com/obsproject/obs-studio/pull/5148, it was
brought up that the loading of the missing files was not thread
safe, as the missing files were being loaded late in the loading
process. This PR tries to fix that problem, while still simplifying
the original missing files code.
2022-07-27 12:42:32 +10:00
jp9000 64701a1cea UI: Only check major.minor for "what's new" 2022-07-26 07:49:09 -07:00
jp9000 a7ed93d88d UI: Use separate version string for what's new, save it
Uses a separate version entry for the "what's new" version check to
ensure that it properly resets whenever a "what's new" entry is ready to
be displayed.
2022-07-26 07:40:12 -07:00
jp9000 277e34fbb8 UI: Clean up OBSBasic::ReceivedIntroJson a bit
Just moves some defines above the function rather than have messy
defines all throughout the function.
2022-07-26 07:40:12 -07:00
jp9000 2df1ad5b39 UI: Ensure thread signal posts to UI thread
This is more of a safety precaution to ensure that the "what's new"
thread only executes its result function in the UI thread when emitted,
because the result function can read/write config files.
2022-07-26 07:40:11 -07:00
derrod 9c40e448b6 UI: Add File Integrity Check 2022-07-27 00:34:04 +10:00
Clayton Groeneveld 3dae4a35a1 UI: Relatively center multiple scene items
Before the scene items would be centered at the same spot
when centering them, now they are moved relatively to each
other.
2022-07-27 00:29:32 +10:00
Clayton Groeneveld b3c5524a48 UI: Add scene names to preview/program labels
This makes it easier for users to determine what
is the current preview or program scene.
2022-07-26 23:28:05 +10:00
jpark37 1610ac04ff UI: Add application audio capture to toolbar 2022-07-23 17:41:34 -07:00
Norihiro Kamae 5ea10fec82 UI: Remove unused functions for audio mixers
Functions `save_audio_source` and `load_audio_source` are defined but
never called from any code. Also not defined in any header file.
2022-07-23 16:49:21 -07:00
gxalpha 49e37db952 UI: Use pipe operator instead of plus for Qt keys 2022-07-22 09:37:17 -04:00
jp9000 0a218e06b7 UI: Add low latency audio buffering mode to UI
This feature is meant to reduce maximum audio buffering and turn off
dynamic buffering mode. This allows the lowest possible consistent
latency for audio buffering, which is useful for the decklink and NDI
outputs which cannot rely on audio timestamps for synchronization.

This can have a negative effect of making audio segments (partial or in
full) cut out. So audio glitching or audio loss can occur if this is
enabled.
2022-07-20 05:31:20 -07:00
Clayton Groeneveld 6eb5a922a7 UI: Remove duplicate missing files code
The same code was in different places, so call single function to
clean up code.
2022-07-18 19:12:31 +02:00
mvji c041deb433 UI: Check output path when starting replay buffer
Make a better error message for user,
in case recording path is invalid

Issue 6731
2022-07-16 16:50:32 -07:00
Clayton Groeneveld 873ee8e7ba UI: Fix reset ui warning showing on first start
If a plugin adds a dock and the program is run for the
first time, the reset ui warning would show up.
2022-07-10 12:26:42 +10:00
Vainock e053f9dd26 UI,mac-avcapture: Use consistent variables in locales 2022-07-02 14:02:40 +10:00
gxalpha cd900d7091 UI: Try closing remux before initiating shutdown
Makes OBS try to close the remux dialog before Clearing Scene data since
in case a remux might still be going on and the user does want to abort
closing OBS.
2022-06-25 21:44:58 -04:00
Clayton Groeneveld 3cfd30ae2a UI: Add ability to reset whole UI
Users for example disable all of the items in the view menu.
This allows them to easily reset them all.
2022-06-25 21:24:35 -04:00
tt2468 81003b2c64 UI: Change default reconnect values
- Base reconnect delay is now 2 seconds
- Max retry count is now 25
2022-06-25 17:06:00 -07:00
gxalpha 889ca0fc04 UI: Regroup and Reorder source right-click menus
Visually, the Scale Filtering, Blending Mode & Method, and Deinterlacing
menus are now grouped together, with "Hide in Mixer" being its own group
until a better place for it has been found.
Projector and Screenshot menus have been moved down.

As a related code cleanup, the creation of sourceProjector and
sourceWindow has been moved down and partially inlined.
2022-06-20 19:31:31 -03:00
gxalpha bb69883bd0 UI: Only show "Interact" menu for interactable sources
Most sources can't be interacted with, so always showing this menu only
takes up space and makes the menu stack bigger.
2022-06-20 19:31:31 -03:00
gxalpha 829e906ac2 UI: Remove "Resize output (source size)" menu 2022-06-20 19:31:31 -03:00
Norihiro Kamae 1c4bc6e735 UI: Fix multithread-unsafe GetCurrentScene
The function `OBSBasic::GetCurrentScene()` is also called from the
graphics thread and access to a QListWidget object, which is not
multithread-safe.
2022-06-06 10:20:00 -07:00
Kurt Kartaltepe f8d415afbe UI: Close display before native surfaces
This hooks the platform specific events in order to close the obs
display more accurately. Earlier attempts on hooking visiblity, but Qt
does not ensure that visibility is changed before the surface is
destroyed. So we ended up racing with the EGL driver and on some
drivers if you lose the race they hang.

Also only force display creation if the display is actually visible.
When a source type is not video/drawable (or is missing) this would
force the display to be created for the blank window and also hang.

Finally force closure of the preview displays during scene cleanup to
avoid similar ordering issues in Qt. Qt has even less order guarentees
during close and we are sure that displays are no longer needed at this
point in the UI.
2022-05-28 16:54:37 -07:00
gxalpha 41521b2816 UI: Move taskbar overlay functions into platform.hpp
Refactors the existing implementation for Windows into
platform-windows.cpp, allowing for other OS implementations in the
future.
2022-05-20 20:16:56 +10:00
Ryan Foster dbdf82da80 UI: Fix memory leak with Manage Broadcast dialog
When OBS has been connected to a YouTube account, the Manage Broadcast
dialog becomes available. Opening and closing this dialog leaks about
2-3 MB of memory each time. This happens because the dialog is never
deleted, and a new object is created every time the dialog opens.

If we set Qt::WA_DeleteOnClose on the dialog, then the dialog->exec()
call would call delete this. However, if the dialog->Valid() call
returned false (this should currently be impossible), then exec is never
called, so it would not clean up.

To fix this, make the dialog stack-allocated instead of using new and
delete.

Detected by clang-analyzer.
2022-05-16 22:46:50 +02:00
gxalpha 252918a7c4 UI: Put program on top in vertical studio mode
Co-Authored-By: Elias Thompson <email@eliasthompson.com>
2022-05-14 16:15:04 -07:00
Norihiro Kamae 34e570c5bc Fix indent on multiline comments 2022-04-30 16:06:23 -07:00
mvji 80600c1c26 UI: Fix compiler warning when WIN32 is not defined
Fix unused parameter warning.
2022-04-23 16:12:45 -07:00
gxalpha d6c6e8df87 UI: Add shortcut for larger movement steps in preview
Adds the ability to move a selected item 10 pixels in the preview when
holding shift while using the arrow keys, instead of going just 1 pixel
per step.
2022-04-16 16:47:44 -07:00
jpark37 338608bd67 libobs,UI: Support HLG nominal peak level
HLG output uses MovieLabs-recommended procedure.

- If peak luminance is greater than 1000, use maxRGB EETF to 1000.
- Otherwise, don't tonemap.
- Then use normal HLG conversion procedure with gamma 1.2 (1000 nits).
2022-04-14 09:36:44 -07:00
cg2121 02aa833950 UI: Fix show/hide toggle with minimize to taskbar
If the user would minimize to tray instead of taskbar, the
window would flash when clicking show in the tray menu, and
the preview would be disabled. This would only happen on Linux.
2022-04-13 16:14:41 +10:00
Norihiro Kamae ebc291956c UI: Set automatic file splitting time in minutes
The original PR was made with time specified in seconds because it was
useful to debug the behavior. For production, assuming most users want
to specify 10 minutes or more, the time should be specified in minutes.
2022-04-11 06:58:39 -07:00
Jim b745a100a3
Merge pull request #5371 from norihiro/automatic-file-splitting
Automatic file splitting
2022-04-10 16:49:37 -07:00
jpark37 59dbc3eb81 libobs: Rename Rec. 2020 to Rec. 2100
Rec. 2020 is really an SDR spec, but I think HDR10 made it okay to slap
PQ on it, call it an HDR spec. Rec. 2100 came along after and formally
allowed the use of PQ/HLG, so we should use 2100 instead.
2022-04-10 00:13:52 -07:00
jpark37 9409ce1ea7 UI: Add Rec. 2020 space and I010/P010 formats
Also localize color spaces with improved naming. Should be compatible
with existing user profiles.
2022-04-07 02:38:33 -07:00
gxalpha e33b7d2dab UI: Disable wheel scrolling on QComboBoxes
Adds a new ProxyStyle, OBSIgnoreWheelProxyStyle, and applies it to the
entire program. This style sets a StyleHint to disable mouse wheel
scrolling on QComboBoxes.
The existing OBSProxyStyle, which is used only for the context bar, has
been renamed accordingly.
2022-04-02 16:04:51 -07:00
jpark37 f2b049c0e7 UI: Add support for nonlinear SRGB blending 2022-04-02 16:02:41 -07:00
Richard Stanway a8ecf3c8f2
UI: Fix display affinity logic when re-applying
The old behavior toggled display affinity every time the window was
updated instead of applying it consistently.
2022-03-31 17:23:53 +02:00
jp9000 e236a16715 libobs: Refactor hide/show transition functions
Having two separate functions for each hide/show transition action is
silly and makes code awful.
2022-03-24 22:32:41 -07:00
jpark37 cd22df09c9 libobs, UI: Add SDR white nits option 2022-03-23 22:35:26 -07:00
PatTheMav 1f0f2be15e
UI: Update CMakeLists.txt for main OBS app 2022-03-16 23:11:58 +01:00