Cuperino / QPrompt-Teleprompter

Teleprompter software for all video creators. Built with ease of use, productivity, control accuracy, and smooth performance in mind.
https://qprompt.app
GNU General Public License v3.0
354 stars 22 forks source link

Screen Projection works incorrectly if editor is not on Display1 #243

Open InvaderSnarf opened 5 months ago

InvaderSnarf commented 5 months ago

Screen Projection seems to be broken when trying to project to a screen when the editor is not on Display1. Have tried this across two desktops with multi displays and 1 laptop with an external display.

If the editor is not on the screen that is labeled as Display1, the projection does not work correctly and either doubles up and covers the editor or will just not project the content to the correct display entirely.

Tested this on another system and just dragged the editor off of what windows calls display1 and the issue replicated itself.

Cuperino commented 5 months ago

Hello,

Thank you for the detailed explanation.

Please provide the following information so we can attempt to replicate this issue.

Device information

You can find some of these details on QPrompt's about page.

InvaderSnarf commented 5 months ago

Qprompt version: 1.1.6(v1.1/51788eb) OS: Was found on a machine running Windows 10 and replicated on two other systems running windows 11 OS Versions: Windows 11 Pro version 10.0.22621 build 22621 & Win10 Pro version 10.0.19045 Build 19045 QT version: Qt 5.15.9 KDE Frameworks: 5.100.0

Cuperino commented 5 months ago

Excellent, thank you very much!

mowenfarhat commented 4 months ago

was this fixed for QPrompt 1.2.0 Early Access build 06 ? because i have the same issue . when i enable projection. i have two screens 1 and 2 , and both screens set as extended displays. when i project on screen number 2 , and i have QPrompt opening at screen 1 , then if i minimize QPrompt the projection disappears from screen number 2

Cuperino commented 4 months ago

Hi @mowenfarhat,

No, this has not been fixed in the early access builds, and, unfortunately, it won't be fixed for the next release of QPrompt either.

Screen projections are the hardest problem to solve in teleprompter software, with many edge cases that need to be addressed. Based on your description I can tell that your problem is different from the one initially addressed on this thread.

When copying the prompter's contents, an image on the GPU is grabbed from the main screen and read from the same GPU location while processing the other windows. The other windows asume there will always be an image there, but this isn't the case when you minimize in some systems, Windows included, causing QPrompt to crash.

Unfortunately, I can't do anything about this the way the code is presently structured. I'm in the process of re-structuring it using a newer version of the Qt framework (the primary framework used for making QPrompt), but even when I find a solution that works, there are dependencies on other frameworks that that are not compatible with this version of Qt, which are preventing us from making a proper release.

The current implementation of this feature has the most problems under Windows because of a series of optimizations done on Windows to improve performance. These include crashes and, sometimes, incorrect window placement. There are no crashes in MacOS, but screen detection is buggy on Apple Silicon, so the main window will only be placed on the primary screen and the projection only on the second display. Linux is the system with the least problems, never failing on window placement, and only ever crashing on distributions that use uncommon window managers. All systems are and will forever be incompatible with mixing use of multiple graphics cards, which will, under most certainly, result in a crash. If mixing multiple

In the meantime, please read the following forum thread, which will hopefully give you things you could attempt to mitigate the problem:

https://forum.cuperino.com/t/qprompt-crashes-when-switching-on-a-secondary-display/98/16

Hope this helps. Sorry for the inconvenience.

Javier

videosmith commented 4 months ago

Is it possible to adapt your code from Imaginary for this feature?

Cuperino commented 4 months ago

@videosmith It would involve a mayor re-writing of QPrompt, but it should be possible. I will not do it because I know perfecting the current approach is be better in the long term, as it also opens the door to adding NDI support and other forms of streaming.

The way I designed this feature in Imaginary Teleprompter is also wrong from an architectural standpoint. As a result Imaginary has a few bugs which are literally impossible to fix.

Issue 53 is also the most common complaint users have had with Imaginary Teleprompter.