Commit Graph

3295 Commits

Author SHA1 Message Date
derrod
0a8e00c478 UI: Add and migrate to GPU scaling options 2024-01-20 19:28:52 -06:00
derrod
a3ac6ee473 frontend-tools: Replace circlebuf with deque 2024-01-16 16:45:09 +01:00
derrod
32e201ebb9 UI: Save invalid transition source data in safe mode 2024-01-13 17:59:42 -06:00
derrod
6fc3bb4eb4 UI: Switch to bigger units for high bitrate/large recordings 2024-01-13 17:57:26 -06:00
pkv
f186268507 UI: Enable audio multi-track w/ mpegts streaming
This enables audio multi-track support in UI for mpegts streams (srt,
rist ...).
The UI changes were coded though to allow re-use by other protocols.

Signed-off-by: pkv <pkv@obsproject.com>
2024-01-06 18:42:54 -06:00
gxalpha
089fa8e8d3 UI: Use normal source width for screenshots
Fixes an issue where filters that resize a source, like "Crop/Pad" or
"Scaling/Aspect Ratio", change the texture but the new source size gets
ignored, effectively either cropping the screenshot or giving it black
borders.
2024-01-06 18:32:25 -06:00
tytan652
519c19aa4a UI: Fix unused-variable
Some variables were not guarded for being unused when built with FFmpeg 6.1
2024-01-06 18:24:58 -06:00
derrod
46c00a95cd UI: Save last used output resolution to scene collection 2024-01-06 17:06:00 -06:00
PatTheMav
7dbde70de1 cmake: Remove support for generators besides Xcode on macOS 2023-12-19 17:59:44 -05:00
PatTheMav
dc41069619 UI: Update CMake target source lists with alphabetic sorting
Also updates CMake formatting with manual format choices.
2023-12-19 17:59:44 -05:00
PatTheMav
2809284795 UI: Add UI support interface library with custom Qt elements
Allows the customized UI elements used by OBS Studio to more cleanly
be integrated into consumers of the same elements, mainly frontend
plugins in the main source tree.
2023-12-19 17:59:44 -05:00
PatTheMav
8135085a23 cmake: Replace custom Qt discovery function with CMake default
find_qt was necessary during the transitional period between Qt5 and
Qt6. With Qt6 being the only supported Qt version (for open source) for
the time being, code complexity can be reduced for easier maintenance.
2023-12-19 17:59:44 -05:00
cg2121
7931f2acb8 UI: Remove lock & vis checkbox classes
This removes the lock & visibility checkbox classes in favor of using
dynamic properties.
2023-12-18 21:22:39 -06:00
Vainock
54d847d19b UI: Remove double unit indication in replay buffer maximum string
"MB" is already set via the suffix.
2023-12-18 18:01:38 -05:00
derrod
09024e9c74 UI: Add Crop to Bounds checkbox to transform dialog 2023-12-16 18:00:11 -06:00
cg2121
59766ee4ff UI: Remove SignalBlocker
Since QSignalBlocker does the same thing, remove SignalBlocker.
2023-12-16 17:10:57 -06:00
BGM99
04788d30e2 UI: Fix resize cursor to respect item transformation 2023-12-16 18:19:20 +01:00
bin
b9ce24aa56 UI: Fix QListWidget background color in property groups 2023-12-14 23:24:23 +01:00
cg2121
ef99553a7e UI: Disable edit transform if item is locked
The transform window was still accessible if the scene item
was locked.
2023-12-10 01:27:28 +01:00
cg2121
cd01120740 UI: Don't paste transform on locked item
This disables pasting transforms on an item that is locked.
2023-12-09 18:09:33 -06:00
PatTheMav
e27b013d47 aja: Disable deprecated declarations warnings on macOS and Linux
Deprecation warnings have been investigated and have been deemed
non-malicious for the time being.
2023-12-06 17:27:12 +01:00
Translation Updater
f674d17168 Update translations from Crowdin 2023-12-05 22:04:31 +00:00
Penwywern
3cc7dc0e7c UI: Fall back in case of invalid scene name on load 2023-12-04 05:06:42 -06:00
Nikola Jovic
21a906d7d9 UI: Fix checkbox misalignment on macOS in properties view 2023-12-02 21:18:36 +01:00
gxalpha
e9ecb6c565 UI: Make replay buffer settings always visible in Simple Mode
Instead of a checkbox in the recording group that reveals the replay
buffer group when pressed, the replay buffer group now has its own
toggle that enables or disables the replay buffer.
2023-11-27 15:29:57 -06:00
gxalpha
7d55229bef UI: Add to lossless warning that replay buffer is unavailable 2023-11-27 15:29:57 -06:00
Matt
93f5b45be8 frontend-tools: Fix multiple signal-slot connections on Output Timer
When running an Output Timer multiple times, multiple signal-slot
connections would be made with the corresponding output stop event
functions. This would cause later Output Timers to terminate
unexpectedly early, due to the stop functions having been called
repeatedly on previous Output Timer runs while outputs were stopping.

There may still be an underlying bug with calling stop on outputs
repeatedly, but this change at least ensures that Output Timers only
call their stop functions once.
2023-11-20 17:02:14 -05:00
derrod
cfd8d4c993 updater: Clear shader cache after updating 2023-11-20 04:32:56 -06:00
derrod
ba25bc65c9 UI: Disable safe mode when --multi is used 2023-11-17 15:31:36 -05:00
田七不甜
5f512d5f25 UI: Fix UseStreamKeyAdv not display stream key and not hide button 2023-11-08 00:13:20 -06:00
Ryan Foster
c0ee1e718d UI: Fix typo in Virtual Camera logging functions
cvam -> vcam
2023-11-07 19:09:25 -05:00
Penwywern
a49b35c3de UI: Log Virtual Camera output type 2023-11-07 00:39:01 -06:00
Zulleyy3 Zulleyy3
c76760bc1c UI: Fix transform of sources in groups
Group resize is not deferred until adjustments are completed by a
mouseReleaseEvent in certain cases, resulting in unexpected movement of
sources that are part of a group as they are resized or stretched
beyond group bounds.

