Projects
home:darix:branches:Multimedia
obs-studio
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
Expand all
Collapse all
Changes of Revision 6
View file
obs-studio.changes
Changed
@@ -1,4 +1,30 @@ ------------------------------------------------------------------- +Fri Jul 03 00:14:27 UTC 2026 - darix <packman@nordisch.org> + +- Update to version 32.2.0~beta3: + * frontend: Parent mixer context menu to window + * frontend: Fix resizing horizontal volume name + * frontend: Fix invokeMethod function name + * frontend: Remove What's New window padding + * frontend: Remove What's New bottom button + * nv-filters: Remove direct calls to CUDA in Audio FX + * frontend: Add missing <functional> include + * frontend: Show warning icon for Monitor Only + * frontend: Remove Monitor Only from UI + * frontend: Use same base theme on Win 10/11 + * build-aux: Update Flatpak to 2026-06-26 deps + * win-capture: Add Hearthstone Deck Tracker to compatibility list + * CI: Update deps to 2026-06-25 release + * win-capture: Build with file descriptor + * obs-vst: Build with file descriptor + * obs-webrtc: Build with file descriptor + * frontend: Merge Windows process mitigation functions + * CI: Move Sparkle Appcast creation to Publish workflow + * CI: Update korelstar/xmllint-problem-matcher to v1.3.0 + * CI: Update softprops/action-gh-release to v3.0.1 + * CI: Install NSIS in the windows-patches action + +------------------------------------------------------------------- Mon Jun 22 21:10:33 UTC 2026 - darix <packman@nordisch.org> - Update to version 32.2.0~beta2:
View file
obs-studio.spec
Changed
@@ -50,7 +50,7 @@ %endif Name: obs-studio -Version: 32.2.0~beta2 +Version: 32.2.0~beta3 Release: 0 Summary: A recording/broadcasting program Group: Productivity/Multimedia/Video/Editors and Convertors
View file
_service
Changed
@@ -1,7 +1,7 @@ <services> <service name="tar_scm" mode="manual"> <param name="versionformat">@PARENT_TAG@</param> - <param name="revision">32.2.0-beta2</param> + <param name="revision">32.2.0-beta3</param> <param name="url">https://github.com/obsproject/obs-studio.git</param> <param name="versionrewrite-pattern">(\.\d+)-(a-z.*)</param> <param name="versionrewrite-replacement">\1~\2</param>
View file
_servicedata
Changed
@@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/obsproject/obs-studio.git</param> - <param name="changesrevision">7d869ccf0fb1804deb78e1bef8c3feaa4a23b7da</param> + <param name="changesrevision">30d3b89b3bd02c40ca55d071b2fd038a1c40caa6</param> </service> </servicedata> \ No newline at end of file
View file
obs-studio-32.2.0~beta2.tar.xz/.github/actions/qt-xml-validator/action.yaml -> obs-studio-32.2.0~beta3.tar.xz/.github/actions/qt-xml-validator/action.yaml
Changed
@@ -33,7 +33,7 @@ echo ::endgroup:: - name: Register Annotations 📝 - uses: korelstar/xmllint-problem-matcher@b105cfa34e5c5a3e27644cee1d4d0f9993aef707 + uses: korelstar/xmllint-problem-matcher@dd2ad21bd8a2de0187cb621419537f345e7e509c # v1.3.0 - name: Check for Changed Files ✅ uses: ./.github/actions/check-changes
View file
obs-studio-32.2.0~beta2.tar.xz/.github/actions/windows-patches/action.yaml -> obs-studio-32.2.0~beta3.tar.xz/.github/actions/windows-patches/action.yaml
Changed
@@ -68,6 +68,12 @@ Expand-Archive -Path $windows_zip -DestinationPath bin Expand-Archive -Path $nsis_zip -DestinationPath nsis + - name: Install NSIS + shell: pwsh + run: | + # Install NSIS + winget install --silent --accept-package-agreements --accept-source-agreements --disable-interactivity -e --id NSIS.NSIS + - name: Install rclone and pandoc shell: pwsh run: |
View file
obs-studio-32.2.0~beta2.tar.xz/.github/actions/windows-patches/config.toml -> obs-studio-32.2.0~beta3.tar.xz/.github/actions/windows-patches/config.toml
Changed
@@ -4,7 +4,7 @@ env # On CI these should be in %PATH% sevenzip_path = "7z" -makensis_path = "makensis" +makensis_path = "C:/Program Files (x86)/NSIS/makensis.exe" pandoc_path = "pandoc" pdbcopy_path = "C:/Program Files (x86)/Windows Kits/10/Debuggers/x64/pdbcopy.exe"
View file
obs-studio-32.2.0~beta2.tar.xz/.github/workflows/publish.yaml -> obs-studio-32.2.0~beta3.tar.xz/.github/workflows/publish.yaml
Changed
@@ -256,3 +256,72 @@ channel: ${{ needs.check-tag.outputs.updateChannel }} gcsAccessKeyId: ${{ secrets.GCS_ACCESS_KEY_ID }} gcsAccessKeySecret: ${{ secrets.GCS_ACCESS_KEY_SECRET }} + + create-appcast: + name: Create Sparkle Appcast 🎙️ + if: github.repository_owner == 'obsproject' && fromJSON(needs.check-tag.outputs.validTag) + runs-on: macos-26 + needs: check-tag + strategy: + fail-fast: false + matrix: + target: arm64, x86_64 + defaults: + run: + shell: zsh --no-rcs --errexit --pipefail {0} + steps: + - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + submodules: recursive + fetch-depth: 0 + ref: ${{ github.ref }} + + - name: Set Up Environment 🔧 + id: setup + run: | + : Set Up Environment 🔧 + if (( ${+RUNNER_DEBUG} )) setopt XTRACE + + local channel='stable' + if ${GITHUB_REF_NAME} == *(beta|rc)* { + channel='beta' + } + + local -A arch_names=(x86_64 intel arm64 apple) + print "cpuName=${arch_names${{ matrix.target }}}" >> $GITHUB_OUTPUT + print "commitHash=${GITHUB_SHA:0:9}" >> $GITHUB_OUTPUT + print "channel=${channel}" >> $GITHUB_OUTPUT + + - name: Download Artifact 📥 + uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 + with: + name: obs-studio-macos-${{ matrix.target }}-${{ steps.setup.outputs.commitHash }} + + - name: Generate Appcast 🎙️ + id: generate-appcast + uses: ./.github/actions/sparkle-appcast + with: + sparklePrivateKey: ${{ secrets.SPARKLE_PRIVATE_KEY }} + baseImage: ${{ github.workspace }}/obs-studio-*-macos-${{ steps.setup.outputs.cpuName }}.dmg + channel: ${{ steps.setup.outputs.channel }} + count: 1 + urlPrefix: 'https://cdn-fastly.obsproject.com/downloads' + customTitle: 'OBS Studio' + customLink: 'https://obsproject.com/' + + - name: Upload Artifacts 📡 + uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 + with: + name: macos-sparkle-update-${{ matrix.target }} + path: ${{ github.workspace }}/output + + merge-appcasts: + runs-on: ubuntu-24.04 + needs: create-appcast + steps: + - name: Merge Appcasts + uses: actions/upload-artifact/merge@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 + with: + name: macos-sparkle-update + pattern: macos-sparkle-update-* + delete-merged: true
View file
obs-studio-32.2.0~beta2.tar.xz/.github/workflows/push.yaml -> obs-studio-32.2.0~beta3.tar.xz/.github/workflows/push.yaml
Changed
@@ -136,75 +136,6 @@ accountId: ${{ secrets.CF_ACCOUNT_ID }} command: pages publish . --project-name=${{ vars.CF_PAGES_PROJECT }} --commit-hash='${{ steps.setup.outputs.commitHash }}' - create-appcast: - name: Create Sparkle Appcast 🎙️ - if: github.repository_owner == 'obsproject' && github.ref_type == 'tag' - runs-on: macos-26 - needs: build-project - strategy: - fail-fast: false - matrix: - target: arm64, x86_64 - defaults: - run: - shell: zsh --no-rcs --errexit --pipefail {0} - steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - with: - submodules: recursive - fetch-depth: 0 - ref: ${{ github.ref }} - - - name: Set Up Environment 🔧 - id: setup - run: | - : Set Up Environment 🔧 - if (( ${+RUNNER_DEBUG} )) setopt XTRACE - - local channel='stable' - if ${GITHUB_REF_NAME} == *(beta|rc)* { - channel='beta' - } - - local -A arch_names=(x86_64 intel arm64 apple) - print "cpuName=${arch_names${{ matrix.target }}}" >> $GITHUB_OUTPUT - print "commitHash=${GITHUB_SHA:0:9}" >> $GITHUB_OUTPUT - print "channel=${channel}" >> $GITHUB_OUTPUT - - - name: Download Artifact 📥 - uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 - with: - name: obs-studio-macos-${{ matrix.target }}-${{ steps.setup.outputs.commitHash }} - - - name: Generate Appcast 🎙️ - id: generate-appcast - uses: ./.github/actions/sparkle-appcast - with: - sparklePrivateKey: ${{ secrets.SPARKLE_PRIVATE_KEY }} - baseImage: ${{ github.workspace }}/obs-studio-*-macos-${{ steps.setup.outputs.cpuName }}.dmg - channel: ${{ steps.setup.outputs.channel }} - count: 1 - urlPrefix: 'https://cdn-fastly.obsproject.com/downloads' - customTitle: 'OBS Studio' - customLink: 'https://obsproject.com/' - - - name: Upload Artifacts 📡 - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 - with: - name: macos-sparkle-update-${{ matrix.target }} - path: ${{ github.workspace }}/output - - merge-appcasts: - runs-on: ubuntu-24.04 - needs: create-appcast - steps: - - name: Merge Appcasts - uses: actions/upload-artifact/merge@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 - with: - name: macos-sparkle-update - pattern: macos-sparkle-update-* - delete-merged: true - sign-windows-build: name: Windows Signing ✍️ uses: obsproject/obs-studio/.github/workflows/sign-windows.yaml@ac19ea663375cd02997be92b7d8ff6dd89a511ad @@ -320,7 +251,7 @@ - name: Create Release 🛫 if: fromJSON(steps.check.outputs.validTag) id: create_release - uses: softprops/action-gh-release@c062e08bd532815e2082a85e87e3ef29c3e6d191 + uses: softprops/action-gh-release@718ea10b132b3b2eba29c1007bb80653f286566b # v3.0.1 with: draft: true prerelease: ${{ fromJSON(steps.check.outputs.prerelease) }}
View file
obs-studio-32.2.0~beta2.tar.xz/CMakePresets.json -> obs-studio-32.2.0~beta3.tar.xz/CMakePresets.json
Changed
@@ -27,28 +27,28 @@ "obsproject.com/obs-studio": { "dependencies": { "prebuilt": { - "version": "2026-06-02", + "version": "2026-06-25", "baseUrl": "https://github.com/obsproject/obs-deps/releases/download", "label": "Pre-Built obs-deps", "hashes": { - "macos-universal": "459e98f661485a02b500641c7f647bb2420e9e67a4cdf20641987807ac2ab216", - "windows-x64": "9ed086ba79fb174401f7578a82812a161b3c1abb9edb02f85bac8f00253d798f", - "windows-x86": "9fd858048caa7d067f90810c8c4a692bbfe48aa95d2166962deb448bc892cdbe", - "windows-arm64": "fd906649fd78d5fe1eb0b30c7fdd76ddd81fc30d6fbcc989b6a6805572836a23" + "macos-universal": "09ee1f53ef1b4464fd4f39f9aa3f3193b47e60d8c48b6ffc603f22a83814487e", + "windows-x64": "aea064cc550563d0095603385c22cc52b33de71e57ea3f6ff1ae1d54a0bb9d8a", + "windows-x86": "fde08f54707dbf57da24b21a5db4ccedd4c4eb09b9808a899f9068dc5f1a228d", + "windows-arm64": "53c13f0634ebe27b8fb2aa17378d780210936428514b7bd47f64040c3b30d750" } }, "qt6": { - "version": "2026-06-02", + "version": "2026-06-25", "baseUrl": "https://github.com/obsproject/obs-deps/releases/download", "label": "Pre-Built Qt6", "hashes": { - "macos-universal": "a7f972df1fdbe50657955b4613b42dbcbc3201b62a7ed26fb8ef7c7ceff40220", - "windows-x64": "99f2a99e9d86d7737103f3b89934ed6b50dceb10e555801ab6394bd7f8168086", - "windows-arm64": "9fcb34754f44ebdc3f55885eeee1e24cce5d4d83ac6c6472ade252ee0d33c4d4" + "macos-universal": "1f3d2b8b3ddf980dfee527471f1f970889f8cdfd8fa0404d9992986034f16260", + "windows-x64": "b30ee3653d6381ca491daa5b30b3cff6deb1b3e7f149f4b087c2fb03a1432023", + "windows-arm64": "7c256175d00d85d062aea88ffbfd096c44c8ad53e10adbbf21b1fc5fb591f98f" }, "debugSymbols": { - "windows-x64": "dc8b2421b28bf0592c81f2b880b61cc5819a832371d76404d26ed1950cea9a77", - "windows-arm64": "ec8012dad5963619ec06c227afc69261736eee89ae8ada081469b9b915508098" + "windows-x64": "be7c1dbde4a8720fc5cf59bb7a4f2ad55ee8b5dc17702e51c347bd4eec24a8e3", + "windows-arm64": "d104eccc9f2457d22e9ddd9ce101b13025872b1d5ae08761b6ced284b773f648" } }, "cef": {
View file
obs-studio-32.2.0~beta2.tar.xz/build-aux/com.obsproject.Studio.json -> obs-studio-32.2.0~beta3.tar.xz/build-aux/com.obsproject.Studio.json
Changed
@@ -48,8 +48,8 @@ { "type": "file", "dest-filename": "base.tar.xz", - "url": "https://github.com/obsproject/obs-deps-buildstream/releases/download/2026-06-06/flatpak-base-x86_64-2026-06-06.tar.xz", - "sha256": "e0888f1852cf942babf640dd8379842861a46a608f2130833d619899ddf25b04" + "url": "https://github.com/obsproject/obs-deps-buildstream/releases/download/2026-06-26/flatpak-base-x86_64-2026-06-26.tar.xz", + "sha256": "396522a370529c31bbec6de810aff8bd5ba4eef103b2218954ffa5d8847dc943" } }, @@ -63,8 +63,8 @@ { "type": "file", "dest-filename": "devel.tar.xz", - "url": "https://github.com/obsproject/obs-deps-buildstream/releases/download/2026-06-06/flatpak-devel-x86_64-2026-06-06.tar.xz", - "sha256": "51f9cb6563fc0870a2696ca977c1826f48f2ede6ebaf3486bc4017090fea0d93" + "url": "https://github.com/obsproject/obs-deps-buildstream/releases/download/2026-06-26/flatpak-devel-x86_64-2026-06-26.tar.xz", + "sha256": "2499b622f450f3ae6ea7e9d893d8063cdacd8aa2089ecd4b8462d16e970fbc43" } }, @@ -81,8 +81,8 @@ { "type": "file", "dest-filename": "devtools.tar.xz", - "url": "https://github.com/obsproject/obs-deps-buildstream/releases/download/2026-06-06/flatpak-devtools-x86_64-2026-06-06.tar.xz", - "sha256": "0ba4e5078e63a008a504150ccc1c25bdbed1e5490765606a67af07b0c93c05c2" + "url": "https://github.com/obsproject/obs-deps-buildstream/releases/download/2026-06-26/flatpak-devtools-x86_64-2026-06-26.tar.xz", + "sha256": "557e5cf96a7118f1377b7eabe402621908f7ba6a9bc93fbb134ebc175d31a5d9" } }, @@ -96,8 +96,8 @@ { "type": "file", "dest-filename": "qt.tar.xz", - "url": "https://github.com/obsproject/obs-deps-buildstream/releases/download/2026-06-06/flatpak-qt-x86_64-2026-06-06.tar.xz", - "sha256": "2dc37eddc2f252304383c0c2b5d85898593b695e026ebb88892bdc005498ddb6" + "url": "https://github.com/obsproject/obs-deps-buildstream/releases/download/2026-06-26/flatpak-qt-x86_64-2026-06-26.tar.xz", + "sha256": "ff3ffdc54a3da6a4f656411d1a88e6484c64349dacf700fa5986c385aff23a17" } },
View file
obs-studio-32.2.0~beta2.tar.xz/frontend/OBSApp_Themes.cpp -> obs-studio-32.2.0~beta3.tar.xz/frontend/OBSApp_Themes.cpp
Changed
@@ -1050,6 +1050,8 @@ defaultPalette = palette(); #if !defined(_WIN32) && !defined(__APPLE__) setStyle(new OBSProxyStyle("Fusion")); +#elif defined(_WIN32) + setStyle(new OBSProxyStyle("windowsvista")); #else setStyle(new OBSProxyStyle()); #endif
View file
obs-studio-32.2.0~beta2.tar.xz/frontend/components/OBSAdvAudioCtrl.cpp -> obs-studio-32.2.0~beta3.tar.xz/frontend/components/OBSAdvAudioCtrl.cpp
Changed
@@ -155,10 +155,9 @@ int idx; if (obs_audio_monitoring_available()) { monitoringType->addItem(QTStr("Basic.AdvAudio.Monitoring.None"), (int)OBS_MONITORING_TYPE_NONE); - monitoringType->addItem(QTStr("Basic.AdvAudio.Monitoring.MonitorOnly"), - (int)OBS_MONITORING_TYPE_MONITOR_ONLY); monitoringType->addItem(QTStr("Basic.AdvAudio.Monitoring.Both"), (int)OBS_MONITORING_TYPE_MONITOR_AND_OUTPUT); + monitoringType->setPlaceholderText(QTStr("Basic.AdvAudio.Monitoring.MonitorOnly")); int mt = (int)obs_source_get_monitoring_type(source); idx = monitoringType->findData(mt); monitoringType->setCurrentIndex(idx);
View file
obs-studio-32.2.0~beta2.tar.xz/frontend/components/VolumeControl.cpp -> obs-studio-32.2.0~beta3.tar.xz/frontend/components/VolumeControl.cpp
Changed
@@ -67,7 +67,7 @@ utils->addClass(categoryLabel, "text-tiny"); nameButton = new VolumeName(source, this); - nameButton->setMaximumWidth(140); + nameButton->setMaximumWidth(280); utils->addClass(nameButton, "text-small"); utils->addClass(nameButton, "mixer-name"); @@ -164,7 +164,7 @@ } } -const QIcon &VolumeControl::getUnassignedIcon() +const QIcon &VolumeControl::getWarningIcon() { static const QIcon &icon = *new QIcon(":/res/images/unassigned.svg"); return icon; @@ -333,7 +333,7 @@ slider->setLayoutDirection(Qt::LeftToRight); slider->setDisplayTicks(true); - nameButton->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Preferred); + nameButton->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); categoryLabel->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Preferred); volumeLabel->setAlignment(Qt::AlignRight); @@ -393,7 +393,7 @@ return; } - QMenu *popup = new QMenu(this); + QMenu *popup = new QMenu(window()); // Create menu QActions QAction *lockAction = new QAction(QTStr("LockVolume"), popup); @@ -773,6 +773,7 @@ bool showAsMuted = obsMuted || obsMonitoringType == OBS_MONITORING_TYPE_MONITOR_ONLY; bool showAsMonitored = obsMonitoringType != OBS_MONITORING_TYPE_NONE; bool showAsUnassigned = !obsMuted && unassigned; + bool showWarningIcon = showAsUnassigned || obsMonitoringType == OBS_MONITORING_TYPE_MONITOR_ONLY; volumeMeter->setMuted((showAsMuted || showAsUnassigned) && !showAsMonitored); setUseDisabledColors(showAsMuted || !isActive); @@ -787,8 +788,8 @@ : QTStr("Basic.AudioMixer.Monitoring.Enable"); monitorButton->setToolTip(monitorTooltip); - if (showAsUnassigned) { - muteButton->setIcon(getUnassignedIcon()); + if (showWarningIcon) { + muteButton->setIcon(getWarningIcon()); } else if (showAsMuted) { muteButton->setIcon(getMutedIcon()); } else { @@ -806,7 +807,7 @@ utils->toggleClass(muteButton, "checked", showAsMuted); utils->toggleClass(monitorButton, "checked", showAsMonitored); - utils->toggleClass(muteButton, "mute-unassigned", showAsUnassigned); + utils->toggleClass(muteButton, "mute-warning", showWarningIcon); style()->polish(muteButton); style()->polish(monitorButton); @@ -818,27 +819,17 @@ { setMuted(mute); - if (obsMonitoringType != OBS_MONITORING_TYPE_NONE) { - if (mute) { - setMonitoring(OBS_MONITORING_TYPE_MONITOR_ONLY); - } else { - setMonitoring(OBS_MONITORING_TYPE_MONITOR_AND_OUTPUT); - } + if (!mute && obsMonitoringType == OBS_MONITORING_TYPE_MONITOR_ONLY) { + setMonitoring(OBS_MONITORING_TYPE_MONITOR_AND_OUTPUT); } } void VolumeControl::handleMonitorButton(bool enableMonitoring) { - if (!enableMonitoring) { - setMonitoring(OBS_MONITORING_TYPE_NONE); - return; - } + obs_monitoring_type newType = (enableMonitoring) ? OBS_MONITORING_TYPE_MONITOR_AND_OUTPUT + : OBS_MONITORING_TYPE_NONE; - if (obsMuted) { - setMonitoring(OBS_MONITORING_TYPE_MONITOR_ONLY); - } else { - setMonitoring(OBS_MONITORING_TYPE_MONITOR_AND_OUTPUT); - } + setMonitoring(newType); } void VolumeControl::sliderChanged(int vol)
View file
obs-studio-32.2.0~beta2.tar.xz/frontend/components/VolumeControl.hpp -> obs-studio-32.2.0~beta3.tar.xz/frontend/components/VolumeControl.hpp
Changed
@@ -92,7 +92,7 @@ QMenu *contextMenu; - static const QIcon &getUnassignedIcon(); + static const QIcon &getWarningIcon(); static const QIcon &getMutedIcon(); static const QIcon &getUnmutedIcon(); static const QIcon &getMonitorOnIcon();
View file
obs-studio-32.2.0~beta2.tar.xz/frontend/components/VolumeMeter.hpp -> obs-studio-32.2.0~beta3.tar.xz/frontend/components/VolumeMeter.hpp
Changed
@@ -203,5 +203,5 @@ void paintEvent(QPaintEvent *event) override; private slots: - void handleSourceDestroyed() { deleteLater(); } + void onSourceDestroyed() { deleteLater(); } };
View file
obs-studio-32.2.0~beta2.tar.xz/frontend/components/VolumeName.cpp -> obs-studio-32.2.0~beta3.tar.xz/frontend/components/VolumeName.cpp
Changed
@@ -54,6 +54,7 @@ label = new QLabel(this); label->setIndent(0); + label->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored); layout->addWidget(label); layout->setContentsMargins(0, 0, indicatorWidth, 0); @@ -82,7 +83,9 @@ QFontMetrics metrics(label->font()); QSize textSize = metrics.size(Qt::TextSingleLine, plainText); - int width = textSize.width(); + // A minimum sizeHint of 0 tells Qt it can try to reduce its size when an appropriate sizePolicy has been set. + // The text ellide behavior will ensure it fits within the actual bounds the widget is allocated. + int width = 0; int height = textSize.height(); if (!opt.icon.isNull()) { @@ -182,29 +185,24 @@ void VolumeName::updateLabelText(const QString &name) { QString plainText = getPlainText(name); + fullText = name; QFontMetrics metrics(label->font()); int availableWidth = label->contentsRect().width(); if (availableWidth <= 0) { label->clear(); - fullText = name; return; } int textWidth = metrics.horizontalAdvance(plainText); - bool isRichText = (plainText != name); - bool needsElide = textWidth > availableWidth; - - if (needsElide && !isRichText) { - QString elided = metrics.elidedText(plainText, Qt::ElideMiddle, availableWidth); - label->setText(elided); - } else { - label->setText(name); + if (availableWidth > textWidth) { + return; } - fullText = name; + QString elided = metrics.elidedText(plainText, Qt::ElideMiddle, availableWidth); + label->setText(elided); } void VolumeName::onRemoved()
View file
obs-studio-32.2.0~beta2.tar.xz/frontend/data/locale/en-US.ini -> obs-studio-32.2.0~beta3.tar.xz/frontend/data/locale/en-US.ini
Changed
@@ -1387,7 +1387,7 @@ Basic.AdvAudio.Monitoring="Audio Monitoring" Basic.AdvAudio.Monitoring.None="Monitor Off" Basic.AdvAudio.Monitoring.MonitorOnly="Monitor Only (mute output)" -Basic.AdvAudio.Monitoring.Both="Monitor and Output" +Basic.AdvAudio.Monitoring.Both="Monitoring Enabled" Basic.AdvAudio.MonitoringSource="Audio Monitoring for '%1'" Basic.AdvAudio.AudioTracks="Tracks"
View file
obs-studio-32.2.0~beta2.tar.xz/frontend/data/themes/Yami.obt -> obs-studio-32.2.0~beta3.tar.xz/frontend/data/themes/Yami.obt
Changed
@@ -1674,14 +1674,14 @@ border-color: var(--red1); } -.btn-mute.mute-unassigned { +.btn-mute.mute-warning { color: var(--yellow1); background: var(--yellow6); qproperty-icon: url(theme:Dark/unassigned.svg); } -.btn-mute.mute-unassigned.hover, -.btn-mute.mute-unassigned:focus { +.btn-mute.mute-warning.hover, +.btn-mute.mute-warning:focus { border-color: var(--yellow1); }
View file
obs-studio-32.2.0~beta2.tar.xz/frontend/dialogs/OBSWhatsNew.cpp -> obs-studio-32.2.0~beta3.tar.xz/frontend/dialogs/OBSWhatsNew.cpp
Changed
@@ -37,17 +37,9 @@ connect(cefWidget, &QCefWidget::titleChanged, this, &OBSWhatsNew::setWindowTitle); - QPushButton *close = new QPushButton(QTStr("Close")); - connect(close, &QAbstractButton::clicked, this, &QDialog::accept); - - QHBoxLayout *bottomLayout = new QHBoxLayout(); - bottomLayout->addStretch(); - bottomLayout->addWidget(close); - bottomLayout->addStretch(); - QVBoxLayout *topLayout = new QVBoxLayout(this); + topLayout->setContentsMargins(0, 0, 0, 0); topLayout->addWidget(cefWidget); - topLayout->addLayout(bottomLayout); show(); #else
View file
obs-studio-32.2.0~beta2.tar.xz/frontend/obs-main.cpp -> obs-studio-32.2.0~beta3.tar.xz/frontend/obs-main.cpp
Changed
@@ -811,38 +811,6 @@ CloseHandle(token); } - -static void set_process_mitigations(void) -{ - // SetProcessMitigationPolicy is Windows 8+ - typedef BOOL(WINAPI * PFN_SetProcessMitigationPolicy)(PROCESS_MITIGATION_POLICY, PVOID, SIZE_T); - PFN_SetProcessMitigationPolicy pSetProcessMitigationPolicy; - - pSetProcessMitigationPolicy = (PFN_SetProcessMitigationPolicy)GetProcAddress(GetModuleHandle(L"KERNEL32"), - "SetProcessMitigationPolicy"); - - if (pSetProcessMitigationPolicy) { - PROCESS_MITIGATION_DEP_POLICY dep = {0}; - dep.DisableAtlThunkEmulation = 1; - dep.Enable = 1; - dep.Permanent = TRUE; - pSetProcessMitigationPolicy(ProcessDEPPolicy, &dep, sizeof(dep)); - - PROCESS_MITIGATION_ASLR_POLICY aslr = {0}; - aslr.EnableBottomUpRandomization = 1; - aslr.EnableHighEntropy = 1; - aslr.EnableForceRelocateImages = 1; - aslr.DisallowStrippedImages = 1; - pSetProcessMitigationPolicy(ProcessASLRPolicy, &aslr, sizeof(aslr)); - -#ifdef _DEBUG - PROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY hcheck = {0}; - hcheck.RaiseExceptionOnInvalidHandleReference = 1; - hcheck.HandleExceptionsPermanentlyEnabled = 1; - pSetProcessMitigationPolicy(ProcessStrictHandleCheckPolicy, &hcheck, sizeof(hcheck)); -#endif - } -} #endif static inline bool arg_is(const char *arg, const char *long_form, const char *short_form) @@ -882,6 +850,26 @@ PROCESS_MITIGATION_IMAGE_LOAD_POLICY policy = {}; policy.PreferSystem32Images = 1; SetProcessMitigationPolicy(ProcessImageLoadPolicy, &policy, sizeof(policy)); + + PROCESS_MITIGATION_DEP_POLICY dep = {0}; + dep.DisableAtlThunkEmulation = 1; + dep.Enable = 1; + dep.Permanent = TRUE; + SetProcessMitigationPolicy(ProcessDEPPolicy, &dep, sizeof(dep)); + + PROCESS_MITIGATION_ASLR_POLICY aslr = {0}; + aslr.EnableBottomUpRandomization = 1; + aslr.EnableHighEntropy = 1; + aslr.EnableForceRelocateImages = 1; + aslr.DisallowStrippedImages = 1; + SetProcessMitigationPolicy(ProcessASLRPolicy, &aslr, sizeof(aslr)); + +#ifdef _DEBUG + PROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY hcheck = {0}; + hcheck.RaiseExceptionOnInvalidHandleReference = 1; + hcheck.HandleExceptionsPermanentlyEnabled = 1; + SetProcessMitigationPolicy(ProcessStrictHandleCheckPolicy, &hcheck, sizeof(hcheck)); +#endif } #endif @@ -951,7 +939,6 @@ SetDllDirectoryW(L""); load_debug_privilege(); base_set_crash_handler(main_crash_handler, nullptr); - set_process_mitigations(); /* Shutdown priority value is a range from 0 - 4FF with higher values getting first priority. * 000 - 0FF and 400 - 4FF are reserved system ranges.
View file
obs-studio-32.2.0~beta2.tar.xz/frontend/utility/BasicOutputHandler.hpp -> obs-studio-32.2.0~beta3.tar.xz/frontend/utility/BasicOutputHandler.hpp
Changed
@@ -6,6 +6,7 @@ #include <obs.hpp> #include <util/dstr.hpp> +#include <functional> #include <future> #define RTMP_PROTOCOL "rtmp"
View file
obs-studio-32.2.0~beta2.tar.xz/plugins/nv-filters/nvafx-load.h -> obs-studio-32.2.0~beta3.tar.xz/plugins/nv-filters/nvafx-load.h
Changed
@@ -12,7 +12,6 @@ #ifdef LIBNVAFX_ENABLED static HMODULE nv_audiofx = NULL; -static HMODULE nv_cuda = NULL; /** Effects @ref NvAFX_EffectSelector */ #define NVAFX_EFFECT_DENOISER "denoiser" @@ -166,60 +165,6 @@ typedef NvAFX_Status NVAFX_API (*NvAFX_InitializeLogger_t)(LoggingSeverity level, LoggingTarget target, const char *filename, logging_cb_t cb, void *userdata); typedef NvAFX_Status NVAFX_API (*NvAFX_UninitializeLogger_t)(); -/* cuda */ -typedef enum cudaError_enum { - CUDA_SUCCESS = 0, - CUDA_ERROR_INVALID_VALUE = 1, - CUDA_ERROR_OUT_OF_MEMORY = 2, - CUDA_ERROR_NOT_INITIALIZED = 3, - CUDA_ERROR_DEINITIALIZED = 4, - CUDA_ERROR_PROFILER_DISABLED = 5, - CUDA_ERROR_PROFILER_NOT_INITIALIZED = 6, - CUDA_ERROR_PROFILER_ALREADY_STARTED = 7, - CUDA_ERROR_PROFILER_ALREADY_STOPPED = 8, - CUDA_ERROR_NO_DEVICE = 100, - CUDA_ERROR_INVALID_DEVICE = 101, - CUDA_ERROR_INVALID_IMAGE = 200, - CUDA_ERROR_INVALID_CONTEXT = 201, - CUDA_ERROR_CONTEXT_ALREADY_CURRENT = 202, - CUDA_ERROR_MAP_FAILED = 205, - CUDA_ERROR_UNMAP_FAILED = 206, - CUDA_ERROR_ARRAY_IS_MAPPED = 207, - CUDA_ERROR_ALREADY_MAPPED = 208, - CUDA_ERROR_NO_BINARY_FOR_GPU = 209, - CUDA_ERROR_ALREADY_ACQUIRED = 210, - CUDA_ERROR_NOT_MAPPED = 211, - CUDA_ERROR_NOT_MAPPED_AS_ARRAY = 212, - CUDA_ERROR_NOT_MAPPED_AS_POINTER = 213, - CUDA_ERROR_ECC_UNCORRECTABLE = 214, - CUDA_ERROR_UNSUPPORTED_LIMIT = 215, - CUDA_ERROR_CONTEXT_ALREADY_IN_USE = 216, - CUDA_ERROR_INVALID_SOURCE = 300, - CUDA_ERROR_FILE_NOT_FOUND = 301, - CUDA_ERROR_SHARED_OBJECT_SYMBOL_NOT_FOUND = 302, - CUDA_ERROR_SHARED_OBJECT_INIT_FAILED = 303, - CUDA_ERROR_OPERATING_SYSTEM = 304, - CUDA_ERROR_INVALID_HANDLE = 400, - CUDA_ERROR_NOT_FOUND = 500, - CUDA_ERROR_NOT_READY = 600, - CUDA_ERROR_LAUNCH_FAILED = 700, - CUDA_ERROR_LAUNCH_OUT_OF_RESOURCES = 701, - CUDA_ERROR_LAUNCH_TIMEOUT = 702, - CUDA_ERROR_LAUNCH_INCOMPATIBLE_TEXTURING = 703, - CUDA_ERROR_PEER_ACCESS_ALREADY_ENABLED = 704, - CUDA_ERROR_PEER_ACCESS_NOT_ENABLED = 705, - CUDA_ERROR_PRIMARY_CONTEXT_ACTIVE = 708, - CUDA_ERROR_CONTEXT_IS_DESTROYED = 709, - CUDA_ERROR_ASSERT = 710, - CUDA_ERROR_TOO_MANY_PEERS = 711, - CUDA_ERROR_HOST_MEMORY_ALREADY_REGISTERED = 712, - CUDA_ERROR_HOST_MEMORY_NOT_REGISTERED = 713, - CUDA_ERROR_UNKNOWN = 999 -} CUresult; -typedef struct CUctx_st *CUcontext; -typedef CUresult(__stdcall *cuCtxGetCurrent_t)(CUcontext *pctx); -typedef CUresult(__stdcall *cuCtxPopCurrent_t)(CUcontext *pctx); -typedef CUresult(__stdcall *cuInit_t)(unsigned int Flags); static NvAFX_GetEffectList_t NvAFX_GetEffectList = NULL; static NvAFX_CreateEffect_t NvAFX_CreateEffect = NULL; @@ -243,10 +188,6 @@ /* SDK >= 1.6.0 */ static NvAFX_InitializeLogger_t NvAFX_InitializeLogger = NULL; static NvAFX_UninitializeLogger_t NvAFX_UninitializeLogger = NULL; -/* cuda */ -static cuCtxGetCurrent_t cuCtxGetCurrent = NULL; -static cuCtxPopCurrent_t cuCtxPopCurrent = NULL; -static cuInit_t cuInit = NULL; void release_lib(void) { @@ -276,13 +217,6 @@ FreeLibrary(nv_audiofx); nv_audiofx = NULL; } - cuCtxGetCurrent = NULL; - cuCtxPopCurrent = NULL; - cuInit = NULL; - if (nv_cuda) { - FreeLibrary(nv_cuda); - nv_cuda = NULL; - } } static inline bool nvafx_get_sdk_path(char *buffer, const size_t len) @@ -310,7 +244,6 @@ { char sdkPathMAX_PATH; char effectsPathMAX_PATH; - char cudaPathMAX_PATH; if (!nvafx_get_sdk_path(sdkPath, MAX_PATH)) { return false; @@ -320,16 +253,10 @@ return false; } - if (_snprintf_s(cudaPath, _countof(cudaPath), _TRUNCATE, "%s\\nvcuda.dll", sdkPath) == -1) { - return false; - } - nv_audiofx = LoadLibraryExA(effectsPath, NULL, LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR | LOAD_LIBRARY_SEARCH_DEFAULT_DIRS); - nv_cuda = LoadLibraryExA(cudaPath, NULL, LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR | LOAD_LIBRARY_SEARCH_DEFAULT_DIRS); - - return !!nv_audiofx && !!nv_cuda; + return !!nv_audiofx; } static unsigned int get_lib_version(void)
View file
obs-studio-32.2.0~beta2.tar.xz/plugins/nv-filters/nvidia-audiofx-filter.c -> obs-studio-32.2.0~beta3.tar.xz/plugins/nv-filters/nvidia-audiofx-filter.c
Changed
@@ -205,13 +205,6 @@ FreeLibrary(nv_audiofx); nv_audiofx = NULL; } - cuCtxGetCurrent = NULL; - cuCtxPopCurrent = NULL; - cuInit = NULL; - if (nv_cuda) { - FreeLibrary(nv_cuda); - nv_cuda = NULL; - } } bool load_nvidia_afx(void) @@ -276,11 +269,6 @@ LOAD_SYM(NvAFX_Run); LOAD_SYM(NvAFX_Reset); #undef LOAD_SYM -#define LOAD_SYM(sym) LOAD_SYM_FROM_LIB(sym, nv_cuda, "nvcuda.dll") - LOAD_SYM(cuCtxGetCurrent); - LOAD_SYM(cuCtxPopCurrent); - LOAD_SYM(cuInit); -#undef LOAD_SYM #define LOAD_SYM(sym) LOAD_SYM_FROM_LIB2(sym, nv_audiofx, "NVAudioEffects.dll") LOAD_SYM(NvAFX_InitializeLogger); bool new_sdk = nvafx_new_sdk; @@ -291,33 +279,10 @@ } #undef LOAD_SYM NvAFX_Status err; - CUresult cudaerr; NvAFX_Handle h = NULL; - cudaerr = cuInit(0); - if (cudaerr != CUDA_SUCCESS) { - goto cuda_errors; - } - CUcontext old = {0}; - CUcontext curr = {0}; - cudaerr = cuCtxGetCurrent(&old); - if (cudaerr != CUDA_SUCCESS) { - goto cuda_errors; - } - err = NvAFX_CreateEffect(NVAFX_EFFECT_DENOISER, &h); - cudaerr = cuCtxGetCurrent(&curr); - if (cudaerr != CUDA_SUCCESS) { - goto cuda_errors; - } - - if (curr != old) { - cudaerr = cuCtxPopCurrent(NULL); - if (cudaerr != CUDA_SUCCESS) - goto cuda_errors; - } - if (err != NVAFX_STATUS_SUCCESS) { if (err == NVAFX_STATUS_GPU_UNSUPPORTED) { blog(LOG_INFO, "NVIDIA Audio Effects: disabled: unsupported GPU"); @@ -337,8 +302,6 @@ blog(LOG_INFO, "NVIDIA Audio Effects: enabled"); return true; -cuda_errors: - blog(LOG_ERROR, "NVIDIA Audio Effects: disabled, CUDA error %i", cudaerr); unload_everything: release_afxlib(); @@ -367,22 +330,11 @@ ng->sample_rate = NVAFX_SAMPLE_RATE; for (size_t i = 0; i < ng->channels; i++) { // Create FX - CUcontext old = {0}; - CUcontext curr = {0}; - if (cuCtxGetCurrent(&old) != CUDA_SUCCESS) { - goto failure; - } err = NvAFX_CreateEffect(ng->fx, &ng->handlei); if (err != NVAFX_STATUS_SUCCESS) { do_log(LOG_ERROR, "%s FX creation failed, error %i", ng->fx, err); goto failure; } - if (cuCtxGetCurrent(&curr) != CUDA_SUCCESS) { - goto failure; - } - if (curr != old) { - cuCtxPopCurrent(NULL); - } // Set sample rate of FX err = NvAFX_SetU32(ng->handlei, NVAFX_PARAM_INPUT_SAMPLE_RATE, ng->sample_rate); if (err != NVAFX_STATUS_SUCCESS) {
View file
obs-studio-32.2.0~beta2.tar.xz/plugins/obs-vst/CMakeLists.txt -> obs-studio-32.2.0~beta3.tar.xz/plugins/obs-vst/CMakeLists.txt
Changed
@@ -42,6 +42,8 @@ ) if(OS_WINDOWS) + configure_file(cmake/windows/obs-module.rc.in obs-vst.rc) + target_sources(obs-vst PRIVATE obs-vst.rc) set_property(TARGET obs-vst APPEND PROPERTY AUTORCC_OPTIONS --format-version 1) endif()
View file
obs-studio-32.2.0~beta3.tar.xz/plugins/obs-vst/cmake
Added
+(directory)
View file
obs-studio-32.2.0~beta3.tar.xz/plugins/obs-vst/cmake/windows
Added
+(directory)
View file
obs-studio-32.2.0~beta3.tar.xz/plugins/obs-vst/cmake/windows/obs-module.rc.in
Added
@@ -0,0 +1,24 @@ +1 VERSIONINFO +FILEVERSION ${OBS_VERSION_MAJOR},${OBS_VERSION_MINOR},${OBS_VERSION_PATCH},0 +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904B0" + BEGIN + VALUE "CompanyName", "${OBS_COMPANY_NAME}" + VALUE "FileDescription", "OBS VST2 module" + VALUE "FileVersion", "${OBS_VERSION_CANONICAL}" + VALUE "ProductName", "${OBS_PRODUCT_NAME}" + VALUE "ProductVersion", "${OBS_VERSION_CANONICAL}" + VALUE "Comments", "${OBS_COMMENTS}" + VALUE "LegalCopyright", "${OBS_LEGAL_COPYRIGHT}" + VALUE "InternalName", "obs-vst" + VALUE "OriginalFilename", "obs-vst" + END + END + + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x0409, 0x04B0 + END +END
View file
obs-studio-32.2.0~beta2.tar.xz/plugins/obs-webrtc/CMakeLists.txt -> obs-studio-32.2.0~beta3.tar.xz/plugins/obs-webrtc/CMakeLists.txt
Changed
@@ -19,4 +19,9 @@ target_link_libraries(obs-webrtc PRIVATE OBS::libobs LibDataChannel::LibDataChannel CURL::libcurl) +if(OS_WINDOWS) + configure_file(cmake/windows/obs-module.rc.in obs-webrtc.rc) + target_sources(obs-webrtc PRIVATE obs-webrtc.rc) +endif() + set_target_properties_obs(obs-webrtc PROPERTIES FOLDER plugins PREFIX "")
View file
obs-studio-32.2.0~beta2.tar.xz/plugins/obs-webrtc/cmake/windows/obs-module.rc.in -> obs-studio-32.2.0~beta3.tar.xz/plugins/obs-webrtc/cmake/windows/obs-module.rc.in
Changed
@@ -6,7 +6,7 @@ BLOCK "040904B0" BEGIN VALUE "CompanyName", "${OBS_COMPANY_NAME}" - VALUE "FileDescription", "OBS output module" + VALUE "FileDescription", "OBS WebRTC module" VALUE "FileVersion", "${OBS_VERSION_CANONICAL}" VALUE "ProductName", "${OBS_PRODUCT_NAME}" VALUE "ProductVersion", "${OBS_VERSION_CANONICAL}"
View file
obs-studio-32.2.0~beta2.tar.xz/plugins/win-capture/CMakeLists.txt -> obs-studio-32.2.0~beta3.tar.xz/plugins/win-capture/CMakeLists.txt
Changed
@@ -76,6 +76,9 @@ # Remove once jansson has been fixed on obs-deps target_link_options(win-capture PRIVATE /IGNORE:4098) +configure_file(cmake/windows/obs-module.rc.in win-capture.rc) +target_sources(win-capture PRIVATE win-capture.rc) + set_target_properties_obs(win-capture PROPERTIES FOLDER plugins/win-capture PREFIX "") add_subdirectory(graphics-hook)
View file
obs-studio-32.2.0~beta3.tar.xz/plugins/win-capture/cmake
Added
+(directory)
View file
obs-studio-32.2.0~beta3.tar.xz/plugins/win-capture/cmake/windows
Added
+(directory)
View file
obs-studio-32.2.0~beta3.tar.xz/plugins/win-capture/cmake/windows/obs-module.rc.in
Added
@@ -0,0 +1,24 @@ +1 VERSIONINFO +FILEVERSION ${OBS_VERSION_MAJOR},${OBS_VERSION_MINOR},${OBS_VERSION_PATCH},0 +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904B0" + BEGIN + VALUE "CompanyName", "${OBS_COMPANY_NAME}" + VALUE "FileDescription", "OBS Windows Capture module" + VALUE "FileVersion", "${OBS_VERSION_CANONICAL}" + VALUE "ProductName", "${OBS_PRODUCT_NAME}" + VALUE "ProductVersion", "${OBS_VERSION_CANONICAL}" + VALUE "Comments", "${OBS_COMMENTS}" + VALUE "LegalCopyright", "${OBS_LEGAL_COPYRIGHT}" + VALUE "InternalName", "win-capture" + VALUE "OriginalFilename", "win-capture" + END + END + + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x0409, 0x04B0 + END +END
View file
obs-studio-32.2.0~beta2.tar.xz/plugins/win-capture/data/compatibility.json -> obs-studio-32.2.0~beta3.tar.xz/plugins/win-capture/data/compatibility.json
Changed
@@ -659,6 +659,34 @@ "window_capture_wgc": false, "message": "Wuthering Waves may require OBS to be run as admin to use Game Capture.", "url": "https://obsproject.com/kb/game-capture-troubleshooting" + }, + { + "name": "Hearthstone Deck Tracker", + "translation_key": "Compatibility.WindowCapture.BitBlt", + "severity": 1, + "executable": "HearthstoneDeckTracker.exe", + "window_class": "", + "window_title": "HearthstoneOverlay", + "match_flags": 3, + "game_capture": false, + "window_capture": true, + "window_capture_wgc": false, + "message": "Hearthstone Deck Tracker can not be captured by using the selected Capture Method (BitBlt).", + "url": "" + }, + { + "name": "Hearthstone Deck Tracker", + "translation_key": "Compatibility.GameCapture.Blocked", + "severity": 1, + "executable": "HearthstoneDeckTracker.exe", + "window_class": "", + "window_title": "HearthstoneOverlay", + "match_flags": 3, + "game_capture": true, + "window_capture": false, + "window_capture_wgc": false, + "message": "Hearthstone Deck Tracker cannot be captured using Game Capture. Use Window Capture or Display Capture instead.", + "url": "" } }
View file
obs-studio-32.2.0~beta2.tar.xz/plugins/win-capture/data/package.json -> obs-studio-32.2.0~beta3.tar.xz/plugins/win-capture/data/package.json
Changed
@@ -1,11 +1,11 @@ { "$schema": "schema/package-schema.json", "url": "https://obsproject.com/obs2_update/win-capture/v1", - "version": 9, + "version": 10, "files": { "name": "compatibility.json", - "version": 9 + "version": 10 } }
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.