Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fontend: Make OBSProject a parent window #11773

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

kkartaltepe
Copy link
Collaborator

Description

This window was previously a parent of OBSQTDisplay, however OBSQTDisplay is supposed to be completely rendered by OBS. On linux this causes issues like not having window decorations and weird rendering artifacts during resize. For wayland systems that negotiate explicit sync it also triggers protocol violations (crashes) due to QT and OBS thinking they should be rendering this window.

Instead make the project a parent window owned by Qt that only contains one widget, the OBSQTDisplay. This makes the window behave like the main OBS window and preview.

fixes #6283

I gave up on gnome after seeing that qt and gnome just cant agree on how to fullscreen at the wayland protocol even, and just disable it like cg did in #11558 but only in the known broken config since this probably works on KDE but should be tested.

Still needs windows and mac testing since although its supposed to be more correct do all the sizing before show these changes might not be correct on all platforms.

Motivation and Context

Presumably with syncobj being enabled this could now not only affect nvidia users, gnome enables it by default in wayland now so this issue could surface for anyone if mesa changes defaults.

How Has This Been Tested?

Works on sway/xwayland, "works" on gnome/xwayland.

Types of changes

  • Bug fix (non-breaking change which fixes an issue)

Checklist:

  • My code has been run through clang-format.
  • I have read the contributing document.
  • My code is not on the master branch.
  • The code has been tested.
  • All commit messages are properly formatted and commits squashed where appropriate.
  • I have included updates to all appropriate documentation.

@kkartaltepe kkartaltepe requested a review from cg2121 January 26, 2025 03:51
@kkartaltepe kkartaltepe added Seeking Testers Build artifacts on CI Bug Fix Non-breaking change which fixes an issue labels Jan 26, 2025
@luna-duclos
Copy link

Hello! I took this PR for a spin on my own KDE+Wayland setup on arch linux and can confirm it works.
Projectors work correctly and OBS no longer crashes.

@tytan652
Copy link
Collaborator

tytan652 commented Feb 1, 2025

Commit prefix: fontend -> frontend

@tytan652
Copy link
Collaborator

tytan652 commented Feb 2, 2025

OBSProject -> OBSProjector

This window was previously a parent of OBSQTDisplay, however
OBSQTDisplay is supposed to be completely rendered by OBS. On linux this
causes issues like not having window decorations and weird rendering
artifacts during resize. For wayland systems that negotiate explicit
sync it also triggers protocol violations (crashes) due to Qt and OBS
thinking they should be rendering this window.

Instead make the projector a parent window owned by Qt that only
contains one widget, the OBSQTDisplay. This makes the window behave like
the main OBS window and preview.

fixes obsproject#6283

Co-authored-by: cg2121 <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Bug Fix Non-breaking change which fixes an issue Seeking Testers Build artifacts on CI
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Projector window - no titlebar (Wayland, Gnome)
3 participants