Ignore wheelEvent using subclass
slider,spinbox,combobox with eventhandlers:
wheelEvent - ignore if widget is not focused,
leaveEvent - clear focus when mouse leaves event.
Use these new subclass widgets in properties
to ignore wheelEvent when scrolling.
I considered making this an option, but I decided against it because
I felt it wasn't necessary and would make the settings more complex.
Opinions are welcome.
The system theme was named Default even though the default theme is Dark.
This addresses that by renaming Default.qss to System.qss. I've made it
backwards compatible so users already using this theme are not affected.
The theme list now shows up as:
-System
-Dark (Default)
-Acri
-Rachni
I have also made it so that you can specify the default theme in the
UI config file.
Add D3D/GL debug markers to make RenderDoc captures easier to tranverse.
Also add obs_source_get_name_no_null() to avoid boilerplate for safe
string formatting.
Closesobsproject/obs-studio#1799
Previously enabling and disabling bandwidth testing in a certain order
lead to the parameter being included in the stream key that is saved to
disk, making it impossible to disable the bandwidth test later on.
By doing this properly and using string concatenation instead of
modifying (appending to) the key_ value this will no longer happen.
Fixes the `obs.rc` file appearing in the UI source tree and moves it
into the out-of-tree build directories provided by CMake. Projects
requiring this can use it by adding `${obs-studio_BINARY_DIR}/obs.rc`
to their source list.
All UI elements are accessible through the obs frontend api via
obs_frontend_api_get_main_window, except for the tray icon and its
elements. This commit adds an obs_frontend_api_get_system_tray function
which returns the pointer to the QSystemTrayIcon cast to void (much like
the QMainWindow pointer for the main window).
This solves the issue of users who close the primary dock widgets and
can't figure out how to get them back, who for whatever reason choose
not to read the message box when closing dock widgets that tells them
how to get it back. The users can still hide the primary dock widgets
via the View menu, but they can no longer close them via the [x] button
on the dock widget. This change does not apply to secondary dock
widgets, such as a chat window, stats, etc.
Closesobsproject/obs-studio#1804
- Now uses a QVBoxLayout with a QScrollArea for the container
- Uses QGroupBox for each section
- Moved Monitoring and ducking settings out of the Advanced tab
- Push-to hotkeys are no longer in a child scroll area
- Renamed device labels for consistency
Fixes a crash that can happen if you try to use the settings window
while in an even subloop, or if you try to close OBS while in an event
subloop. Continually retries (defers) the actions every one second
until the subloop has finished.
This new scale filter computes pixels by weighing the coverage area of
source pixels over the target pixel. This algorithm works well for both
upsampling and downsampling, but was mainly designed to upscale
high-quality low-resolution sources like RGB/HDMI retro consoles. I've
heard of people using odd workarounds like scaling up to very high
resolutions before scaling back down to preserve pixel shartpness. This
algorithm directly addresses this use-case in a much more direct
fashion.
The Area scale filter does a better job of preserving the thickness of
thin features than the Point filter.
The Area scale filter does not look at source pixels that lie outside
of the target pixel, leading to a much sharper image than Bilinear,
Bicubic, and Lanczos filters.
This filter should interpolate pixels in linear space, but OBS is not
equipped to do that at the moment.
libobs: Add GPU effect, and wire up scene serialization.
obs-filters: Add Area as an option for scale_filter.
UI: Add Area as an option for both scene items, and canvas downscaling.
Users don't realize that dockable windows can be closed (hidden) and can
be shown again via the View menu. This adds an explicit warning when
the user first closes a dockable window for their first time. In future
versions, this should be changed to a dialog box with a "Do not show
again" checkbox.
Allows the ability to use invokeMethod on the OBSApp object to execute
an std::function. This allows deferring an std::function call to the Qt
event queue.
In commit d17ee20863, we attempted to fix a race condition crash in the
Logitech plugin by deferring the "stream/recording/replay buffer active"
calls to the UI thread. However, the Logitech plugin loop_function
funciton can call obs_frontend_streaming_active/etc functions while the
UI thread waits for the loop_function thread for many OBS events,
causing a hard lock in the Logitech plugin. This fixes that by making
the obs_frontend_streaming_active/etc functions completely atomic
instead. It's a bit of a hack but it's better than accessing objects.
In the Twitch chat dock window, the "Moderation Tools" link in the chat
settings should not navigate the window to the new URL; it should pop up
the URL in the user's system browser instead.
If the auth process failed on startup, the user is still able to use
their stream, just without the extra UI. The auth object is still
technically existing, and the user can still stream, so don't treat it
like it's not connected in settings.
If the user disconnects OBS from their Twitch account on their Twitch
settings panel, then try asking the user if they'd like to reconnect
before throwing an error.
If the user disconnects OBS from their Mixer account on their Mixer
settings panel, then try asking the user if they'd like to reconnect
before throwing an error.
The message boxes that tell you that the browser is initializing or that
you're authenticating with twitch are annoying on startup. It makes
sense to do it in the settings/autoconfig dialogs where you sort of need
to know what's going on while waiting for it to connect, but on startup
it's not really necessary and can be kind of annoying.
Fixes an issue when Start Replay Button stays at checked state if stop
signal generated (hotkey event for example) instead of mouse click.
Mantis: https://obsproject.com/mantis/view.php?id=1343
This should always be disabled if video output is active. Additionally,
the expression used to determine whether it should be enabled/disabled
was very unreadable.
This was a feature that was available when you chose custom RTMP server;
it was not considered when making the new version. Note: it looks
unslightly, but it works for now.
In the auto-configuration dialog, use hardware encoding by default if
NVENC is available due to the fact that the latest generations of NVENC
currently has a better quality to bitrate ratio than veryfast x264 and
most other hardware devices.
NVENC has increased its quality to bitrate ratio over the years with
recent generations of hardware, so do not increase the minimum estimated
bitrate if NVENC is chosen in the auto-configuration dialog.
Fixes a bug where if you set the advanced output recording encoder to
"use stream encoder", then reopened the settings window, that option
would become enabled again.