Allows the ability to add a new scene collection via the frontend API.
Blocks until the scene collection has been successfully added to ensure
synchronization between the calling thread and the UI thread.
(Jim: Added detailed description to commit message)
Closesobsproject/obs-studio#1232
Instead of queuing AddScene to add the new scene to the list box,
ensures that the UI has added the new scene to the list box when the new
scene is added. This ensures synchronization between the calling thread
and the UI thread in this particular case.
(Jim: Added detailed commit message description)
Closesobsproject/obs-studio#1226
A helper function used with QMetaObject::invokeMethod which allows the
ability to use Qt::DirectConnection if on the Qt UI thread, or
Qt::BlockingQueuedConnection if on another thread to ensure that
regardless of what thread the invokeMethod is called from, that it will
wait until the invoked method has been called.
Instead of manually having to call AddScene each time a scene needs to
be added, use the "source_create" global OBS signal to detect when a
scene has been created, and add the scene to the list automatically.
Allows the ability to add scenes to the main user interface via libobs
API.
Closesobsproject/obs-studio#1226
Deferred load is used specifically for macOS systems to ensure that Qt
and CEF do not load at the same time. This causes a slight bit of a
delay in loading the scene after the UI has loaded. This is not
necessary for other operating systems, so revert to the older load code
in the case of different systems.
Add a new algorithm to calculate the true-peak. It implements the
Whittaker- Shannon interpolation from four samples to create 4
intermediate samples (5 x oversampling) inbetween the middle two
samples.
With 4 samples and 4 intermediate samples the algorithm can be
implemented as a 4x4 vector-matrix cross product, which is ideal for
SSE.
I've also replaced the sample-peak algorithm using SSE as well to
improve performance.
Closesobsproject/obs-studio#1189
Audio controls in OBS Mixer and Advanced Audio Properties window are not
sorted at all. Every time OBS is restarted they get shuffled (Jim note:
This is due to json object hashing). The order of these controls is
additionally not consistent between the mixer and the advanced audio
properties window.
Closesobsproject/obs-studio#1242
Add Selected and Hidden Array Values
Let developers get and set whether items in an editable list are hidden
or selected. May be useful in when editable lists are modified and
handled in a callback. Especially when edit button callbacks are used.
Closesobsproject/obs-studio#1200
Due to the commit 34c14829b6176248970bb, source loading is now deferred
to after OBSInit(), which would cause saved scene/source projectors to
no longer load on startup. This fixes that issue by moving the
OpenSavedProjectors call to OBSBasic::Load().
When an user launches a multiple instance of obs and don't use the -m
flag, wait until the confirmation to launch to create a new log file.
This avoids a short log with no information when using the Help ->
Update Last Log.
Closesobsproject/obs-studio#1164
Adds an alternative means of isolating the CEF initialization process
from Qt's initialization process. This is an unpleasant hack, but is
far more preferable than isolating the entire browser plugin to a
separate process and overly complexifying the browser plugin to the
point to where no one wants to touch the plugin or contribute to it.
Allows the ability to perform multiple actions that would normally save,
and defer the save until all of those actions are complete.
Closesobsproject/obs-studio#1231
Adds the ability to upload crash reports, making it easier for users to
give us crash data. This should be considered a temporarily solution,
as automated crash reporting should be the ideal solution as soon as
time permits.
Adds a "has_prefix" parameter to delete_oldest_file and get_last_log in
order to determine whether the file has a prefix when parsing its
timestamp. For example, crash logs are prefixed with "Crash", and thus
it was unable to get the timestamp because it couldn't parse the
filename correctly due to that fact.