summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authortytan6522024-03-13 09:27:52 +0100
committertytan6522024-03-13 09:27:52 +0100
commit004376ba8bc73b0d1a4e7c3479f6eaa142b7015c (patch)
tree0f533f56a8299570e9f1edd3d20ad1121933de22
parentb86245171d05fb4399fb6ef26095126777d70435 (diff)
downloadaur-004376ba8bc73b0d1a4e7c3479f6eaa142b7015c.tar.gz
build: Update to 30.1.0
-rw-r--r--.SRCINFO12
-rw-r--r--0002-Use_system_uthash.patch50
-rw-r--r--0003-Fix_blank_browser_dock_titles.patch397
-rw-r--r--PKGBUILD10
-rw-r--r--bind_iface_eyeballed.patch169
5 files changed, 118 insertions, 520 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 76e5b19bfa6f..df39fa4502c7 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,7 +1,7 @@
pkgbase = obs-studio-tytan652
pkgdesc = Free and open source software for video recording and live streaming. With everything except service integrations. Plus V4L2 devices by paths, my bind interface PR, and sometimes backported fixes
- pkgver = 30.0.2
- pkgrel = 7
+ pkgver = 30.1.0
+ pkgrel = 1
url = https://github.com/obsproject/obs-studio
arch = x86_64
arch = aarch64
@@ -87,7 +87,7 @@ pkgbase = obs-studio-tytan652
optdepends = libdatachannel>=0.20: WHIP Support
optdepends = libajantv2>=17.0.1: AJA support
optdepends = decklink: Blackmagic Design DeckLink support
- provides = obs-studio=30.0.2
+ provides = obs-studio=30.1.0
provides = obs-vst
provides = obs-websocket
provides = obs-browser
@@ -98,7 +98,7 @@ pkgbase = obs-studio-tytan652
conflicts = obs-linuxbrowser
conflicts = libva-vdpau-driver
options = debug
- source = obs-studio::git+https://github.com/obsproject/obs-studio.git#tag=30.0.2
+ source = obs-studio::git+https://github.com/obsproject/obs-studio.git#tag=30.1.0
source = obs-browser::git+https://github.com/obsproject/obs-browser.git
source = obs-websocket::git+https://github.com/obsproject/obs-websocket.git
source = bind_iface_eyeballed.patch
@@ -109,10 +109,10 @@ pkgbase = obs-studio-tytan652
sha256sums = SKIP
sha256sums = SKIP
sha256sums = SKIP
- sha256sums = 23a0bd9f5e36d333b230ed8dfdfd06c3b4826187e3f858cde93200f5e0da2334
+ sha256sums = 91ec5b6bec66c6d85c1f88f7f5fbdbe4bdbb820be5c2e7828f328f570bfdc845
sha256sums = ee54b9c6f7e17fcc62c6afc094e65f18b2e97963c2fe92289b2b91972ac206e5
sha256sums = f4a56021a7f1c564f95b588d7c09b60a89efa2c1954c8a418cf6320b5a818542
- sha256sums = 874456110d17d2efe02f8a1f47f58c877922d8bdab6435df334b9e6460b26bf8
+ sha256sums = 82b14439697b5c5947117afa1b973bad7ddd9ee2f09e5d1ac56a96d10e01c6b1
sha256sums = a7149e1d9a07270132cf8085d52225ed3200a78ea943cbf52d64b1b8f293e117
pkgname = obs-studio-tytan652
diff --git a/0002-Use_system_uthash.patch b/0002-Use_system_uthash.patch
index eaa7db1da6b6..b0b620c792c6 100644
--- a/0002-Use_system_uthash.patch
+++ b/0002-Use_system_uthash.patch
@@ -1,4 +1,4 @@
-From e1e12d2acda6f511a5f70ed6b6e10d1b8c83708a Mon Sep 17 00:00:00 2001
+From a9b4aa58a08f0127878b8c396b7ddbb705211bfe Mon Sep 17 00:00:00 2001
From: tytan652 <tytan652@tytanium.xyz>
Date: Mon, 24 Jul 2023 10:52:05 +0200
Subject: [PATCH] deps,libobs: Replace uthash with prefix/system install
@@ -9,25 +9,24 @@ Subject: [PATCH] deps,libobs: Replace uthash with prefix/system install
deps/uthash/CMakeLists.txt | 8 -
deps/uthash/uthash/LICENSE | 21 -
deps/uthash/uthash/uthash.h | 1136 -----------------------------------
- libobs/CMakeLists.txt | 4 +-
+ libobs/CMakeLists.txt | 7 +-
libobs/cmake/legacy.cmake | 3 +-
libobs/util/uthash.h | 2 +-
- 8 files changed, 5 insertions(+), 1173 deletions(-)
+ 8 files changed, 5 insertions(+), 1176 deletions(-)
delete mode 100644 deps/uthash/.clang-format
delete mode 100644 deps/uthash/CMakeLists.txt
delete mode 100644 deps/uthash/uthash/LICENSE
delete mode 100644 deps/uthash/uthash/uthash.h
diff --git a/deps/CMakeLists.txt b/deps/CMakeLists.txt
-index d093e29df0883..8e4cb2d412320 100644
+index a408eaa1e8a93..f046aba690e22 100644
--- a/deps/CMakeLists.txt
+++ b/deps/CMakeLists.txt
-@@ -12,5 +12,4 @@ add_subdirectory(file-updater)
+@@ -11,4 +11,3 @@ add_subdirectory(libcaption)
+ add_subdirectory(media-playback)
add_subdirectory(obs-scripting)
add_subdirectory(opts-parser)
- add_subdirectory(libcaption)
-add_subdirectory(uthash)
- add_subdirectory(happy-eyeballs)
diff --git a/deps/uthash/.clang-format b/deps/uthash/.clang-format
deleted file mode 100644
index 6420a46881e05..0000000000000
@@ -39,7 +38,7 @@ index 6420a46881e05..0000000000000
-DisableFormat: true
diff --git a/deps/uthash/CMakeLists.txt b/deps/uthash/CMakeLists.txt
deleted file mode 100644
-index aecb0d74e49a5..0000000000000
+index c82ba4b543036..0000000000000
--- a/deps/uthash/CMakeLists.txt
+++ /dev/null
@@ -1,8 +0,0 @@
@@ -50,7 +49,7 @@ index aecb0d74e49a5..0000000000000
-
-target_sources(uthash INTERFACE uthash/uthash.h)
-
--set_target_properties(uthash PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR}")
+-target_include_directories(uthash INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}")
diff --git a/deps/uthash/uthash/LICENSE b/deps/uthash/uthash/LICENSE
deleted file mode 100644
index e75a243af9b99..0000000000000
@@ -1221,26 +1220,29 @@ index ac78fdab5a4f5..0000000000000
-
-#endif /* UTHASH_H */
diff --git a/libobs/CMakeLists.txt b/libobs/CMakeLists.txt
-index 46112abe71f9d..185a0b6560fac 100644
+index 1e2e02d28fa5b..ddf7de1139695 100644
--- a/libobs/CMakeLists.txt
+++ b/libobs/CMakeLists.txt
-@@ -16,6 +16,7 @@ add_library(OBS::libobs ALIAS libobs)
- find_package(Threads REQUIRED)
- find_package(FFmpeg REQUIRED avformat avutil swscale swresample OPTIONAL_COMPONENTS avcodec)
+@@ -23,6 +23,7 @@ find_package(
+ # cmake-format: on
+
find_package(ZLIB REQUIRED)
+find_package(Uthash REQUIRED)
if(ENABLE_UI)
- find_qt(COMPONENTS Core)
-@@ -23,7 +24,6 @@ endif()
+ find_package(Qt6 REQUIRED Core)
+@@ -33,10 +34,6 @@ if(NOT TARGET OBS::caption)
+ add_subdirectory("${CMAKE_SOURCE_DIR}/deps/libcaption" "${CMAKE_BINARY_DIR}/deps/libcaption")
+ endif()
- find_package(jansson REQUIRED)
- add_subdirectory("${CMAKE_SOURCE_DIR}/deps/libcaption" "${CMAKE_BINARY_DIR}/deps/libcaption")
--add_subdirectory("${CMAKE_SOURCE_DIR}/deps/uthash" "${CMAKE_BINARY_DIR}/deps/uthash")
+-if(NOT TARGET OBS::uthash)
+- add_subdirectory("${CMAKE_SOURCE_DIR}/deps/uthash" "${CMAKE_BINARY_DIR}/deps/uthash")
+-endif()
+-
+ add_library(libobs SHARED)
+ add_library(OBS::libobs ALIAS libobs)
- target_sources(
- libobs
-@@ -232,7 +232,6 @@ target_compile_definitions(
+@@ -250,7 +247,6 @@ target_compile_definitions(
target_link_libraries(
libobs
PRIVATE OBS::caption
@@ -1248,7 +1250,7 @@ index 46112abe71f9d..185a0b6560fac 100644
OBS::libobs-version
FFmpeg::avcodec
FFmpeg::avformat
-@@ -240,6 +239,7 @@ target_link_libraries(
+@@ -258,6 +254,7 @@ target_link_libraries(
FFmpeg::swscale
FFmpeg::swresample
jansson::jansson
@@ -1257,7 +1259,7 @@ index 46112abe71f9d..185a0b6560fac 100644
PUBLIC Threads::Threads)
diff --git a/libobs/cmake/legacy.cmake b/libobs/cmake/legacy.cmake
-index 5f13c4c0f04ab..81d82e747bfd9 100644
+index 8922c3e31e79e..5e92972e53c84 100644
--- a/libobs/cmake/legacy.cmake
+++ b/libobs/cmake/legacy.cmake
@@ -20,6 +20,7 @@ find_package(
@@ -1268,7 +1270,7 @@ index 5f13c4c0f04ab..81d82e747bfd9 100644
add_library(libobs SHARED)
add_library(OBS::libobs ALIAS libobs)
-@@ -252,8 +253,8 @@ target_link_libraries(
+@@ -254,8 +255,8 @@ target_link_libraries(
FFmpeg::swresample
Jansson::Jansson
OBS::caption
diff --git a/0003-Fix_blank_browser_dock_titles.patch b/0003-Fix_blank_browser_dock_titles.patch
deleted file mode 100644
index d841c6421421..000000000000
--- a/0003-Fix_blank_browser_dock_titles.patch
+++ /dev/null
@@ -1,397 +0,0 @@
-From db9719ebfe9ccf4de8ca35cff1de1331ef240c36 Mon Sep 17 00:00:00 2001
-From: Matt Gajownik <matt@obsproject.com>
-Date: Thu, 10 Aug 2023 18:31:19 +1000
-Subject: [PATCH 1/4] UI: Set browser dock title in constructor
-
-Works around a bug in Qt where setWindowTitle called on a native window
-that hasn't been initialised yet causes the title data to be lost,
-resulting in the window's title never being set.
----
- UI/auth-restream.cpp | 6 +++---
- UI/auth-twitch.cpp | 8 ++++----
- UI/auth-youtube.cpp | 3 +--
- UI/auth-youtube.hpp | 1 +
- UI/window-dock-browser.hpp | 4 ++++
- UI/window-dock.hpp | 4 ++++
- UI/window-extra-browsers.cpp | 2 +-
- 7 files changed, 18 insertions(+), 10 deletions(-)
-
-diff --git a/UI/auth-restream.cpp b/UI/auth-restream.cpp
-index 9188da118..bedc10c70 100644
---- a/UI/auth-restream.cpp
-+++ b/UI/auth-restream.cpp
-@@ -150,7 +150,7 @@ void RestreamAuth::LoadUI()
- QSize size = main->frameSize();
- QPoint pos = main->pos();
-
-- BrowserDock *chat = new BrowserDock();
-+ BrowserDock *chat = new BrowserDock(QTStr("Auth.Chat"));
- chat->setObjectName(RESTREAM_CHAT_DOCK_NAME);
- chat->resize(420, 600);
- chat->setMinimumSize(200, 300);
-@@ -166,7 +166,7 @@ void RestreamAuth::LoadUI()
-
- url = "https://restream.io/titles/embed";
-
-- BrowserDock *info = new BrowserDock();
-+ BrowserDock *info = new BrowserDock(QTStr("Auth.StreamInfo"));
- info->setObjectName(RESTREAM_INFO_DOCK_NAME);
- info->resize(410, 600);
- info->setMinimumSize(200, 150);
-@@ -182,7 +182,7 @@ void RestreamAuth::LoadUI()
-
- url = "https://restream.io/channel/embed";
-
-- BrowserDock *channels = new BrowserDock();
-+ BrowserDock *channels = new BrowserDock(QTStr("RestreamAuth.Channels"));
- channels->setObjectName(RESTREAM_CHANNELS_DOCK_NAME);
- channels->resize(410, 600);
- channels->setMinimumSize(410, 300);
-diff --git a/UI/auth-twitch.cpp b/UI/auth-twitch.cpp
-index 386a0e927..88e14e0be 100644
---- a/UI/auth-twitch.cpp
-+++ b/UI/auth-twitch.cpp
-@@ -251,7 +251,7 @@ void TwitchAuth::LoadUI()
- QSize size = main->frameSize();
- QPoint pos = main->pos();
-
-- BrowserDock *chat = new BrowserDock();
-+ BrowserDock *chat = new BrowserDock(QTStr("Auth.Chat"));
- chat->setObjectName(TWITCH_CHAT_DOCK_NAME);
- chat->resize(300, 600);
- chat->setMinimumSize(200, 300);
-@@ -340,7 +340,7 @@ void TwitchAuth::LoadSecondaryUIPanes()
- url += name;
- url += "/stream-manager/edit-stream-info";
-
-- BrowserDock *info = new BrowserDock();
-+ BrowserDock *info = new BrowserDock(QTStr("Auth.StreamInfo"));
- info->setObjectName(TWITCH_INFO_DOCK_NAME);
- info->resize(300, 650);
- info->setMinimumSize(200, 300);
-@@ -359,7 +359,7 @@ void TwitchAuth::LoadSecondaryUIPanes()
- url += name;
- url += "/dashboard/live/stats";
-
-- BrowserDock *stats = new BrowserDock();
-+ BrowserDock *stats = new BrowserDock(QTStr("TwitchAuth.Stats"));
- stats->setObjectName(TWITCH_STATS_DOCK_NAME);
- stats->resize(200, 250);
- stats->setMinimumSize(200, 150);
-@@ -379,7 +379,7 @@ void TwitchAuth::LoadSecondaryUIPanes()
- url += "/stream-manager/activity-feed";
- url += "?uuid=" + uuid;
-
-- BrowserDock *feed = new BrowserDock();
-+ BrowserDock *feed = new BrowserDock(QTStr("TwitchAuth.Feed"));
- feed->setObjectName(TWITCH_FEED_DOCK_NAME);
- feed->resize(300, 650);
- feed->setMinimumSize(200, 300);
-diff --git a/UI/auth-youtube.cpp b/UI/auth-youtube.cpp
-index 7783fa62d..906481959 100644
---- a/UI/auth-youtube.cpp
-+++ b/UI/auth-youtube.cpp
-@@ -154,11 +154,10 @@ void YoutubeAuth::LoadUI()
- QSize size = main->frameSize();
- QPoint pos = main->pos();
-
-- chat = new YoutubeChatDock();
-+ chat = new YoutubeChatDock(QTStr("Auth.Chat"));
- chat->setObjectName(YOUTUBE_CHAT_DOCK_NAME);
- chat->resize(300, 600);
- chat->setMinimumSize(200, 300);
-- chat->setWindowTitle(QTStr("Auth.Chat"));
- chat->setAllowedAreas(Qt::AllDockWidgetAreas);
-
- browser = cef->create_widget(chat, YOUTUBE_CHAT_PLACEHOLDER_URL,
-diff --git a/UI/auth-youtube.hpp b/UI/auth-youtube.hpp
-index ffe35c25c..5c5015def 100644
---- a/UI/auth-youtube.hpp
-+++ b/UI/auth-youtube.hpp
-@@ -21,6 +21,7 @@ private:
- QHBoxLayout *chatLayout;
-
- public:
-+ inline YoutubeChatDock(const QString &title) : BrowserDock(title) {}
- void SetWidget(QCefWidget *widget_);
- void SetApiChatId(const std::string &id);
-
-diff --git a/UI/window-dock-browser.hpp b/UI/window-dock-browser.hpp
-index 37583c200..717ff7787 100644
---- a/UI/window-dock-browser.hpp
-+++ b/UI/window-dock-browser.hpp
-@@ -10,6 +10,10 @@ extern QCefCookieManager *panel_cookies;
- class BrowserDock : public OBSDock {
- public:
- inline BrowserDock() : OBSDock() { setAttribute(Qt::WA_NativeWindow); }
-+ inline BrowserDock(const QString &title) : OBSDock(title)
-+ {
-+ setAttribute(Qt::WA_NativeWindow);
-+ }
-
- QScopedPointer<QCefWidget> cefWidget;
-
-diff --git a/UI/window-dock.hpp b/UI/window-dock.hpp
-index ccb1cf0ae..2d4062ec7 100644
---- a/UI/window-dock.hpp
-+++ b/UI/window-dock.hpp
-@@ -7,6 +7,10 @@ class OBSDock : public QDockWidget {
-
- public:
- inline OBSDock(QWidget *parent = nullptr) : QDockWidget(parent) {}
-+ inline OBSDock(const QString &title, QWidget *parent = nullptr)
-+ : QDockWidget(title, parent)
-+ {
-+ }
-
- virtual void closeEvent(QCloseEvent *event);
- };
-diff --git a/UI/window-extra-browsers.cpp b/UI/window-extra-browsers.cpp
-index a53f66106..d26138756 100644
---- a/UI/window-extra-browsers.cpp
-+++ b/UI/window-extra-browsers.cpp
-@@ -527,7 +527,7 @@ void OBSBasic::AddExtraBrowserDock(const QString &title, const QString &url,
- panel_version = obs_browser_qcef_version();
- }
-
-- BrowserDock *dock = new BrowserDock();
-+ BrowserDock *dock = new BrowserDock(title);
- QString bId(uuid.isEmpty() ? QUuid::createUuid().toString() : uuid);
- bId.replace(QRegularExpression("[{}-]"), "");
- dock->setProperty("uuid", bId);
---
-2.42.0
-
-
-From e30be01b053958f793f748c306a480bdb63e0e96 Mon Sep 17 00:00:00 2001
-From: Ryan Foster <ryan@obsproject.com>
-Date: Fri, 11 Aug 2023 16:27:55 -0400
-Subject: [PATCH 2/4] UI: Track custom browser dock names internally
-
-This is a workaround for a change in Qt behavior between 6.5.1 and
-6.5.2[1] which affected the outcome of attempting to set the window
-title of a window that is not currently open. In Qt 6.4.3 and 6.5.1, the
-window title would be set. In Qt 6.5.2, the window title will become
-NULL/empty.
-
-Instead of relying on Qt to have valid titles for custom browser dock
-windows that we manage, let's track the names ourselves.
-
-[1]: https://github.com/qt/qtbase/commit/c153066baaa88718ed45b68230d81285eb436d3d
----
- UI/window-basic-main.hpp | 1 +
- UI/window-extra-browsers.cpp | 15 ++++++++++-----
- 2 files changed, 11 insertions(+), 5 deletions(-)
-
-diff --git a/UI/window-basic-main.hpp b/UI/window-basic-main.hpp
-index 55abea8fe..20a02ca1c 100644
---- a/UI/window-basic-main.hpp
-+++ b/UI/window-basic-main.hpp
-@@ -560,6 +560,7 @@ private:
- QPointer<QAction> extraBrowserMenuDocksSeparator;
-
- QList<QSharedPointer<QDockWidget>> extraBrowserDocks;
-+ QStringList extraBrowserDockNames;
- QStringList extraBrowserDockTargets;
-
- void ClearExtraBrowserDocks();
-diff --git a/UI/window-extra-browsers.cpp b/UI/window-extra-browsers.cpp
-index d26138756..a8076f1b1 100644
---- a/UI/window-extra-browsers.cpp
-+++ b/UI/window-extra-browsers.cpp
-@@ -32,12 +32,9 @@ void ExtraBrowsersModel::Reset()
- OBSBasic *main = OBSBasic::Get();
-
- for (int i = 0; i < main->extraBrowserDocks.size(); i++) {
-- BrowserDock *dock = reinterpret_cast<BrowserDock *>(
-- main->extraBrowserDocks[i].data());
--
- Item item;
- item.prevIdx = i;
-- item.title = dock->windowTitle();
-+ item.title = main->extraBrowserDockNames[i];
- item.url = main->extraBrowserDockTargets[i];
- items.push_back(item);
- }
-@@ -180,6 +177,10 @@ void ExtraBrowsersModel::UpdateItem(Item &item)
- dock->setWindowTitle(item.title);
- dock->setObjectName(item.title + OBJ_NAME_SUFFIX);
-
-+ if (main->extraBrowserDockNames[idx] != item.title) {
-+ main->extraBrowserDockNames[idx] = item.title;
-+ }
-+
- if (main->extraBrowserDockTargets[idx] != item.url) {
- dock->cefWidget->setURL(QT_TO_UTF8(item.url));
- main->extraBrowserDockTargets[idx] = item.url;
-@@ -234,6 +235,7 @@ void ExtraBrowsersModel::Apply()
- for (int i = deleted.size() - 1; i >= 0; i--) {
- int idx = deleted[i];
- main->extraBrowserDockTargets.removeAt(idx);
-+ main->extraBrowserDockNames.removeAt(idx);
- main->extraBrowserDocks.removeAt(idx);
- }
-
-@@ -460,6 +462,7 @@ void OBSExtraBrowsers::on_apply_clicked()
- void OBSBasic::ClearExtraBrowserDocks()
- {
- extraBrowserDockTargets.clear();
-+ extraBrowserDockNames.clear();
- extraBrowserDocks.clear();
- }
-
-@@ -492,10 +495,11 @@ void OBSBasic::SaveExtraBrowserDocks()
- Json::array array;
- for (int i = 0; i < extraBrowserDocks.size(); i++) {
- QDockWidget *dock = extraBrowserDocks[i].data();
-+ QString title = extraBrowserDockNames[i];
- QString url = extraBrowserDockTargets[i];
- QString uuid = dock->property("uuid").toString();
- Json::object obj{
-- {"title", QT_TO_UTF8(dock->windowTitle())},
-+ {"title", QT_TO_UTF8(title)},
- {"url", QT_TO_UTF8(url)},
- {"uuid", QT_TO_UTF8(uuid)},
- };
-@@ -564,6 +568,7 @@ void OBSBasic::AddExtraBrowserDock(const QString &title, const QString &url,
-
- AddDockWidget(dock, Qt::RightDockWidgetArea, true);
- extraBrowserDocks.push_back(QSharedPointer<QDockWidget>(dock));
-+ extraBrowserDockNames.push_back(title);
- extraBrowserDockTargets.push_back(url);
-
- if (firstCreate) {
---
-2.42.0
-
-
-From 1a6858af32bd65fcbafb7927dcf8d988b80bd2e9 Mon Sep 17 00:00:00 2001
-From: Ryan Foster <ryan@obsproject.com>
-Date: Fri, 11 Aug 2023 16:29:57 -0400
-Subject: [PATCH 3/4] UI: Update text for custom browser dock menu items
- manually
-
-Instead of relying on the dock's having their window title already set
-for the menu items to be updated, let's just manually update the menu
-item text ourselves when updating the item.
----
- UI/window-extra-browsers.cpp | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/UI/window-extra-browsers.cpp b/UI/window-extra-browsers.cpp
-index a8076f1b1..64741e0a6 100644
---- a/UI/window-extra-browsers.cpp
-+++ b/UI/window-extra-browsers.cpp
-@@ -179,6 +179,7 @@ void ExtraBrowsersModel::UpdateItem(Item &item)
-
- if (main->extraBrowserDockNames[idx] != item.title) {
- main->extraBrowserDockNames[idx] = item.title;
-+ dock->toggleViewAction()->setText(item.title);
- }
-
- if (main->extraBrowserDockTargets[idx] != item.url) {
---
-2.42.0
-
-
-From 12ebcec223a8d117a475bf8d2969e615f5fd56f2 Mon Sep 17 00:00:00 2001
-From: Ryan Foster <ryan@obsproject.com>
-Date: Fri, 11 Aug 2023 16:47:29 -0400
-Subject: [PATCH 4/4] UI: Store dock titles in BrowserDock instead of relying
- on Qt
-
-Attempting to set the window title of a BrowserDock that is closed, then
-opening the BrowserDock, would show that BrowserDock with an incorrect
-title. We can handle this by overriding the showEvent of BrowserDock and
-manually setting the window title after the showEvent is called,
-hopefully ensuring that we are only setting the window title on a window
-that exists.
----
- UI/window-dock-browser.cpp | 6 ++++++
- UI/window-dock-browser.hpp | 9 ++++++++-
- UI/window-dock.cpp | 5 +++++
- UI/window-dock.hpp | 1 +
- UI/window-extra-browsers.cpp | 1 +
- 5 files changed, 21 insertions(+), 1 deletion(-)
-
-diff --git a/UI/window-dock-browser.cpp b/UI/window-dock-browser.cpp
-index 7ae55e77c..30e1de1bc 100644
---- a/UI/window-dock-browser.cpp
-+++ b/UI/window-dock-browser.cpp
-@@ -18,3 +18,9 @@ void BrowserDock::closeEvent(QCloseEvent *event)
- cefWidget->closeBrowser();
- }
- }
-+
-+void BrowserDock::showEvent(QShowEvent *event)
-+{
-+ OBSDock::showEvent(event);
-+ setWindowTitle(title);
-+}
-diff --git a/UI/window-dock-browser.hpp b/UI/window-dock-browser.hpp
-index 717ff7787..750ed42bd 100644
---- a/UI/window-dock-browser.hpp
-+++ b/UI/window-dock-browser.hpp
-@@ -8,10 +8,14 @@ extern QCef *cef;
- extern QCefCookieManager *panel_cookies;
-
- class BrowserDock : public OBSDock {
-+private:
-+ QString title;
-+
- public:
- inline BrowserDock() : OBSDock() { setAttribute(Qt::WA_NativeWindow); }
-- inline BrowserDock(const QString &title) : OBSDock(title)
-+ inline BrowserDock(const QString &title_) : OBSDock(title_)
- {
-+ title = title_;
- setAttribute(Qt::WA_NativeWindow);
- }
-
-@@ -23,5 +27,8 @@ public:
- cefWidget.reset(widget_);
- }
-
-+ inline void setTitle(const QString &title_) { title = title_; }
-+
- void closeEvent(QCloseEvent *event) override;
-+ void showEvent(QShowEvent *event) override;
- };
-diff --git a/UI/window-dock.cpp b/UI/window-dock.cpp
-index ed8e92860..3c3eed995 100644
---- a/UI/window-dock.cpp
-+++ b/UI/window-dock.cpp
-@@ -34,3 +34,8 @@ void OBSDock::closeEvent(QCloseEvent *event)
-
- QDockWidget::closeEvent(event);
- }
-+
-+void OBSDock::showEvent(QShowEvent *event)
-+{
-+ QDockWidget::showEvent(event);
-+}
-diff --git a/UI/window-dock.hpp b/UI/window-dock.hpp
-index 2d4062ec7..e73620a2b 100644
---- a/UI/window-dock.hpp
-+++ b/UI/window-dock.hpp
-@@ -13,4 +13,5 @@ public:
- }
-
- virtual void closeEvent(QCloseEvent *event);
-+ virtual void showEvent(QShowEvent *event);
- };
-diff --git a/UI/window-extra-browsers.cpp b/UI/window-extra-browsers.cpp
-index 64741e0a6..a7f593782 100644
---- a/UI/window-extra-browsers.cpp
-+++ b/UI/window-extra-browsers.cpp
-@@ -180,6 +180,7 @@ void ExtraBrowsersModel::UpdateItem(Item &item)
- if (main->extraBrowserDockNames[idx] != item.title) {
- main->extraBrowserDockNames[idx] = item.title;
- dock->toggleViewAction()->setText(item.title);
-+ dock->setTitle(item.title);
- }
-
- if (main->extraBrowserDockTargets[idx] != item.url) {
---
-2.42.0
-
diff --git a/PKGBUILD b/PKGBUILD
index 22c0ab6911c4..18006726d66c 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -1,8 +1,8 @@
# Maintainer: tytan652 <tytan652 at tytanium dot xyz>
pkgname=obs-studio-tytan652
-pkgver=30.0.2
-pkgrel=7
+pkgver=30.1.0
+pkgrel=1
pkgdesc="Free and open source software for video recording and live streaming. With everything except service integrations. Plus V4L2 devices by paths, my bind interface PR, and sometimes backported fixes"
arch=("x86_64" "aarch64")
url="https://github.com/obsproject/obs-studio"
@@ -122,10 +122,10 @@ sha256sums=(
"SKIP"
"SKIP"
"SKIP"
- "23a0bd9f5e36d333b230ed8dfdfd06c3b4826187e3f858cde93200f5e0da2334"
+ "91ec5b6bec66c6d85c1f88f7f5fbdbe4bdbb820be5c2e7828f328f570bfdc845"
"ee54b9c6f7e17fcc62c6afc094e65f18b2e97963c2fe92289b2b91972ac206e5"
"f4a56021a7f1c564f95b588d7c09b60a89efa2c1954c8a418cf6320b5a818542"
- "874456110d17d2efe02f8a1f47f58c877922d8bdab6435df334b9e6460b26bf8"
+ "82b14439697b5c5947117afa1b973bad7ddd9ee2f09e5d1ac56a96d10e01c6b1"
"a7149e1d9a07270132cf8085d52225ed3200a78ea943cbf52d64b1b8f293e117"
)
@@ -166,7 +166,7 @@ build() {
-DCALM_DEPRECATION=ON \
-Wno-dev
- sed -i "s|#define OBS_VERSION |#define OBS_VERSION \"$pkgver-tytan652-$pkgrel\" //|" build/config/obsconfig.h
+ sed -i "s|OBS_VERSION =|OBS_VERSION = \"$_pkgver-tytan652-$pkgrel\"; //|" build/libobs/obsversion.c
cmake --build build
}
diff --git a/bind_iface_eyeballed.patch b/bind_iface_eyeballed.patch
index f291161ec074..400d27ea2e7c 100644
--- a/bind_iface_eyeballed.patch
+++ b/bind_iface_eyeballed.patch
@@ -1,4 +1,4 @@
-From f1bf4babb6644edb60bf4850b20a41b5afa436d1 Mon Sep 17 00:00:00 2001
+From 0a1c4a3712d69e9aaa8d533b480b07abf3ec6d9e Mon Sep 17 00:00:00 2001
From: tytan652 <tytan652@tytanium.xyz>
Date: Thu, 14 Sep 2023 11:25:31 +0200
Subject: [PATCH 1/5] Revert "UI: Fix IP settings order"
@@ -8,10 +8,10 @@ Subject: [PATCH 1/5] Revert "UI: Fix IP settings order"
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/UI/forms/OBSBasicSettings.ui b/UI/forms/OBSBasicSettings.ui
-index 870eea85a..14331408e 100644
+index c7c9119177d48..d3ffae94a210f 100644
--- a/UI/forms/OBSBasicSettings.ui
+++ b/UI/forms/OBSBasicSettings.ui
-@@ -7563,30 +7563,30 @@
+@@ -7638,30 +7638,30 @@
</widget>
</item>
<item row="1" column="0">
@@ -50,11 +50,8 @@ index 870eea85a..14331408e 100644
</item>
<item row="4" column="1">
<widget class="QCheckBox" name="enableNewSocketLoop">
---
-2.42.1
-
-From 526aa47027982782fefae1799274a514fc55f8f8 Mon Sep 17 00:00:00 2001
+From b089076079ea0db434650dd7eae56caec7cba6ae Mon Sep 17 00:00:00 2001
From: tytan652 <tytan652@tytanium.xyz>
Date: Thu, 14 Sep 2023 11:25:50 +0200
Subject: [PATCH 2/5] Revert "UI: Add IPv4 / IPv6 selection setting"
@@ -70,10 +67,10 @@ This reverts commit 488a96bc4b0c27749b1ef143ed76a71c1830fe0a.
6 files changed, 5 insertions(+), 48 deletions(-)
diff --git a/UI/data/locale/en-US.ini b/UI/data/locale/en-US.ini
-index cb35ba2b0..f1dfd16eb 100644
+index 9c3f387779133..a1967ea126bf0 100644
--- a/UI/data/locale/en-US.ini
+++ b/UI/data/locale/en-US.ini
-@@ -1245,7 +1245,6 @@ Basic.Settings.Advanced.StreamDelay.MemoryUsage="Estimated Memory Usage: %1 MB"
+@@ -1247,7 +1247,6 @@ Basic.Settings.Advanced.StreamDelay.MemoryUsage="Estimated Memory Usage: %1 MB"
Basic.Settings.Advanced.Network="Network"
Basic.Settings.Advanced.Network.Disabled="The currently selected streaming protocol does not support changing network settings."
Basic.Settings.Advanced.Network.BindToIP="Bind to IP"
@@ -82,10 +79,10 @@ index cb35ba2b0..f1dfd16eb 100644
Basic.Settings.Advanced.Network.EnableLowLatencyMode="Enable TCP pacing"
Basic.Settings.Advanced.Network.TCPPacing.Tooltip="Attempts to make RTMP output friendlier to other latency sensitive applications on the network by regulating the rate of transmission.\nIt may increase the risk of dropped frames on unstable connections."
diff --git a/UI/forms/OBSBasicSettings.ui b/UI/forms/OBSBasicSettings.ui
-index 14331408e..bd18c168d 100644
+index d3ffae94a210f..6f886811b2e6c 100644
--- a/UI/forms/OBSBasicSettings.ui
+++ b/UI/forms/OBSBasicSettings.ui
-@@ -7575,27 +7575,14 @@
+@@ -7650,27 +7650,14 @@
<item row="1" column="1">
<widget class="QComboBox" name="bindToIP"/>
</item>
@@ -115,7 +112,7 @@ index 14331408e..bd18c168d 100644
<widget class="QCheckBox" name="enableLowLatencyMode">
<property name="enabled">
<bool>false</bool>
-@@ -7605,7 +7592,7 @@
+@@ -7680,7 +7667,7 @@
</property>
</widget>
</item>
@@ -124,7 +121,7 @@ index 14331408e..bd18c168d 100644
<spacer name="horizontalSpacer_7">
<property name="orientation">
<enum>Qt::Horizontal</enum>
-@@ -7618,7 +7605,7 @@
+@@ -7693,7 +7680,7 @@
</property>
</spacer>
</item>
@@ -134,7 +131,7 @@ index 14331408e..bd18c168d 100644
<property name="toolTip">
<string>Basic.Settings.Output.DynamicBitrate.TT</string>
diff --git a/UI/window-basic-auto-config-test.cpp b/UI/window-basic-auto-config-test.cpp
-index 7d7c4278e..45bf800b0 100644
+index 7d7c4278ede57..45bf800b0483f 100644
--- a/UI/window-basic-auto-config-test.cpp
+++ b/UI/window-basic-auto-config-test.cpp
@@ -249,10 +249,6 @@ void AutoConfigTestPage::TestBandwidthThread()
@@ -149,10 +146,10 @@ index 7d7c4278e..45bf800b0 100644
/* determine which servers to test */
diff --git a/UI/window-basic-main-outputs.cpp b/UI/window-basic-main-outputs.cpp
-index c17b0d744..fa2a1e2f3 100644
+index e70a3d4adc105..b604aae7358ab 100644
--- a/UI/window-basic-main-outputs.cpp
+++ b/UI/window-basic-main-outputs.cpp
-@@ -1206,8 +1206,6 @@ bool SimpleOutput::StartStreaming(obs_service_t *service)
+@@ -1208,8 +1208,6 @@ bool SimpleOutput::StartStreaming(obs_service_t *service)
config_get_bool(main->Config(), "Output", "DelayPreserve");
const char *bindIP =
config_get_string(main->Config(), "Output", "BindIP");
@@ -161,7 +158,7 @@ index c17b0d744..fa2a1e2f3 100644
#ifdef _WIN32
bool enableNewSocketLoop = config_get_bool(main->Config(), "Output",
"NewSocketLoopEnable");
-@@ -1219,7 +1217,6 @@ bool SimpleOutput::StartStreaming(obs_service_t *service)
+@@ -1221,7 +1219,6 @@ bool SimpleOutput::StartStreaming(obs_service_t *service)
OBSDataAutoRelease settings = obs_data_create();
obs_data_set_string(settings, "bind_ip", bindIP);
@@ -169,7 +166,7 @@ index c17b0d744..fa2a1e2f3 100644
#ifdef _WIN32
obs_data_set_bool(settings, "new_socket_loop_enabled",
enableNewSocketLoop);
-@@ -2166,8 +2163,6 @@ bool AdvancedOutput::StartStreaming(obs_service_t *service)
+@@ -2258,8 +2255,6 @@ bool AdvancedOutput::StartStreaming(obs_service_t *service)
config_get_bool(main->Config(), "Output", "DelayPreserve");
const char *bindIP =
config_get_string(main->Config(), "Output", "BindIP");
@@ -178,7 +175,7 @@ index c17b0d744..fa2a1e2f3 100644
#ifdef _WIN32
bool enableNewSocketLoop = config_get_bool(main->Config(), "Output",
"NewSocketLoopEnable");
-@@ -2179,7 +2174,6 @@ bool AdvancedOutput::StartStreaming(obs_service_t *service)
+@@ -2280,7 +2275,6 @@ bool AdvancedOutput::StartStreaming(obs_service_t *service)
OBSDataAutoRelease settings = obs_data_create();
obs_data_set_string(settings, "bind_ip", bindIP);
@@ -187,10 +184,10 @@ index c17b0d744..fa2a1e2f3 100644
obs_data_set_bool(settings, "new_socket_loop_enabled",
enableNewSocketLoop);
diff --git a/UI/window-basic-main.cpp b/UI/window-basic-main.cpp
-index 01e58f75b..70cd03083 100644
+index bcebcf363fcb3..008e59ac9438f 100644
--- a/UI/window-basic-main.cpp
+++ b/UI/window-basic-main.cpp
-@@ -1681,8 +1681,6 @@ bool OBSBasic::InitBasicConfigDefaults()
+@@ -1717,8 +1717,6 @@ bool OBSBasic::InitBasicConfigDefaults()
config_set_default_uint(basicConfig, "Output", "MaxRetries", 25);
config_set_default_string(basicConfig, "Output", "BindIP", "default");
@@ -200,10 +197,10 @@ index 01e58f75b..70cd03083 100644
false);
config_set_default_bool(basicConfig, "Output", "LowLatencyEnable",
diff --git a/UI/window-basic-settings.cpp b/UI/window-basic-settings.cpp
-index b1e6bd6fb..80c3f63a4 100644
+index 5aa1cf6583993..9314b2da4918f 100644
--- a/UI/window-basic-settings.cpp
+++ b/UI/window-basic-settings.cpp
-@@ -562,7 +562,6 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent)
+@@ -568,7 +568,6 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent)
HookWidget(ui->processPriority, COMBO_CHANGED, ADV_CHANGED);
HookWidget(ui->confirmOnExit, CHECK_CHANGED, ADV_CHANGED);
HookWidget(ui->bindToIP, COMBO_CHANGED, ADV_CHANGED);
@@ -211,7 +208,7 @@ index b1e6bd6fb..80c3f63a4 100644
HookWidget(ui->enableNewSocketLoop, CHECK_CHANGED, ADV_CHANGED);
HookWidget(ui->enableLowLatencyMode, CHECK_CHANGED, ADV_CHANGED);
HookWidget(ui->hotkeyFocusType, COMBO_CHANGED, ADV_CHANGED);
-@@ -831,17 +830,6 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent)
+@@ -866,17 +865,6 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent)
ui->bindToIP->addItem(QT_UTF8(name), val);
}
@@ -229,7 +226,7 @@ index b1e6bd6fb..80c3f63a4 100644
obs_properties_destroy(ppts);
InitStreamPage();
-@@ -2840,8 +2828,7 @@ void OBSBasicSettings::LoadAdvancedSettings()
+@@ -2902,8 +2890,7 @@ void OBSBasicSettings::LoadAdvancedSettings()
App()->GlobalConfig(), "General", "HotkeyFocusType");
bool dynBitrate =
config_get_bool(main->Config(), "Output", "DynamicBitrate");
@@ -239,7 +236,7 @@ index b1e6bd6fb..80c3f63a4 100644
bool confirmOnExit =
config_get_bool(GetGlobalConfig(), "General", "ConfirmOnExit");
-@@ -2881,7 +2868,6 @@ void OBSBasicSettings::LoadAdvancedSettings()
+@@ -2943,7 +2930,6 @@ void OBSBasicSettings::LoadAdvancedSettings()
ui->sdrWhiteLevel->setValue(sdrWhiteLevel);
ui->hdrNominalPeakLevel->setValue(hdrNominalPeakLevel);
@@ -247,7 +244,7 @@ index b1e6bd6fb..80c3f63a4 100644
if (!SetComboByValue(ui->bindToIP, bindIP))
SetInvalidValue(ui->bindToIP, bindIP, bindIP);
-@@ -3615,7 +3601,6 @@ void OBSBasicSettings::SaveAdvancedSettings()
+@@ -3678,7 +3664,6 @@ void OBSBasicSettings::SaveAdvancedSettings()
SaveSpinBox(ui->reconnectRetryDelay, "Output", "RetryDelay");
SaveSpinBox(ui->reconnectMaxRetries, "Output", "MaxRetries");
SaveComboData(ui->bindToIP, "Output", "BindIP");
@@ -255,7 +252,7 @@ index b1e6bd6fb..80c3f63a4 100644
SaveCheckBox(ui->autoRemux, "Video", "AutoRemux");
SaveCheckBox(ui->dynBitrate, "Output", "DynamicBitrate");
-@@ -6166,8 +6151,6 @@ void OBSBasicSettings::UpdateAdvNetworkGroup()
+@@ -6243,8 +6228,6 @@ void OBSBasicSettings::UpdateAdvNetworkGroup()
ui->bindToIPLabel->setVisible(enabled);
ui->bindToIP->setVisible(enabled);
ui->dynBitrate->setVisible(enabled);
@@ -264,11 +261,8 @@ index b1e6bd6fb..80c3f63a4 100644
#ifdef _WIN32
ui->enableNewSocketLoop->setVisible(enabled);
ui->enableLowLatencyMode->setVisible(enabled);
---
-2.42.1
-
-From dda9f089ef93971d48a309a2c88726d837ffc89c Mon Sep 17 00:00:00 2001
+From d0880abc09b9dded5195de613e2522a8daf25ba6 Mon Sep 17 00:00:00 2001
From: tytan652 <tytan652@tytanium.xyz>
Date: Thu, 11 Feb 2021 14:29:08 +0100
Subject: [PATCH 3/5] happy-eyeballs,librtmp: Add interface binding for Linux
@@ -281,7 +275,7 @@ Subject: [PATCH 3/5] happy-eyeballs,librtmp: Add interface binding for Linux
4 files changed, 51 insertions(+), 2 deletions(-)
diff --git a/deps/happy-eyeballs/happy-eyeballs.c b/deps/happy-eyeballs/happy-eyeballs.c
-index 0ed15376b..3a3828743 100644
+index 0ed15376b0b69..3a3828743ddca 100644
--- a/deps/happy-eyeballs/happy-eyeballs.c
+++ b/deps/happy-eyeballs/happy-eyeballs.c
@@ -101,12 +101,22 @@ struct happy_eyeballs_ctx {
@@ -356,7 +350,7 @@ index 0ed15376b..3a3828743 100644
socklen_t addr_len,
struct sockaddr_storage *addr_storage)
diff --git a/deps/happy-eyeballs/happy-eyeballs.h b/deps/happy-eyeballs/happy-eyeballs.h
-index 3ef62e2de..b939868db 100644
+index 3ef62e2de8e9e..b939868dba72e 100644
--- a/deps/happy-eyeballs/happy-eyeballs.h
+++ b/deps/happy-eyeballs/happy-eyeballs.h
@@ -82,6 +82,16 @@ int happy_eyeballs_create(struct happy_eyeballs_ctx **context);
@@ -377,7 +371,7 @@ index 3ef62e2de..b939868db 100644
* Optionally set the interface address. You may pass 0 and NULL for these
* parameters, respectively, to clear this setting. This must be called before
diff --git a/plugins/obs-outputs/librtmp/rtmp.c b/plugins/obs-outputs/librtmp/rtmp.c
-index cfc7288a0..ed844243e 100644
+index 014a594d7fd94..2cf97d7845e9a 100644
--- a/plugins/obs-outputs/librtmp/rtmp.c
+++ b/plugins/obs-outputs/librtmp/rtmp.c
@@ -1063,6 +1063,9 @@ RTMP_Connect(RTMP *r, RTMPPacket *cp)
@@ -391,7 +385,7 @@ index cfc7288a0..ed844243e 100644
happy_eyeballs_set_bind_addr(happy_ctx, r->m_bindIP.addrLen, &r->m_bindIP.addr);
diff --git a/plugins/obs-outputs/librtmp/rtmp.h b/plugins/obs-outputs/librtmp/rtmp.h
-index d1cddd412..a1fd60550 100644
+index d1cddd412c3c2..a1fd605504d3f 100644
--- a/plugins/obs-outputs/librtmp/rtmp.h
+++ b/plugins/obs-outputs/librtmp/rtmp.h
@@ -421,6 +421,7 @@ extern "C"
@@ -402,11 +396,8 @@ index d1cddd412..a1fd60550 100644
RTMP_BINDINFO m_bindIP;
uint8_t m_bSendChunkSizeInfo;
---
-2.42.1
-
-From 73812df599e626a93f5c56d3fab7e1affd5297c0 Mon Sep 17 00:00:00 2001
+From 2d7f060b9181d38edddd3441489e1d7e3867d98d Mon Sep 17 00:00:00 2001
From: tytan652 <tytan652@tytanium.xyz>
Date: Thu, 11 Feb 2021 14:47:45 +0100
Subject: [PATCH 4/5] obs-outputs: Add RTMP iface binding for Linux
@@ -419,7 +410,7 @@ Subject: [PATCH 4/5] obs-outputs: Add RTMP iface binding for Linux
4 files changed, 83 insertions(+)
diff --git a/plugins/obs-outputs/net-if.c b/plugins/obs-outputs/net-if.c
-index 6ffb2679a..ae89ffed4 100644
+index 6ffb2679a9a87..ae89ffed46ef1 100644
--- a/plugins/obs-outputs/net-if.c
+++ b/plugins/obs-outputs/net-if.c
@@ -154,6 +154,38 @@ static inline bool is_loopback(struct ifaddrs *ifa)
@@ -462,7 +453,7 @@ index 6ffb2679a..ae89ffed4 100644
{
struct ifaddrs *ifaddr, *ifa;
diff --git a/plugins/obs-outputs/net-if.h b/plugins/obs-outputs/net-if.h
-index fe30eb7f2..68a334d4e 100644
+index fe30eb7f23b56..68a334d4e31e9 100644
--- a/plugins/obs-outputs/net-if.h
+++ b/plugins/obs-outputs/net-if.h
@@ -53,6 +53,21 @@
@@ -488,7 +479,7 @@ index fe30eb7f2..68a334d4e 100644
char *name;
char *addr;
diff --git a/plugins/obs-outputs/rtmp-stream.c b/plugins/obs-outputs/rtmp-stream.c
-index dab8cdd27..654720c7c 100644
+index ac50535db4be8..24084b07f79ba 100644
--- a/plugins/obs-outputs/rtmp-stream.c
+++ b/plugins/obs-outputs/rtmp-stream.c
@@ -126,6 +126,7 @@ static void rtmp_stream_destroy(void *data)
@@ -535,7 +526,7 @@ index dab8cdd27..654720c7c 100644
bind_ip = obs_data_get_string(settings, OPT_BIND_IP);
dstr_copy(&stream->bind_ip, bind_ip);
-@@ -1740,6 +1756,9 @@ static obs_properties_t *rtmp_stream_properties(void *unused)
+@@ -1741,6 +1757,9 @@ static obs_properties_t *rtmp_stream_properties(void *unused)
UNUSED_PARAMETER(unused);
obs_properties_t *props = obs_properties_create();
@@ -545,7 +536,7 @@ index dab8cdd27..654720c7c 100644
struct netif_saddr_data addrs = {0};
obs_property_t *p;
-@@ -1747,6 +1766,21 @@ static obs_properties_t *rtmp_stream_properties(void *unused)
+@@ -1748,6 +1767,21 @@ static obs_properties_t *rtmp_stream_properties(void *unused)
obs_module_text("RTMPStream.DropThreshold"),
200, 10000, 100);
obs_property_int_set_suffix(p, " ms");
@@ -568,7 +559,7 @@ index dab8cdd27..654720c7c 100644
p = obs_properties_add_list(props, OPT_IP_FAMILY,
obs_module_text("IPFamily"),
diff --git a/plugins/obs-outputs/rtmp-stream.h b/plugins/obs-outputs/rtmp-stream.h
-index c570ccb77..9b81ccef2 100644
+index 29912e5014cc0..2b7ddb712032e 100644
--- a/plugins/obs-outputs/rtmp-stream.h
+++ b/plugins/obs-outputs/rtmp-stream.h
@@ -27,6 +27,7 @@
@@ -587,30 +578,27 @@ index c570ccb77..9b81ccef2 100644
struct dstr bind_ip;
socklen_t addrlen_hint; /* hint IPv4 vs IPv6 */
---
-2.42.1
-
-From 006b2f8300154cc8fbf6688148049dc74b39d00e Mon Sep 17 00:00:00 2001
+From d04fb679b9beaed5db5b8e87d69d4ca8f674cb47 Mon Sep 17 00:00:00 2001
From: tytan652 <tytan652@tytanium.xyz>
Date: Thu, 11 Feb 2021 14:51:42 +0100
Subject: [PATCH 5/5] UI: Add interface binding property for Linux
---
UI/data/locale/en-US.ini | 1 +
- UI/forms/OBSBasicSettings.ui | 24 ++++++--
+ UI/forms/OBSBasicSettings.ui | 24 +++++--
UI/window-basic-auto-config-test.cpp | 3 +
UI/window-basic-main-outputs.cpp | 6 ++
UI/window-basic-main.cpp | 2 +
- UI/window-basic-settings.cpp | 91 +++++++++++++++++++++++++++-
+ UI/window-basic-settings.cpp | 93 +++++++++++++++++++++++++++-
UI/window-basic-settings.hpp | 3 +
- 7 files changed, 123 insertions(+), 7 deletions(-)
+ 7 files changed, 125 insertions(+), 7 deletions(-)
diff --git a/UI/data/locale/en-US.ini b/UI/data/locale/en-US.ini
-index f1dfd16eb..6a7e21362 100644
+index a1967ea126bf0..cc35a640bcf90 100644
--- a/UI/data/locale/en-US.ini
+++ b/UI/data/locale/en-US.ini
-@@ -1244,6 +1244,7 @@ Basic.Settings.Advanced.StreamDelay.Preserve="Preserve cutoff point (increase de
+@@ -1246,6 +1246,7 @@ Basic.Settings.Advanced.StreamDelay.Preserve="Preserve cutoff point (increase de
Basic.Settings.Advanced.StreamDelay.MemoryUsage="Estimated Memory Usage: %1 MB"
Basic.Settings.Advanced.Network="Network"
Basic.Settings.Advanced.Network.Disabled="The currently selected streaming protocol does not support changing network settings."
@@ -619,10 +607,10 @@ index f1dfd16eb..6a7e21362 100644
Basic.Settings.Advanced.Network.EnableNewSocketLoop="Enable network optimizations"
Basic.Settings.Advanced.Network.EnableLowLatencyMode="Enable TCP pacing"
diff --git a/UI/forms/OBSBasicSettings.ui b/UI/forms/OBSBasicSettings.ui
-index bd18c168d..98dd5d486 100644
+index 6f886811b2e6c..8378d174300a2 100644
--- a/UI/forms/OBSBasicSettings.ui
+++ b/UI/forms/OBSBasicSettings.ui
-@@ -7563,6 +7563,19 @@
+@@ -7638,6 +7638,19 @@
</widget>
</item>
<item row="1" column="0">
@@ -642,7 +630,7 @@ index bd18c168d..98dd5d486 100644
<widget class="QLabel" name="bindToIPLabel">
<property name="text">
<string>Basic.Settings.Advanced.Network.BindToIP</string>
-@@ -7572,17 +7585,17 @@
+@@ -7647,17 +7660,17 @@
</property>
</widget>
</item>
@@ -663,7 +651,7 @@ index bd18c168d..98dd5d486 100644
<widget class="QCheckBox" name="enableLowLatencyMode">
<property name="enabled">
<bool>false</bool>
-@@ -7592,7 +7605,7 @@
+@@ -7667,7 +7680,7 @@
</property>
</widget>
</item>
@@ -672,7 +660,7 @@ index bd18c168d..98dd5d486 100644
<spacer name="horizontalSpacer_7">
<property name="orientation">
<enum>Qt::Horizontal</enum>
-@@ -7605,7 +7618,7 @@
+@@ -7680,7 +7693,7 @@
</property>
</spacer>
</item>
@@ -681,7 +669,7 @@ index bd18c168d..98dd5d486 100644
<widget class="QCheckBox" name="dynBitrate">
<property name="toolTip">
<string>Basic.Settings.Output.DynamicBitrate.TT</string>
-@@ -7934,6 +7947,7 @@
+@@ -8015,6 +8028,7 @@
<tabstop>reconnectRetryDelay</tabstop>
<tabstop>reconnectMaxRetries</tabstop>
<tabstop>bindToIP</tabstop>
@@ -690,7 +678,7 @@ index bd18c168d..98dd5d486 100644
<tabstop>enableNewSocketLoop</tabstop>
<tabstop>enableLowLatencyMode</tabstop>
diff --git a/UI/window-basic-auto-config-test.cpp b/UI/window-basic-auto-config-test.cpp
-index 45bf800b0..a7a87ab40 100644
+index 45bf800b0483f..a7a87ab409b95 100644
--- a/UI/window-basic-auto-config-test.cpp
+++ b/UI/window-basic-auto-config-test.cpp
@@ -245,6 +245,9 @@ void AutoConfigTestPage::TestBandwidthThread()
@@ -704,10 +692,10 @@ index 45bf800b0..a7a87ab40 100644
config_get_string(main->Config(), "Output", "BindIP");
obs_data_set_string(output_settings, "bind_ip", bind_ip);
diff --git a/UI/window-basic-main-outputs.cpp b/UI/window-basic-main-outputs.cpp
-index fa2a1e2f3..d02dbd65d 100644
+index b604aae7358ab..d63292dc02905 100644
--- a/UI/window-basic-main-outputs.cpp
+++ b/UI/window-basic-main-outputs.cpp
-@@ -1204,6 +1204,8 @@ bool SimpleOutput::StartStreaming(obs_service_t *service)
+@@ -1206,6 +1206,8 @@ bool SimpleOutput::StartStreaming(obs_service_t *service)
int delaySec = config_get_int(main->Config(), "Output", "DelaySec");
bool preserveDelay =
config_get_bool(main->Config(), "Output", "DelayPreserve");
@@ -716,7 +704,7 @@ index fa2a1e2f3..d02dbd65d 100644
const char *bindIP =
config_get_string(main->Config(), "Output", "BindIP");
#ifdef _WIN32
-@@ -1216,6 +1218,7 @@ bool SimpleOutput::StartStreaming(obs_service_t *service)
+@@ -1218,6 +1220,7 @@ bool SimpleOutput::StartStreaming(obs_service_t *service)
config_get_bool(main->Config(), "Output", "DynamicBitrate");
OBSDataAutoRelease settings = obs_data_create();
@@ -724,7 +712,7 @@ index fa2a1e2f3..d02dbd65d 100644
obs_data_set_string(settings, "bind_ip", bindIP);
#ifdef _WIN32
obs_data_set_bool(settings, "new_socket_loop_enabled",
-@@ -2161,6 +2164,8 @@ bool AdvancedOutput::StartStreaming(obs_service_t *service)
+@@ -2253,6 +2256,8 @@ bool AdvancedOutput::StartStreaming(obs_service_t *service)
int delaySec = config_get_int(main->Config(), "Output", "DelaySec");
bool preserveDelay =
config_get_bool(main->Config(), "Output", "DelayPreserve");
@@ -733,8 +721,8 @@ index fa2a1e2f3..d02dbd65d 100644
const char *bindIP =
config_get_string(main->Config(), "Output", "BindIP");
#ifdef _WIN32
-@@ -2173,6 +2178,7 @@ bool AdvancedOutput::StartStreaming(obs_service_t *service)
- config_get_bool(main->Config(), "Output", "DynamicBitrate");
+@@ -2274,6 +2279,7 @@ bool AdvancedOutput::StartStreaming(obs_service_t *service)
+ }
OBSDataAutoRelease settings = obs_data_create();
+ obs_data_set_string(settings, "bind_interface", bindInterface);
@@ -742,10 +730,10 @@ index fa2a1e2f3..d02dbd65d 100644
#ifdef _WIN32
obs_data_set_bool(settings, "new_socket_loop_enabled",
diff --git a/UI/window-basic-main.cpp b/UI/window-basic-main.cpp
-index 70cd03083..50296a5d6 100644
+index 008e59ac9438f..46cb2e797b27e 100644
--- a/UI/window-basic-main.cpp
+++ b/UI/window-basic-main.cpp
-@@ -1680,6 +1680,8 @@ bool OBSBasic::InitBasicConfigDefaults()
+@@ -1716,6 +1716,8 @@ bool OBSBasic::InitBasicConfigDefaults()
config_set_default_uint(basicConfig, "Output", "RetryDelay", 2);
config_set_default_uint(basicConfig, "Output", "MaxRetries", 25);
@@ -755,10 +743,10 @@ index 70cd03083..50296a5d6 100644
config_set_default_bool(basicConfig, "Output", "NewSocketLoopEnable",
false);
diff --git a/UI/window-basic-settings.cpp b/UI/window-basic-settings.cpp
-index 80c3f63a4..42c832680 100644
+index 9314b2da4918f..15ca97c09edb9 100644
--- a/UI/window-basic-settings.cpp
+++ b/UI/window-basic-settings.cpp
-@@ -561,6 +561,9 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent)
+@@ -567,6 +567,9 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent)
HookWidget(ui->reconnectMaxRetries, SCROLL_CHANGED, ADV_CHANGED);
HookWidget(ui->processPriority, COMBO_CHANGED, ADV_CHANGED);
HookWidget(ui->confirmOnExit, CHECK_CHANGED, ADV_CHANGED);
@@ -768,7 +756,7 @@ index 80c3f63a4..42c832680 100644
HookWidget(ui->bindToIP, COMBO_CHANGED, ADV_CHANGED);
HookWidget(ui->enableNewSocketLoop, CHECK_CHANGED, ADV_CHANGED);
HookWidget(ui->enableLowLatencyMode, CHECK_CHANGED, ADV_CHANGED);
-@@ -669,6 +672,13 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent)
+@@ -675,6 +678,13 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent)
ui->resetOSXVSync = nullptr;
#endif
@@ -782,15 +770,23 @@ index 80c3f63a4..42c832680 100644
connect(ui->streamDelaySec, &QSpinBox::valueChanged, this,
&OBSBasicSettings::UpdateStreamDelayEstimate);
connect(ui->outputMode, &QComboBox::currentIndexChanged, this,
-@@ -817,9 +827,37 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent)
- &OBSBasicSettings::AdvReplayBufferChanged);
+@@ -824,6 +834,7 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent)
connect(ui->advRBSecMax, &QSpinBox::valueChanged, this,
&OBSBasicSettings::AdvReplayBufferChanged);
+
++
+ // GPU scaling filters
+ auto addScaleFilter = [&](const char *string, int value) -> void {
+ ui->advOutRescaleFilter->addItem(QTStr(string), value);
+@@ -853,8 +864,37 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent)
+ connectScaleFilter(ui->advOutRescaleFilter, ui->advOutRescale);
+ connectScaleFilter(ui->advOutRecRescaleFilter, ui->advOutRecRescale);
+
+- // Get Bind to IP Addresses
++
+#ifdef __linux__
+ connect(ui->bindToInterface, &QComboBox::currentIndexChanged, this,
+ &OBSBasicSettings::UpdateAddrList);
-
-- // Get Bind to IP Addresses
+ ui->bindToIP->setEnabled(false);
+#endif
+
@@ -821,7 +817,7 @@ index 80c3f63a4..42c832680 100644
obs_property_t *p = obs_properties_get(ppts, "bind_ip");
size_t count = obs_property_list_item_count(p);
-@@ -829,7 +867,7 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent)
+@@ -864,7 +904,7 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent)
ui->bindToIP->addItem(QT_UTF8(name), val);
}
@@ -830,7 +826,7 @@ index 80c3f63a4..42c832680 100644
obs_properties_destroy(ppts);
InitStreamPage();
-@@ -2814,6 +2852,10 @@ void OBSBasicSettings::LoadAdvancedSettings()
+@@ -2876,6 +2916,10 @@ void OBSBasicSettings::LoadAdvancedSettings()
"FilenameFormatting");
bool overwriteIfExists =
config_get_bool(main->Config(), "Output", "OverwriteIfExists");
@@ -841,7 +837,7 @@ index 80c3f63a4..42c832680 100644
const char *bindIP =
config_get_string(main->Config(), "Output", "BindIP");
const char *rbPrefix = config_get_string(main->Config(), "SimpleOutput",
-@@ -2868,6 +2910,12 @@ void OBSBasicSettings::LoadAdvancedSettings()
+@@ -2930,6 +2974,12 @@ void OBSBasicSettings::LoadAdvancedSettings()
ui->sdrWhiteLevel->setValue(sdrWhiteLevel);
ui->hdrNominalPeakLevel->setValue(hdrNominalPeakLevel);
@@ -854,7 +850,7 @@ index 80c3f63a4..42c832680 100644
if (!SetComboByValue(ui->bindToIP, bindIP))
SetInvalidValue(ui->bindToIP, bindIP, bindIP);
-@@ -3600,6 +3648,9 @@ void OBSBasicSettings::SaveAdvancedSettings()
+@@ -3663,6 +3713,9 @@ void OBSBasicSettings::SaveAdvancedSettings()
SaveCheckBox(ui->reconnectEnable, "Output", "Reconnect");
SaveSpinBox(ui->reconnectRetryDelay, "Output", "RetryDelay");
SaveSpinBox(ui->reconnectMaxRetries, "Output", "MaxRetries");
@@ -864,7 +860,7 @@ index 80c3f63a4..42c832680 100644
SaveComboData(ui->bindToIP, "Output", "BindIP");
SaveCheckBox(ui->autoRemux, "Video", "AutoRemux");
SaveCheckBox(ui->dynBitrate, "Output", "DynamicBitrate");
-@@ -6154,6 +6205,9 @@ void OBSBasicSettings::UpdateAdvNetworkGroup()
+@@ -6231,6 +6284,9 @@ void OBSBasicSettings::UpdateAdvNetworkGroup()
#ifdef _WIN32
ui->enableNewSocketLoop->setVisible(enabled);
ui->enableLowLatencyMode->setVisible(enabled);
@@ -874,7 +870,7 @@ index 80c3f63a4..42c832680 100644
#endif
}
-@@ -6192,3 +6246,36 @@ void OBSBasicSettings::AdvAudioEncodersChanged()
+@@ -6269,3 +6325,36 @@ void OBSBasicSettings::AdvAudioEncodersChanged()
ui->advOutTrack6Bitrate},
320);
}
@@ -912,10 +908,10 @@ index 80c3f63a4..42c832680 100644
+}
+#endif
diff --git a/UI/window-basic-settings.hpp b/UI/window-basic-settings.hpp
-index b874c0b85..b7d4baae7 100644
+index 01bffeb494c20..fd66b413cc794 100644
--- a/UI/window-basic-settings.hpp
+++ b/UI/window-basic-settings.hpp
-@@ -466,6 +466,9 @@ private slots:
+@@ -472,6 +472,9 @@ private slots:
void SetHotkeysIcon(const QIcon &icon);
void SetAccessibilityIcon(const QIcon &icon);
void SetAdvancedIcon(const QIcon &icon);
@@ -925,6 +921,3 @@ index b874c0b85..b7d4baae7 100644
void UseStreamKeyAdvClicked();
---
-2.42.1
-