Commit Graph

411 Commits

Author SHA1 Message Date
tt2468
152faa5fe2 Events: Add profile/scene collection change events 2021-11-12 15:20:01 -08:00
tt2468
4e956d1ef4 Requests: Add note SetCurrentSceneCollection 2021-10-06 00:45:14 -07:00
tt2468
42c78f1831 Events: Prepare to add a few new OBS events
Pending PR merge and version release
2021-10-06 00:44:42 -07:00
tt2468
1b25e98dc2 Revert "Requests: Add Compare"
This reverts commit 3687086ce0.

I realized that I'm adding too much too fast, and that we should
focus on getting v5 out first.
2021-10-05 20:17:45 -07:00
tt2468
3687086ce0 Requests: Add Compare
Non-functional, will have to finish impl later
2021-10-04 17:32:17 -07:00
tt2468
f0b207d021 Base: Add variable support to request batches + refactor
- Adds variables to execution types SERIAL_REALTIME and SERIAL_FRAME
- Pass by reference where copy is unnecessary
- Start WebSocket server after OBS finishes loading instead of on
plugin load
2021-10-01 17:34:09 -07:00
tt2468
16ea2c82e1 Requests: Verify current program scene
Crashes can occur if there is no current program scene. Currently
caused by connecting to obs-websocket and calling `GetSceneList`
before OBS has actually finished loading.
2021-10-01 17:20:38 -07:00
tt2468
981538aa2a Base: Make some items atomic 2021-09-30 19:14:17 -07:00
tt2468
df7af451a7 Requests: Fix some parameter validation
Thanks to t2t2 for the report over Discord
2021-09-26 03:54:16 -07:00
tt2468
a8d27ede9e Base: Add request batch execution types
A new `executionType` field has been added to the `RequestBatch` Op

Types added:
- `OBS_WEBSOCKET_REQUEST_BATCH_EXECUTION_TYPE_SERIAL_REALTIME`(default)
- `OBS_WEBSOCKET_REQUEST_BATCH_EXECUTION_TYPE_SERIAL_FRAME`
- `OBS_WEBSOCKET_REQUEST_BATCH_EXECUTION_TYPE_PARALLEL`

`OBS_WEBSOCKET_REQUEST_BATCH_EXECUTION_TYPE_SERIAL_REALTIME`:
- Same as how request batches have always worked.
- Requests are processed in-order
- Requests are processed as soon as possible by one worker thread
- The `Sleep` request blocks execution for a specified amount of real
world time

`OBS_WEBSOCKET_REQUEST_BATCH_EXECUTION_TYPE_SERIAL_FRAME`:
- New!
- Requests are processed in-order
- Requests are processed on the graphics thread. BE VERY CAREFUL NOT
TO OVERLOAD THE GRAPHICS THREAD WITH LARGE REQUESTS. A general rule
of thumb is for your request batches to take a maximum of 2ms per
frame of processing.
- Requests processing starts right before the next frame is composited.
This functionality is perfect for things like `SetSceneItemTransform`
- The `Sleep` request will halt processing of the request batch for
a specified number of frames (ticks)
- To be clear: If you do not have any sleep requests, all requests in
the batch will be processed in the span of a single frame
- For developers: The execution of requests gets profiled by the OBS
profiler under the `obs-websocket-request-batch-frame-tick` name.
This value (shown in the OBS log after OBS shutdown) represents the
amount of time that the graphics thread spent actively processing
requests per frame. This tool can be used to determine the amount of
load that your request batches are placing on the graphics thread.

`OBS_WEBSOCKET_REQUEST_BATCH_EXECUTION_TYPE_PARALLEL`:
- New!
- Requests are processed asynchronously at the soonest possible time.
- Requests are processed by the core obs-websocket thread pool, where
the number of workers == the number of threads on your machine.
  - If you have 12 threads on your machine, obs-websocket will be able
