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.
The graphics thread should not be accessing any Qt objects that aren't
guaranteed to exist. Instead, store the currently hovering list/preview
scene items in the preview class.
This reverts commit 6629c5d7b8.
Chat redirect only happens on raid, which is when you are ending your
stream. That's acceptable behavior for the main chat window.
In order to make for a better user experience with service integration,
do a one-time reset of the docks locked state, and set the default lock
state to off.
Fixes an issue where if you auth to twitch, then close the program
without unhiding the twitch stream stats panel, the next time that panel
was unhidden it would be at position 0,0 on your screen. This
explicitly sets its position to be center of the window beforehand to
ensure that won't occur.
The post-output rescale option in advanced output mode cannot currently
be used with texture-based encoders, so disable the option when a
texture-based encoder is selected.
(This commit also modifies UI)
Adds a universal function for determining whether video output is
currently active, rather than having to use video_output_active() on the
value returned by obs_get_video().
The signal mutex can be locked within other signal mutexes, causing a
potential hard cross-lock when releasing certain sources. Instead,
defer the Disconnect() call to the UI thread.
This fixes a potential freeze on exit.
Adds the ability to connect/login to an account via the settings and
auto-configuration dialogs. Checks registered Auth objects, and if the
Auth object matches the currently selected service in the settings
window or auto-configuration dialog, will display "connect account"
buttons for the user to be able to click (which are optional, they can
still use stream keys if they'd prefer).
Adds a function for initializing browser and cookies in a separate
thread while, and while waiting for it to complete, show a dialog
stating that the browser is currently being loaded. Allows the ability
to safely prevent the user from taking any action without actually
freezing up the UI thread.
Allows the ability to switch cookies between profiles. Allows the
ability to, for example, switch streaming service accounts between
profiles for proper access to the pages displayed by the browser panels
(such as chat windows).
Makes it so that services can have custom handling on a per-service
basis. The bottom part of the service pane is now a stacked widget
which can now be customized for different types of services
(particularly OAuth services).
Adds functions for executing functions within separate threads without
blocking the user interface, or by blocking the user interface with a
dialog box.
Allows creating a QThread via an std::function. A backward-compatible
alternative to QThread::create for Qt versions older than 5.10 (when it
became available in Qt).
Currently, browser panel is only supported on windows. So rather than
have to check for _WIN32 in the code everywhere, just move the WIN32
check to cmake, that way we don't have to have _WIN32 checks in the code
everywhere the browser panel code is used, and do not have to remove a
whole bunch of unnecessary _WIN32 #ifdefs for other operating systems
when browser panel support is added for them.
The "Custom" service has been moved, and is now an item called "Custom"
in the "Services" combo box. This simplifies the stream page of
auto-configuration and removes an unnecessary widget. Overall a minor
but nice slimline/improvement on user experience.
This change means that the modified callback for a scripts properties is
always called when first loaded or on a reload. This behavior matches
the properties view for sources, where all modified callbacks are called
when the window opens. This change therefore treats reloading as
equivalent to reopening.
A stream will fail to start if the output_info does not have an
encoded_audio_codecs string, even if the output is not flagged as
encoded. This allows unencoded outputs to omit that string.
This defines the main OBS Windows executable with a resource file,
including a version number accessible externally and a File
description which appears in Windows Task Manager.
The first audio track was not recorded following the API changes for
custom ffmpeg recording (adding multi-track support).
This fixes the issue (spotted by EposVox, thanks to him for the report).
* UI: Fix mem leak with projectors
* UI: Fix mem leak with ScaleFilteringMenu
* UI: Fix mem leak with sourceProjector
* UI: Fix leak with preview projector in Source menu and Preview
* UI: Fix mem leaks with background color menu
* UI: Fix leak with deinterlace Menu
* UI: Fix leak with scene transition override menu
* UI: Fix leak with scene projector menu
* UI: Fix leak with filter shortcut in Main
* UI: Fix leak with filter shortcut in stats
Fixes the narration reading (for the blind) for items in the sources
list; previously they would not be read due to the new custom model.
This issue is solved by returning the name of item in the form of a
QVariant of a QString returned from the QAbstractItemModel::data virtual
function when the Qt::AccessibleTextRole role is used.
Although log files are saved with the date in the name of the log file,
it's also nice to be able to see it inside the log file itself,
especially when uploaded to a text service.
On Linux the preview widget scaling uses only the integer part of the
scale. This results in a partially non-repainting window that looks
buggy and annoying.
A mono input with surround output is upmixed by swresampler by routing
it to FC (front center) by default which corresponds to third channel
for 3.0, 4.0, 4.1, 5.0, 5.1, 7.1. (The other channels are muted.)
But the volume meters are set to show the first channel for mono sources.
Therefore although audio is processed, it would not show on the meter.
This fixes this display issue.
Closesobsproject/obs-studio#1540
Fixes an issue when it's hard to perform drag-by-mouse move of the
scrollbar while handle is at corner and has minimum size.
Info: the handle minimum size styled as 20px, while add/sub-line is
14px, thus only 6px left for mouse drag when handle resides at corner.
While handle styled to cover whole bar including, subcontrol elements,
it is better to remove the hidden subcontrols completely.
If there's a delay, it will *also* be ommitted after the appropriate
number of seconds.
I was originally going to add a new event for this, however this is
consistent with STREAMING_STARTING, which is emitted at the start
of the delay, not the end.
The UI currently is dependent on browser source files being present,
when in actuality the files may not have been fetched (i.e. not fetching
submodules). This fixes that by using a macro to detect whether it's
available or not.
Closesobsproject/obs-studio#1490
Fixes an issue with horizontal scrollbar when it was hard to drag it by
mouse in Acri theme, because active area was thinner than the visible
scroll handle.
Fixes an issue when it was hard to drag by mouse the scroll handle in
Dark theme if scroll handle size is close to full size
(https://obsproject.com/mantis/view.php?id=466) or close to minimal
size.
Also, the mouse pointer was misaligned to the scroll handle when
moving: the scroll handle always moves faster than mouse pointer itself
and finishes first.
On KDE and Unity some QT events aren't triggered as explicit stated
by QT doc. This is needed to at least show a fixed Context Menu.
Closesobsproject/obs-studio#1252
The stats dock was incorrectly added to the .ui file, causing the stats
dock to show by default on startup, and just generally causing a bad
default startup UI appearance. This fixes that by adding the stats dock
programmatically/dynamically instead of modifying the .ui file.
This changes the remux dialog to support a collection of input/output
pairs, presented as a QTableView. Standard Qt icons are used to
indicate the state of each entry during a remux operation. Drag/drop
support is added to populate the list quickly. Both Dark and Rachni
themes are updated to make QTableView look reasonable.
Relevant text is added in the localization files.
Closesobsproject/obs-studio#1153
Makes Visual C runtime libraries consistent across
Debug/MinSizeRel/Release/RelWithDebInfo, rather than just changing those
flags for RelWithDebInfo. Also adds /Zl for statically linked
libraries.
Closesobsproject/obs-studio#1421
Variables path and dir with the same declared size triggers a compiler
warning about possible truncation. Although, depending on the path
where profiles are stored, its still possible to go beyong the declared
size and the path will be invalid. This will not trigger any
compilation warning and all invalid paths will be cought by the already
check in the os_glob function.