The bug can be described/reproduced as follow:

1. The user selects within a group in the sources dock
2. The user moves their mouse over the selected source such that the
   cursor would change.
   - This results in a cursor update and a call to GetStrechHandle()
   - as the source is part of a group, stretchGroup will be set to the
    group of the source

3. The user clicks on the canvas without touching a stretch/rotation
   handle
   - A mouseReleaseEvent is fired
   - obs_sceneitem_defer_group_resize_end is called on the group as
     stretchGroup is still defined from earlier
   - the defer_group_resize member of the group will become negative
   - The deferal check in resize_group (obs-scene.c) will always pass
     now
4. When scaling or rotating the source close to the group bounds, the
   group bounds will now dynamically update causing the source in to fly
   off the canvas.

Resolves: https://github.com/obsproject/obs-studio/issues/9754
2023-11-04 18:06:44 -05:00
gxalpha
60c77aa915 UI: Replace SourceTreeSubItemCheckBox class with Qt property 2023-10-28 10:22:38 -03:00
Penwywern
1a88cdb00d UI: Fix AMF AV1 simple recording presets 2023-10-27 14:10:20 -04:00
Ryan Foster
b4c36c0530 UI: Remove iCCP data from PNGs
Loading these PNGs in libpng 1.6+ results in the warning:
libpng warning: iCCP: known incorrect sRGB profile

This is probably caused by saving an ICC Profile with the program used
to make the image, and that ICC Profile is considered invalid by libpng.

Removing the iCCP data resolves this.
2023-10-26 16:59:06 -04:00
jpark37
6aaf0358ca decklink-output-ui: Decouple DeckLink output state
Didn't realize OBS could output both program and preview views at the
same time with multiple devices.

Also remove render callbacks earlier on stop to avoid use-after-free.
2023-10-25 01:11:32 -05:00
Rodney
5ebd3ee6d3 UI: Add missing NULL check for skipUpdateVer 2023-10-17 11:17:07 -04:00
Norihiro Kamae
20b8deba2d frontend-tools: Remove unused startAtLaunch variable 2023-10-14 18:35:38 -05:00
gxalpha
44f3f79296 UI: Convert QTStr macro to inline function
Using inline functions improves IDE integration and avoids potential
pitfalls of that using macros has.
2023-10-12 11:45:45 -04:00
Paul Hindt
d8f533538f UI: Fix compile error due to use of strlen in constexpr 2023-10-11 01:31:02 +02:00
derrod
625277ace3 UI: Use theme path prefix in status bar 2023-10-10 17:19:02 -03:00
derrod
a2db8876fc UI: Use theme path prefix in source tree 2023-10-10 17:19:02 -03:00
derrod
1906a14b90 UI: Update themes to use 'theme:' prefix for non-qrc files 2023-10-10 17:19:02 -03:00
derrod
ae148b60a8 UI: Add 'theme:' prefix to Qt search paths 2023-10-10 17:19:02 -03:00
Translation Updater
0d450a34a0 Update translations from Crowdin 2023-10-10 13:34:41 +00:00
gxalpha
baa78b36ef UI: Enable "Paste Filters" after copying from scenes or mixer
Fixes an issue where if no filters had previously been copied and the
user copies a filter from either the scene tree or the audio mixer, the
"Paste Filters" action would not be available until the Edit menu
reloads (e.g., by selecting another source in the source tree).
2023-10-08 10:59:00 -06:00
PatTheMav
2226292adc UI: Initialize YouTubeAppDock synchronously to fix Qt runloop issues
The YouTubeAppDock uses its own cookie manager and thus requires a
running CEF instance before creating the dock. Unfortunately creation
of the dock itself and launching the associated browser instance are
coupled in the code.

The UI code to restore browser dock states runs _after_ this code and
unfortunately this is also the only way to ensure that if the user
has closed the YouTubeAppDock before that it stays closed on app
launch (the dock needs to exist in the Widget hierarchy for its state
to be restored).

Alas, outside of Windows, InitBrowserPanelSafeBlock uses a separate
local QEventLoop to block the main thread while still allowing UI
events to be processed to launch a CEF instance.

By this point in the code execution, the primary event loop has not
been started yet, so the event loop launched by
InitBrowserPanelSafeBlock temporarily becomes the main application
event loop, which initializes all Widgets, finds no active window
state for the widgets, and thus treats them as "visible", calls the
showEvent method on every browser dock, which thus loads the associated
websites.

The dock state is restored after all that, which leads to each browser
dock being "shown" (even though the main QApplication hasn't even
started yet), the associated sites are running (including audio and
video output) but then hidden again, which leads to surprising audio
output seemingly coming from "nowhere".

All browser docks call the browser initialization methods synchronously,
which has the benefit of not spinning up a premature event loop, and does
not trigger Qt view state changes before all Widgets have been
initialized. Having the YouTubeAppDock behave the same does thus not
negatively impact UX.
2023-10-08 02:00:38 +02:00
derrod
e4587ae9bd UI: Cleanup remaining uses of old version macros 2023-10-06 17:21:51 -06:00
derrod
9f37258298 UI: Refactor Windows update check to always use LIBOBS_API_VER 2023-10-06 17:21:51 -06:00