to process 12 requests at any given moment.
- The `results` array is populated by order of request completion.
Consider the order to be random.
- The `Sleep` request will return an error if attempted to be used in
this mode.
- Note: This feature is experimental and can increase the chances of
causing race conditions (crashes). While the implementation is fully
thread-safe, OBS itself is not. Usage of this is only recommended if
you are processing very large batches and need the performance benefit.
- Example use case: Performing `SaveSourceScreenshot` on 8 sources
at once.
2021-09-26 03:12:29 -07:00
tt2468
45854e2949 Config: Properly add more logging, fix bug 2021-09-26 03:10:43 -07:00
tt2468
181003af89 Utils: Use emplace_back instead of push_back
Saves copy operations
2021-09-25 19:34:05 -07:00
tt2468
2218b7956c Requests: Support groups in most of the scene item requests
Tested each request to the fullest reasonable extent. Requests performed properly without errors or leaks
2021-09-25 18:59:04 -07:00
tt2468
0e8650dbd2 Requests: Support groups in GetSceneItemId 2021-09-25 18:45:37 -07:00
tt2468
da4297ee88 Request: Clarify error messages 2021-09-25 18:45:00 -07:00
tt2468
5350c115bf Requests: Improve more request checks 2021-09-25 18:29:27 -07:00
tt2468
d09571f0e3 Requests: Improve some check logic in GetSourceActive 2021-09-25 18:20:01 -07:00
tt2468
d04d42240a Request: Fix scene filter functionality
Previous functionality did not support groups.
2021-09-25 18:14:25 -07:00
tt2468
9ca83e7570 Requests: Make GetSceneItemId scene only 2021-09-25 17:54:39 -07:00
tt2468
aa0ba78e46 Base: Use more refcounts
Use refcounts more effectively
2021-09-25 17:52:08 -07:00
tt2468
b91ad0f790 Requests: Add GetSceneItemId
I realized that it was not entirely fair to expect users to fetch a
scene's item list, then search the list on the client in order to find
an item ID, so this is a compromise. This will also help developers
move from the 4.x scene item functionality to 5.x's

Operating on scene items by relying on source name can be dangerous
and in some cases exhibit what would be considered undefinied behavior.
Operating on scene items using IDs is best practice.
2021-09-25 17:21:06 -07:00
tt2468
4e0b8c5f11 Utils/Obs: Add GetSceneItemByName
Simple, didn't really need to be a util tbh. But I added it anyway
and there's nothing you can do to stop me
2021-09-25 17:21:00 -07:00
tt2468
ea948766a5 Events: Fix conversion warning
Thanks micolous for the report.
2021-09-24 18:54:48 -07:00
tt2468
c73a153c9a Utils/Crypto: Use better method for GenerateSecret
Thanks to micolous for the suggestion
2021-09-24 18:39:46 -07:00
tt2468
0c2e40263a WebSocketServer: Remove QtConcurrent dependency
We can avoid requiring QtConcurrent by using QRunnables. Thanks to
micolous for the idea.
2021-09-24 18:11:31 -07:00
tt2468
78d02696d0 Utils: Add retrocompatability header
QRunnable::create was added in Qt 5.15, but Ubuntu still uses 5.12.
This reimplements that functionality until Ubuntu moves to >= 5.15
2021-09-24 18:10:17 -07:00
tt2468
7a888c2f92 Config: Add more logging
Good to have
2021-09-24 18:09:46 -07:00
tt2468
342164dfb5 Forms: Use QHideEvent instead of QCloseEvent
QCloseEvent is the wrong event to use here. If the `Ok` button is
pressed for example, QCloseEvent is not emitted. QHideEvent is
always called when the dialog is hidden.
2021-09-17 03:00:33 -07:00
tt2468
a4e62acf25 Forms: Update ConnectInfo on settings apply instead of close
Just for better usability
2021-09-17 02:54:29 -07:00
tt2468
d811c95e10 Requests: Add some more failure checks and improve response codes 2021-09-17 02:43:20 -07:00
tt2468
eebcc25115 Requests: Add unpublished RemoveInput
The functionality depends on obs-studio#5276 to be merged and released,
so we can add it but not enable it for now.
2021-09-17 02:42:58 -07:00
tt2468
c9fa09edc4 Config/Base: Refactor with fixes
Fixes these things:
- Websocket password is not generated if FirstLoad and overridden
- Save generated password immediately if FirstLoad
- Do not generate new password if FirstLoad and password already exists
- More logging
2021-09-17 02:25:30 -07:00
tt2468
69ccc99921 Utils/UI: Make GeneratePassword() use std::string
Just for consistency
2021-09-17 02:09:44 -07:00
tt2468
a5a19b9952 Utils/Crypto: Use QRandomGenerator instead of qrand()
qrand() is obsolete, and QRandomGenerator produces numbers seeded from
the platform's RNG source. Makes our authentication system way more
secure too.
2021-09-17 02:00:30 -07:00
tt2468
66ff329da4
Config: Fix typo 2021-09-15 03:46:52 -07:00
Dominik Nakamura
d20c0d0da7
Reqeusts: Fix wrong validation in ValidateBasic 2021-09-06 10:48:01 +09:00
tt2468
b9b8e38998 WebSocketServer: Remove ignoreNonFatalRequestChecks from session params 2021-09-04 10:57:00 -07:00
tt2468
e89c0c2b05 Base: More code cleanup and fixes 2021-09-04 10:47:51 -07:00
tt2468
7e1e1bc33c Base: Large plugin refactor
- Merge WebSocketProtocol into WebSocketServer
  - Having them separated was not doing anything productive
