mirror of
https://github.com/obsproject/obs-studio.git
synced 2024-09-20 13:08:50 +02:00
08f5a7bd4d
YoutubeAuth::chat is a raw pointer that is uninitialized. Most of the time it doesn't matter, since the object it points to is created at the application start. However, in case of Wayland (Linux), CEF is not initialized (because it's not supported) and the chat object will never get created. This patch fixes crash on Wayland by initializing `chat` to `nullptr`. Co-authored-by: Roman Podoliaka <roman.podoliaka@gmail.com>
67 lines
1.5 KiB
C++
67 lines
1.5 KiB
C++
#pragma once
|
|
|
|
#include <QObject>
|
|
#include <QString>
|
|
#include <random>
|
|
#include <string>
|
|
|
|
#include "auth-oauth.hpp"
|
|
|
|
#ifdef BROWSER_AVAILABLE
|
|
#include "window-dock-browser.hpp"
|
|
#include "lineedit-autoresize.hpp"
|
|
#include <QHBoxLayout>
|
|
class YoutubeChatDock : public BrowserDock {
|
|
Q_OBJECT
|
|
|
|
private:
|
|
std::string apiChatId;
|
|
LineEditAutoResize *lineEdit;
|
|
QPushButton *sendButton;
|
|
QHBoxLayout *chatLayout;
|
|
|
|
public:
|
|
inline YoutubeChatDock(const QString &title) : BrowserDock(title) {}
|
|
void SetWidget(QCefWidget *widget_);
|
|
void SetApiChatId(const std::string &id);
|
|
|
|
private slots:
|
|
void SendChatMessage();
|
|
void ShowErrorMessage(const QString &error);
|
|
void EnableChatInput();
|
|
};
|
|
#endif
|
|
|
|
inline const std::vector<Auth::Def> youtubeServices = {
|
|
{"YouTube - RTMP", Auth::Type::OAuth_LinkedAccount, true, true},
|
|
{"YouTube - RTMPS", Auth::Type::OAuth_LinkedAccount, true, true},
|
|
{"YouTube - HLS", Auth::Type::OAuth_LinkedAccount, true, true}};
|
|
|
|
class YoutubeAuth : public OAuthStreamKey {
|
|
Q_OBJECT
|
|
|
|
bool uiLoaded = false;
|
|
std::string section;
|
|
|
|
#ifdef BROWSER_AVAILABLE
|
|
YoutubeChatDock *chat = nullptr;
|
|
#endif
|
|
|
|
virtual bool RetryLogin() override;
|
|
virtual void SaveInternal() override;
|
|
virtual bool LoadInternal() override;
|
|
virtual void LoadUI() override;
|
|
|
|
QString GenerateState();
|
|
|
|
public:
|
|
YoutubeAuth(const Def &d);
|
|
~YoutubeAuth();
|
|
|
|
void SetChatId(const QString &chat_id, const std::string &api_chat_id);
|
|
void ResetChat();
|
|
|
|
static std::shared_ptr<Auth> Login(QWidget *parent,
|
|
const std::string &service);
|
|
};
|