diff --git a/UI/qt-wrappers.cpp b/UI/qt-wrappers.cpp index 3a8966724..51c062b5a 100644 --- a/UI/qt-wrappers.cpp +++ b/UI/qt-wrappers.cpp @@ -207,6 +207,23 @@ QDataStream &operator>>(QDataStream &in, OBSScene &scene) return in; } +QDataStream &operator<<(QDataStream &out, const OBSSource &source) +{ + return out << QString(obs_source_get_uuid(source)); +} + +QDataStream &operator>>(QDataStream &in, OBSSource &source) +{ + QString uuid; + + in >> uuid; + + OBSSourceAutoRelease source_ = obs_get_source_by_uuid(QT_TO_UTF8(uuid)); + source = source_; + + return in; +} + void DeleteLayout(QLayout *layout) { if (!layout) diff --git a/UI/qt-wrappers.hpp b/UI/qt-wrappers.hpp index 33f013ac2..863ead68c 100644 --- a/UI/qt-wrappers.hpp +++ b/UI/qt-wrappers.hpp @@ -71,6 +71,8 @@ QDataStream &operator>>(QDataStream &in, std::vector> &signal_vec); QDataStream &operator<<(QDataStream &out, const OBSScene &scene); QDataStream &operator>>(QDataStream &in, OBSScene &scene); +QDataStream &operator<<(QDataStream &out, const OBSSource &source); +QDataStream &operator>>(QDataStream &in, OBSSource &source); QThread *CreateQThread(std::function func); diff --git a/UI/window-basic-main.cpp b/UI/window-basic-main.cpp index ed85d1a90..80466e0cc 100644 --- a/UI/window-basic-main.cpp +++ b/UI/window-basic-main.cpp @@ -344,6 +344,7 @@ OBSBasic::OBSBasic(QWidget *parent) qRegisterMetaTypeStreamOperators>>( "std::vector>"); qRegisterMetaTypeStreamOperators("OBSScene"); + qRegisterMetaTypeStreamOperators("OBSSource"); #endif ui->scenes->setAttribute(Qt::WA_MacShowFocusRect, false);