- Request: Move SessionPtr to RequestHandler
  - Less copying to do for batch requests
- Fully modularize EventHandler
  - Make BroadcastEvent a stored callback that WebSocketServer sets
- Return early on high volume events to avoid unnecessary compute
  - These events will only generate a json object when it is actually
needed
2021-09-04 10:04:00 -07:00
tt2468
537595658d Requests: Add GetSceneItemTransform 2021-09-03 15:59:09 -07:00
tt2468
c43d829845 Events: Complete SceneItemTransformChanged 2021-09-03 15:58:50 -07:00
tt2468
3d2fb65357 Utils: Add GetSceneItemTransform 2021-09-03 15:58:34 -07:00
tt2468
96dcc49adb Requests: More requests and code cleanup
(plus very slight performance improvement)
2021-09-03 12:52:50 -07:00
tt2468
25b3bd44ba RequestHandler/RPC: Improve code efficiency and add optionals 2021-09-03 12:52:15 -07:00
tt2468
bcdb8ee352 Events: Fix SceneItemListReindexed event name 2021-09-03 08:59:09 -07:00
tt2468
333737f400 Requests: Additions and code cleanup 2021-09-02 19:29:13 -07:00
tt2468
82d8a3d7ce Utils: Add stuff to Obs 2021-09-02 19:28:55 -07:00
tt2468
d7f96b6dea Revert "Request: Minor code cleanup"
This reverts commit c16669c7b0.
2021-09-02 13:33:20 -07:00
tt2468
c16669c7b0 Request: Minor code cleanup 2021-09-02 13:25:17 -07:00
tt2468
0269209d59 Requests: Use OBS naming for monitorType enum 2021-09-02 11:24:48 -07:00
tt2468
9a8587d6df Requests: Check for last scene in RemoveScene 2021-09-01 10:43:36 -07:00
tt2468
8a45560297 Utils: Add GetSceneCount() 2021-09-01 10:43:24 -07:00
tt2468
fb0656c31e RequestHandler: Simplify request statuses 2021-09-01 10:30:40 -07:00
tt2468
26bef074ac EventHandler: Add (disabled) InputAudioMonitorTypeChanged event 2021-08-31 06:39:09 -07:00
tt2468
e18aaff661 RequestStatus: Add new statuses to replace old soon 2021-08-31 06:38:55 -07:00
tt2468
4271730dc2 Requests: Add more requests 2021-08-30 13:55:22 -07:00
tt2468
b86107a699 Base: Add OBSPropertiesAutoDestroy 2021-08-30 13:55:05 -07:00
tt2468
a40160e305 WebSocketServer: Use Sec-WebSocket-Protocol for json/msgpack 2021-08-30 09:59:59 -07:00
tt2468
b58f6e8366 WebSocketServer: Remove unnecessary string usage 2021-08-30 04:46:59 -07:00
tt2468
1ecf2a4fdb CMakeLists: Allow specifying version suffix string 2021-08-30 02:50:02 -07:00
tt2468
292b2b0d3b Base: Remove generated plugin macros file 2021-08-30 02:49:43 -07:00
tt2468
f37edbd71c EventHandler: Include required event intent in emit 2021-08-30 01:39:46 -07:00
tt2468
78f9c93739 Requests: Fix global realm storage on persistent data req's 2021-08-30 01:32:22 -07:00
tt2468
96c5818395 ConnectInfo: Update QR code format 2021-08-30 01:11:29 -07:00
tt2468
a37cfb3e5b
WebSocketProtocol: Fix Identified OpCode responses 2021-08-28 07:10:03 -07:00
tt2468
03e32c8b5e Base: Major protocol refactor
As discussed in the #development channel in discord
- Switch from using message types to integer op codes
- Consolidate op-specific keys into `d` sub-object
- Shorten low-level payload keys from `messageType` to `op`, add `d`

