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)
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.
Pointers in calldata are theoretically already incremented,
so incrementing their refcount then decrementing them is
unnecessary in the context of the event system.
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.
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.
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.
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.