Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 30 additions & 13 deletions frontend/dialogs/OBSAbout.cpp
Original file line number Diff line number Diff line change
@@ -1,14 +1,18 @@
#include "OBSAbout.hpp"

#include <widgets/OBSBasic.hpp>
#include <OBSApp.hpp>
#include <utility/RemoteTextThread.hpp>
#include <utility/platform.hpp>

#include <qt-wrappers.hpp>

#include <json11.hpp>

#include "moc_OBSAbout.cpp"

namespace {
std::string patronJson;
} // namespace
Comment thread
gxalpha marked this conversation as resolved.

using namespace json11;

extern bool steam;
Expand Down Expand Up @@ -61,30 +65,43 @@ OBSAbout::OBSAbout(QWidget *parent) : QDialog(parent), ui(new Ui::OBSAbout)
connect(ui->authors, &ClickableLabel::clicked, this, &OBSAbout::ShowAuthors);
connect(ui->license, &ClickableLabel::clicked, this, &OBSAbout::ShowLicense);

QPointer<OBSAbout> about(this);

OBSBasic *main = OBSBasic::Get();
if (main->patronJson.empty() && !main->patronJsonThread) {
if (patronJson.empty()) {
RemoteTextThread *thread =
new RemoteTextThread("https://obsproject.com/patreon/about-box.json", "application/json");
QObject::connect(thread, &RemoteTextThread::Result, main, &OBSBasic::UpdatePatronJson);
QObject::connect(thread, &RemoteTextThread::Result, this, &OBSAbout::ShowAbout);
main->patronJsonThread.reset(thread);
connect(thread, &RemoteTextThread::Result, this, &OBSAbout::updatePatronJson);
patronJsonThread.reset(thread);
thread->start();
} else {
ShowAbout();
}
}

void OBSAbout::ShowAbout()
OBSAbout::~OBSAbout()
{
if (patronJsonThread && patronJsonThread->isRunning()) {
patronJsonThread->wait();
}
}

void OBSAbout::updatePatronJson(const std::string &text, const std::string &error)
{
OBSBasic *main = OBSBasic::Get();
if (!error.empty()) {
return;
}

patronJson = text;

ShowAbout();
}

if (main->patronJson.empty())
void OBSAbout::ShowAbout()
{
if (patronJson.empty()) {
return;
}

std::string error;
Json json = Json::parse(main->patronJson, error);
Json json = Json::parse(patronJson, error);
const Json::array &patrons = json.array_items();
QString text;

Expand Down
6 changes: 6 additions & 0 deletions frontend/dialogs/OBSAbout.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,19 @@
class OBSAbout : public QDialog {
Q_OBJECT

private:
QScopedPointer<QThread> patronJsonThread;
Comment thread
PatTheMav marked this conversation as resolved.

public:
explicit OBSAbout(QWidget *parent = 0);
~OBSAbout();

std::unique_ptr<Ui::OBSAbout> ui;

private slots:
void ShowAbout();
void ShowAuthors();
void ShowLicense();

void updatePatronJson(const std::string &text, const std::string &error);
};
11 changes: 0 additions & 11 deletions frontend/widgets/OBSBasic.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1403,9 +1403,6 @@ void OBSBasic::applicationShutdown() noexcept
if (updateCheckThread && updateCheckThread->isRunning())
updateCheckThread->wait();

if (patronJsonThread && patronJsonThread->isRunning())
patronJsonThread->wait();

delete screenshotData;
delete previewProjectorSource;
delete previewProjectorMain;
Expand Down Expand Up @@ -2108,14 +2105,6 @@ OBSBasic *OBSBasic::Get()
return reinterpret_cast<OBSBasic *>(App()->GetMainWindow());
}

void OBSBasic::UpdatePatronJson(const std::string &text, const std::string &error)
{
if (!error.empty())
return;

patronJson = text;
}

void OBSBasic::SetDisplayAffinity(QWindow *window)
{
if (!SetDisplayAffinitySupported())
Expand Down
5 changes: 0 additions & 5 deletions frontend/widgets/OBSBasic.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -199,7 +199,6 @@ class OBSBasic : public OBSMainWindow {
Q_PROPERTY(QIcon audioProcessOutputIcon READ GetAudioProcessOutputIcon WRITE SetAudioProcessOutputIcon
DESIGNABLE true)

friend class OBSAbout;
friend class OBSBasicPreview;
friend class OBSBasicStatusBar;
friend class OBSBasicSourceSelect;
Expand Down Expand Up @@ -254,9 +253,6 @@ class OBSBasic : public OBSMainWindow {

ConfigFile activeConfiguration;

QScopedPointer<QThread> patronJsonThread;
std::string patronJson;

std::unique_ptr<Ui::OBSBasic> ui;

void OnEvent(enum obs_frontend_event event);
Expand Down Expand Up @@ -284,7 +280,6 @@ class OBSBasic : public OBSMainWindow {

public slots:
void close();
void UpdatePatronJson(const std::string &text, const std::string &error);
void UpdateEditMenu();
void applicationShutdown() noexcept;
void toggleMixerLayout();
Expand Down
Loading