Other changes:
- The WebSocketCloseCode enum has been refactored. It's best to just
treat it like it's new
- Some performance benefits came along the way. Nothing gamechanging,
but notable
- Various bug fixes discovered while refactoring
2021-08-28 05:02:24 -07:00
tt2468
91fadf505f Base: Overwrite bad define 2021-08-27 06:24:30 -07:00
tt2468
ade9653ed6 Base: Only include required util namespaces 2021-08-27 04:34:06 -07:00
tt2468
0547e1f2da Base: Lots of changes 2021-08-27 04:19:42 -07:00
tt2468
16697fb65e Requests: Add more requests 2021-08-27 02:33:33 -07:00
tt2468
fc08828773 Base: Update QMainWindow cast 2021-08-27 01:20:13 -07:00
tt2468
251e3a28c1 Requests: Reorder some requests 2021-08-26 23:29:55 -07:00
tt2468
bd289ae751 Requests: Rename slotData to slotValue to align with other profile parameters 2021-08-26 23:11:24 -07:00
tt2468
7c5c0f42da Requests: Merge global and profile persistent data requests
The code was largely shared, so it made more sense to just merge the
requests and create realms.
2021-08-26 23:06:23 -07:00
tt2468
8185580cff RequestStatus: Add DataRealmNotFound 2021-08-26 23:02:52 -07:00
tt2468
64df33152a Utils: Switch to obs_enum_scenes() for GetSceneList
More threadsafe than `obs_frontend_get_scenes()`, not that either
are in any way threadsafe.
2021-08-26 22:46:53 -07:00
tt2468
4d8b80a5a7 Utils: Fix missing header file newlines 2021-08-26 20:33:06 -07:00
tt2468
ea713ea808 Requests: Add persistent data requests 2021-08-26 20:32:00 -07:00
tt2468
8e539d6cdb Utils: Add file access utils for json and text 2021-08-26 20:11:42 -07:00
tt2468
1fc60aba92 SettingsDialog: Fix Generate Password button enable logic
On OBS load, the Generate Password button would be enabled regardless
of if authentication was enabled, or if the password was overridden.
2021-08-26 19:07:26 -07:00
tt2468
43a889c1d4 Utils: Refactor into dedicated components 2021-08-26 19:00:48 -07:00
tt2468
306844e42d Utils: Add helper to get current profile file path 2021-08-26 18:41:53 -07:00
tt2468
eb0743f683 Requests: Fix GetProfileParameter on Windows
If either return value was not defined in the profile config,
it would cause OBS to crash on Windows due to assigning a
nullptr to an std::string.
2021-08-26 17:56:13 -07:00
tt2468
87e2972a2d WebSocketProtocol: Correct a log message 2021-08-26 17:49:15 -07:00
tt2468
c402b4232c Merge branch 'master' of https://github.com/Palakis/obs-websocket 2021-07-24 20:48:58 -07:00
tt2468
7f7651b405 Utils: Attempt fix output timecode string 2021-07-24 20:48:44 -07:00
tt2468
fb1580b44e Requests: Add extra logging to GetProfileParameter 2021-07-24 03:04:53 -07:00
tt2468
7081824bbe Utils: Add includeDisabled in GetInputKindList 2021-07-22 17:38:32 -07:00
tt2468
d0e05ae45c Requests: Add more requests
- GetStreamServiceSettings
- SetStreamServiceSettings
- CreateInput
- GetStreamStatus
- StartStream
- StopStream
2021-07-22 16:26:04 -07:00
tt2468
4d271da541 Base: Code cleanup and add some requests 2021-07-22 03:24:53 -07:00
tt2468
0a02015f7d Base: General code cleanup 2021-06-22 15:51:52 -07:00
tt2468
33137496a7 RequestHandler: Lots of code cleanup 2021-06-22 15:24:48 -07:00
tt2468
5cf2b50b63 RequestHandler: Add some more requests 2021-06-21 15:31:47 -07:00
tt2468
584be06398 Utils: Add CreateSceneItem and CreateInput 2021-06-21 15:26:59 -07:00
tt2468
ae40c61c2b RequestHandler: Some more requests 2021-06-16 08:19:13 -07:00
tt2468
cc77724229 RequestHandler: More simplification (and fix)
obs_queue_task is set to wait, so there is no need to create our
bool on the stack, as it should never go out of scope when the task
is run. Additionally, the old way didn't actually work anyway.
2021-06-16 08:16:23 -07:00
tt2468
9229107bab RequestHandler: Simplify TriggerHotkeyByKeySequence checks 2021-06-16 08:10:43 -07:00
tt2468
4f804baf95 Request: Consider null parameters missing 2021-06-16 06:25:20 -07:00
tt2468
bc1dc807e4 RequestStatus: Add TooManyRequestParameters 2021-06-16 06:25:00 -07:00
tt2468
d6aeeeea0c RequestHandler: Add SetInputSettings 2021-06-16 04:27:08 -07:00
tt2468
ce8f393eb8 Request: Fix memory leak and crash in ValidateInput 2021-06-16 04:18:37 -07:00
tt2468
271db036fe RequestHandler: Add GetInputSettings 2021-06-16 02:41:24 -07:00
tt2468
55755ae066 Request: Minor code cleanup 2021-06-16 02:41:13 -07:00
tt2468
3400bfdc9a Request: Add ValidateInput() 2021-06-16 02:22:13 -07:00
tt2468
1116af128e RequestHandler: Add GetInputDefaultSettings 2021-06-16 02:07:51 -07:00
tt2468
8ad009ba51 RequestHandler: Move GetInputList logic to Utils 2021-06-16 01:39:04 -07:00
tt2468
4d77927ceb Utils: Add Obs::ListHelper::GetInputKindList() 2021-06-16 01:31:36 -07:00
tt2468
428e437429 RequestHandler: Add unversionedInputKind to GetInputList 2021-06-16 01:26:00 -07:00
tt2468
ccb69754b5 EventHandler: Add unversionedInputKind to InputCreated 2021-06-16 01:22:14 -07:00
tt2468
5cc52ce704 Utils: Add isGroup to Obs::ListHelper::GetSceneList() 2021-06-16 00:57:18 -07:00
tt2468
94d7df0bc1 EventHandler: Add isGroup bool to create/remove scene events 2021-06-16 00:51:24 -07:00
tt2468
aac06b101e RequestHandler: Add GetInputList 2021-06-16 00:49:07 -07:00
tt2468
9af7216891 RequestHandler: Don't error out on null optional parameters 2021-06-16 00:43:46 -07:00
tt2468
efdea72987 RequestHandler: Add RemoveScene 2021-06-15 23:57:48 -07:00
tt2468
9088cb4db8 EventHandler: Add note to SceneItemRemoved 2021-06-15 23:48:16 -07:00
tt2468
b95a2e648f RequestHandler: Add more scene requests 2021-06-15 00:21:57 -07:00
tt2468
c5af073780 RequestHandler: Add more scene requests 2021-06-14 23:42:18 -07:00
tt2468
cb5ee53956 RequestHandler: Add GetSceneList 2021-06-14 22:52:23 -07:00
tt2468
f26cf8f95f RequestHandler: Add screenshot requests 2021-06-14 22:33:01 -07:00
tt2468
52204a9eec WebSocketServer: Log connects and disconnects 2021-06-14 20:50:50 -07:00
tt2468
80b9732f94 RequestHandler: Some source stuff 2021-06-13 07:14:40 -07:00
tt2468
17cbde0e48 Utils: Queue notifications in the UI thread
Soooooooooo apparently doing notifications natively shouldn't even
work. This is probably what was crashing OBS in 4.x. Fixed now I
guess...
2021-06-13 07:12:19 -07:00
tt2468
aaadf4d2ff EventHandler: Remove unnecessary calldata helper 2021-06-13 04:50:04 -07:00
tt2468
ebbb1391fe EventHandler: Add more scene item events 2021-06-13 04:49:49 -07:00
tt2468
fb699b0414 Base: Fix missing arguments for tray notifications 2021-06-13 04:16:22 -07:00
tt2468
33ba2d2415 EventHandler: Remove old logging
oops
2021-06-13 04:02:17 -07:00
tt2468
abfc6f0b28 SettingsDialog: Add todo
Maybe someday I'll actually do this todo.
2021-06-13 04:01:21 -07:00
tt2468
c9619ce215 Base: Add system tray notifications
Final "UI" part of the plugin to be completed. I'm annoyed at how
many includes are required in order to implement this feature. It
breaks quite a bit of the modularity of the plugin because suddenly
everything has to include obs libraries (for translations)
2021-06-13 03:58:15 -07:00
tt2468
bbc504ce72 WebSocketServer: Remove unnecessary signals 2021-06-13 03:24:22 -07:00
tt2468
0de3f304f0 Utils: Add platform util to send tray notification 2021-06-13 03:17:11 -07:00
tt2468
57794a2bf5 SettingsDialog: Show confirmation when a custom password is used 2021-06-13 03:04:08 -07:00
tt2468
945816ce92 EventHandler: Add sceneItemIndex to certain events 2021-06-13 02:43:00 -07:00
tt2468
1f791825ef EventHandler: Return basic list for SceneItemListReindexed
Events can be tricky when it comes to the size of payloads. Many
embedded devices can have troubles receiving large payloads, so
we should be mindful of that. It is much harder to avoid large
payload sizes as a client for events than it is for requests.
Clients that need the data not included here should either cache
it from other sources or grab it fresh.
2021-06-13 02:18:02 -07:00
tt2468
971dd6713b Utils: Flip index of GetSceneList()
OBS likes to start indexes with 0 at the bottom (eg. scene items),
so it's good to match that
2021-06-13 02:15:43 -07:00
tt2468
38c47bc76f EventHandler: Rename SceneListReindexed to SceneListChanged 2021-06-13 02:11:14 -07:00
tt2468
129ee12542 EventHandler: More scene item events 2021-06-13 02:10:18 -07:00
tt2468
10afbdfca0 Utils: Add scene item list helper 2021-06-13 02:10:04 -07:00
tt2468
1d4d77cc93 EventHandler: Put high volume events into high volume category 2021-06-13 00:51:38 -07:00
tt2468
7716b30c27 EventHandler: Minor refactor and some event additions 2021-06-13 00:46:42 -07:00
tt2468
20a04a131b EventHandler: Remove unnecessary refcount stuff
Pointers in calldata are theoretically already incremented,
so incrementing their refcount then decrementing them is
unnecessary in the context of the event system.
2021-06-13 00:43:11 -07:00
tt2468
f81a5be43b EventHandler: Fix current profile/scene collection memory leaks 2021-06-13 00:39:52 -07:00
tt2468
f608423045 EventHandler: Remove unnecessary CPU usage info 2021-06-12 22:59:47 -07:00
tt2468
413b76d9a6 Utils: Minor nitpick 2021-06-12 22:17:55 -07:00
tt2468
ca26f679c8 EventHandler: Add ReplayBufferSaved 2021-06-12 20:34:24 -07:00
tt2468
4503b6ed05 Utils: Add string helper to get last replay 2021-06-12 20:34:08 -07:00
tt2468
4a00d169e1 RequestHandler: Add some config requests 2021-06-07 01:14:32 -07:00
tt2468
62d2b3e4cd RequestStatus: Add KeyNotFound 2021-06-07 01:12:32 -07:00
tt2468
e15acf9065 Utils: Add helpers to get some current data 2021-06-07 01:12:01 -07:00
tt2468
136a270473 Request: Fix missing requestData check 2021-06-07 01:11:20 -07:00
tt2468
2c018ca174 RequestHandler: Add some requests from the General category 2021-06-06 05:06:17 -07:00
tt2468
5e49ee2569 SettingsDialog: A few improvements 2021-06-06 00:47:52 -07:00
tt2468
3852a387b5 SettingsDialog: Attempt at fixing tooltip icon on Windows 2021-06-06 00:33:53 -07:00
tt2468
ed79da92e0 Utils::Platform: Fix minor ip recognition bug 2021-06-06 00:02:59 -07:00
tt2468
d3c7f4b3fd WebSocketProtocol: Remove availableRequests from Hello 2021-06-05 23:54:11 -07:00
tt2468
d375bbc98b Utils::Platform: Refactor GetLocalAddress()
It was pointed out that the existing functionality was not effective
at filtering out invalid interfaces, so we add a priority system
to try harder at finding a valid address.
2021-06-05 23:39:06 -07:00
tt2468
1ecf1e5dfd SettingsDialog: Log when restart is required 2021-06-05 23:09:02 -07:00
tt2468
e709d3fad5 SettingsDialog: Fix build (oops) 2021-06-05 23:07:47 -07:00
tt2468
a7c4f98ffa SettingsDialog: Add tooltip icon to debug checkbox 2021-06-05 23:06:36 -07:00
tt2468
3d0ba91ff2 SettingsDialog: Restart websocket server if debug mode changed
The functionality of not reloading the server when debug mode is
changed I determined was too confusing to use considering the
benefit that it provides by not reloading the websocket server.

