diff --git a/obs/qt-wrappers.cpp b/obs/qt-wrappers.cpp index 46afa1049..3965fa2a4 100644 --- a/obs/qt-wrappers.cpp +++ b/obs/qt-wrappers.cpp @@ -19,6 +19,7 @@ #include #include #include +#include #if !defined(_WIN32) && !defined(__APPLE__) #include @@ -77,3 +78,20 @@ uint32_t TranslateQtKeyboardEventModifiers(Qt::KeyboardModifiers mods) return obsModifiers; } + +QDataStream &operator<<(QDataStream &out, const OBSScene &scene) +{ + return out << QString(obs_source_get_name(obs_scene_get_source(scene))); +} + +QDataStream &operator>>(QDataStream &in, OBSScene &scene) +{ + QString sceneName; + + in >> sceneName; + + obs_source_t *source = obs_get_source_by_name(QT_TO_UTF8(sceneName)); + scene = obs_scene_from_source(source); + + return in; +} diff --git a/obs/qt-wrappers.hpp b/obs/qt-wrappers.hpp index 3240ebe46..22e4dfbd0 100644 --- a/obs/qt-wrappers.hpp +++ b/obs/qt-wrappers.hpp @@ -18,11 +18,12 @@ #pragma once #include -#include +#include #define QT_UTF8(str) QString::fromUtf8(str) #define QT_TO_UTF8(str) str.toUtf8().constData() +class QDataStream; class QWidget; struct gs_window; @@ -31,3 +32,6 @@ void OBSErrorBox(QWidget *parent, const char *msg, ...); void QTToGSWindow(WId windowId, gs_window &gswindow); uint32_t TranslateQtKeyboardEventModifiers(Qt::KeyboardModifiers mods); + +QDataStream &operator<<(QDataStream &out, const OBSScene &scene); +QDataStream &operator>>(QDataStream &in, OBSScene &scene); diff --git a/obs/window-basic-main.cpp b/obs/window-basic-main.cpp index b2a70f10f..9761b624e 100644 --- a/obs/window-basic-main.cpp +++ b/obs/window-basic-main.cpp @@ -133,6 +133,8 @@ OBSBasic::OBSBasic(QWidget *parent) qRegisterMetaType ("OBSSource"); qRegisterMetaType("obs_hotkey_id"); + qRegisterMetaTypeStreamOperators("OBSScene"); + ui->scenes->setAttribute(Qt::WA_MacShowFocusRect, false); ui->sources->setAttribute(Qt::WA_MacShowFocusRect, false);