Previously, we would detach threads that did not exit in a reasonable
time, meaning they'd continue running and potentially accessing data
that had been freed, causing us to crash.
With this change, we _dont_ detach the thread, and let the thread
destructor do as it pleases (which will be terminating).
Neither solution is clean - old solution would sometimes work, but this
should give us a better indicator of where we're doing things wrong.
Previously, the derived class (i.e. BttvLiveUpdates or SeventvEventAPI)
would have their destructor ran before BasicPubSubManager called
stop, meaning there was a time wherein messages could still flow
through, attempting to call `onMessage` on a pure virtual, causing a
crash.
* Remove unused `setAccountData` function
* Move PubSub out of TwitchIrcServer and into Application
* Add changelog entry
* fix: assert feedback
* Add PubSub::unlistenPrefix as per review suggestion
* Fix tests
* quit pubsub on exit
might conflict with exit removal, so can be reverted but this shows it's possible
* Don't manually call stop on clients, it's called when the connection is closed
* nit: rename `mainThread` to `thread`
* Join in a thread!!!!!!!!
* feat: c++ 20
* fix: c++ 20 deprecations
* fix(msvc): warnings
* chore: add changelog entry
* fix: formatting
* Update websocketpp to the `develop` branch
* Specify other template type in FlagsEnum != operator
* Remove the user of simple template ids in our websocketpp template class
Also standardizes the file a bit by using nested namespaces, using
pragma once
* fix: turn `MAGIC_MESSAGE_SUFFIX` into a `QString`
* hacky unhacky hacky const char hack
Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>