It is technically possible to set debug mode to the server while
it is running, however the implementation would somewhat dirty the
UI code, so I do not feel comfortable doing it at this point.
2021-06-05 22:23:57 -07:00
tt2468
f0c3bb2c14 Config: Don't persist debug mode to config
A request from the OBS developers. Debug mode tends to be enabled,
then not remembered to be disabled, leading to logs that are both
long and difficult to read. In some cases, the OBS logviewer may
noticeably lock up the UI just trying to parse the long log file.
2021-06-05 22:19:39 -07:00
tt2468
81636dcbfa SettingsDialog: Show confirmation when video is active
Show a confirmation dialog when the Show Connect Info button is
clicked and video is active, to prevent users from
unintentionally showing sensitive information while live.
2021-06-05 21:38:16 -07:00
tt2468
3cc612cb1c SettingsDialog: Redesign settings sections 2021-06-05 21:20:11 -07:00
tt2468
19375921d3 EventHandler: Add media input events 2021-05-31 21:44:03 -07:00
tt2468
6c03b86514 EventHandler: Add Outputs events and other files 2021-05-31 18:51:56 -07:00
tt2468
9077ac911d EventHandler: Add some transition stuff
Transitions in OBS are implemented badly.
Not sure what will reasonably be possible with them.
I'll probably save implementing them for last
2021-05-14 03:59:00 -07:00
tt2468
becf604fc3 EventHandler: Add missing input event fields 2021-05-14 01:39:06 -07:00
tt2468
e4fbebb3b4 Utils: Always return a JSON object 2021-05-14 01:38:51 -07:00
tt2468
45d62e5ce0 EventHandler: General, Config, Scenes, Inputs 2021-05-14 01:13:27 -07:00
tt2468
c8eac893f2 Utils: Add more OBS utils 2021-05-14 01:13:09 -07:00
tt2468
ab12d5f39f EventHandler: Add some events 2021-05-13 19:11:19 -07:00
tt2468
f0d68f3eec WebSocketProtocol: Remove availableEvents from Hello
Not reasonably possible with the current structure of the `EventHandler`
2021-05-13 17:48:10 -07:00
tt2468
680b5c470e RequestHander: Add GetRequestList() 2021-05-13 17:46:05 -07:00
tt2468
11d28d17f1 EventHandler: Add EventSubscriptions enum 2021-05-13 17:34:57 -07:00
tt2468
4d6901c075 WebSocketServer: Add RPC version support to events 2021-05-10 22:55:48 -07:00
tt2468
921bc81a7b EventHandler: More stuff 2021-05-10 22:46:53 -07:00
tt2468
8b30d2e77e EventHandler: Add some calldata helpers 2021-05-10 18:34:27 -07:00
tt2468
902c9dfdc5 WebSocketServer: Don't try to send events if the server is not listening 2021-05-10 18:26:28 -07:00
tt2468
23b6ce607c Utils: Add some Obs helpers 2021-05-10 18:25:15 -07:00
tt2468
89046ccb1a EventHandler: Add handling of all frontent events we care about 2021-05-10 17:34:40 -07:00
tt2468
5157134b02 EventHandler: Add more code 2021-05-10 16:54:48 -07:00
tt2468
c0accd9cde base: Add EventHandler files 2021-05-10 15:48:41 -07:00
tt2468
ee751edf54 SettingsDialog: Mild refactor and add Connect Info dialog
Among lots of stuff:

- Generate a random password on first load

- Add `ConnectInfo` dialog including QR code display

- Add `Generate Password` button to generate a new random
password

- Delete `Copy Password to Clipboard` button

- Delete `GetConnectString` or whatever from WebSocketServer
(reimplemented the functionality directly into ConnectInfo)

- Added `GeneratePassword()` to Utils

Todo: Show warning when users specify their own passwords
2021-05-08 04:29:03 -07:00
tt2468
600505b60a Utils: Add Obs utils namespace 2021-05-08 00:54:35 -07:00
tt2468
8a18d3603c RequestStatus: Add a few items 2021-05-04 15:50:38 -07:00
tt2468
160ef4d771 RequestHandler: Add RequestBatch logic 2021-05-03 18:44:13 -07:00
tt2468
2aba810ce1 RequestHandler: Finish checks system and first request 2021-05-03 16:55:30 -07:00
tt2468
c2b717cabf RequestStatus: Put into namespace
Apparently this is supposed to help?
2021-05-03 13:43:59 -07:00
tt2468
807a1501b7 base: Refactor request stuff and finish more logic 2021-05-03 13:31:22 -07:00
tt2468
687f53bc6d plugin-macros: Include base.h directly (to avoid missing blog()) 2021-05-03 10:34:36 -07:00
tt2468
36af7f6f58 base: Lots of stuff, including RequestHandler progress 2021-05-02 19:48:44 -07:00
tt2468
04f7b33755 SettingsDialog: Add Identified column to session table 2021-04-30 11:24:09 -07:00
tt2468
997dc40d6c WebSocketProtocol: Fix compare (oops) 2021-04-30 10:46:53 -07:00
tt2468
7f503d846b WebSocketProtocol: Fix vector initialization 2021-04-30 10:42:53 -07:00
tt2468
51e7fdae9e SettingsDialog: Add debug setting hover text
Debug mode requires a restart of the websocket server by design.
However, to avoid interrupting connections, the websocket server is
not automatically restarted when the setting is changed
2021-04-30 10:27:41 -07:00
tt2468
df8ef87dc5 WebSocketServer: Add parts for availableRequests/availableEvents 2021-04-30 10:13:42 -07:00
tt2468
45367a7355 WebSocketProtocol: Session parameter stuff 2021-04-30 10:03:38 -07:00
tt2468
ffaac93ba6 WebSocketSession: Add mutex for operations which change session parameters 2021-04-30 08:56:08 -07:00
tt2468
4be9b995fb base: Use shared_ptr instead of explicit ref counts
Took a night of sleep but I realized how I could solve the
concurrency issues in a good way. Uses shared_ptr, where the map
always accounts for one reference to a session.
2021-04-30 08:45:34 -07:00
tt2468
32758198ab WebSocketSession: Add refcount
Working towards fixing concurrency issues. Todo:

- Wait for refcount to be 0 before deleting object
- Use .at() instead of operator[] to prevent recreating deleted
sessions
- There was a third thing. Dont remember what it was
2021-04-29 22:11:24 -07:00
tt2468
e151a9a8db base: Use Unix EOL 2021-04-29 21:13:34 -07:00