QPrompt crashes when 'switching on' a secondary display

Hello. I have downloaded the latest version of QPrompt. The platform is and alienware r15, windows 11, all updates installed.

I run Qprompt, and enable projection with a second display connected. I have tried both a dsiplay connected by USB (using DUET) and and HDMI.

Clicking on “//./ Display xx” causes qPrompt to crash - this happens for both types of connection to a display.

If I use the secondary display as the primary, Qprompt works as expected… I.E the laptop has the projected content with the selected horizontal flip, etc.

???

Help would be appreciated.

Thank you

Hi @Steve.WR,

I’m sorry to hear this. QPrompt has a few workarounds that have been put place on the Windows version to prevent this kind of behavior that’s specific to Windows. In order to find the exact circumstance in which this bug keeps happening, I’ll need you to provide as much detail as you can about the steps you follow and your setup, in order for me to try to replicate the issue.

Please answer the following questions to the best of your abilities

  • When you adjust the opacity slider that shows at the bottom of QPrompt’s main window, does the background become black or transparent, letting you see the desktop?
  • When the crash occurs, how many QPrompt windows are showing and where are they displayed?
  • What model of Nvidia graphics does your Alienware r15 has?
  • What model of CPU does your Alienware r15 have?
  • What exact version of QPrompt are you running? You will find it by opening QPrompt’s menu to the top left, and going to About QPrompt. It should say 1.1.6 (v1.1/51788eb) if you’re running the latest stable version or something like 1.2.0 (v1.2/#######) if you’re running a pre-release.

Your issue is probably caused by either the way Windows 11 optimizes fullscreen apps or due to optimizations in Nvidia graphics done in addition to Windows’.

Please try the following and report whether it helps or not

  1. Open NVIDIA Control Panel
  2. Go to Manage 3D Settings
  3. Enter the Program Settings tab
  4. Choose QPrompt from the dropdown, add if not present
  5. Select your GPU of choice. QPrompt is thoroughly tested using Intel graphics on all platforms and receives limited testing with Nvidia and AMD graphics under Linux.
  6. If you select High-performance NVIDIA processor, change OpenGL GDI compatibility to Prefer compatible
  7. If step 6 doesn’t help try also changing these other settings and report your findings “Vulkan/OpenGL present method”, switch off performance settings that are globally set on. Do one at a time, and please keep record of your changes.

If that doesn’t solve your issue, restore any changes done in step 7, then do this to fully fix the problem:

  1. Search for QPrompt in the start menu, but don’t open it
  2. Right click on QPrompt and go to Open file location, a Windows explorer window will open on a folder that contains a shortcut link to QPrompt.
  3. Right click on the shortcut to QPrompt, a context menu will open.
  4. Click on Properties
  5. Go to the Compatibility tab
    If Windows won’t let you go to the compatibility tab because of something to do with workingDirectory, remove {workingDirectory} from the Start in: field and re-try step 5.
  6. In the compatibility tab, check the checkbox that goes Disable fullscreen optimizations.
  7. Press Apply.
  8. Press Change settings for all users, if QPrompt is used from more than one Windows user account.

A bit more context on what I think it’s happening

The way projections work is by rendering the contents of the prompter into an OpenGL frame buffer, that buffer is then used to display the prompter’s contents on two or more separate windows, first the main window, then all the windows on all other displays in parallel. Windows and Nvidia try to optimize performance by “not rendering the contents of windows that have been occluded”, assuming they don’t need to be shown. When the projection opens in full screen, your system could be erroneously determining that it doesn’t need to render the contents of the first window anymore, probably assuming the fullscreen window will occlude the main window, although they open on a different display. When the second window tries to draw the contents from the frame buffer into the screen, they aren’t there, which results in an illegal access, which causes QPrompt to crash.

I hope this information helps. Thank you for informing us of this issue. Please report your findings, as this may help me prevent the issue from inside QPrompt, for the next or a future release.

Kind regards,
Javier

P.S. Please use our issue tracker to report future issues. This prevents them from being forgotten if I were unable to act on them on time. The issue tracker can be found by going to: https://feedback.qprompt.app

Greetings, Javier :slightly_smiling_face:

THANK YOU for your prompt and very informative reply!

Answering your questions:

  1. Opacity - The background becomes transparent - I see the underlying desktop.
  2. On crash - only the one QPrompt screen is visible - on the desktop. Nothing appears on the secondary display.
  3. Graphics Adapter - 2 present… Nvidia GeForce GTX 1070 and Intel UHD Graphic 630
  4. Processor - Intel i7-8750H 2.2GHz 6-core
  5. QPrompt version - 1.1.6 (v1.1/51788eb)

I’ll go through your suggestions and let you know how I get on…

Thank you, once again!

Steve

OK…

Followed all the steps without any joy… Your last sentence in the likely cause of the issue sounds very likely because on clicking “\.\Display24” (difficult to parse that - what does that mean?) I see “\.\Display24 : No Mirror” but at that point, there is a short delay and then the crash… I see no attempt to open a second screen.

I have managed to have QPrompt running on my old Mac so I have a workaround… It would be great to the the Windows version up an running too…

I look forward to future releases!!

Cheers

Steve

Very interesting… I’d like to determine whether your issue is specific to Windows or to the Nvidia graphics. Could you please try doing the following, using both Duet and HDMI, and let me know if it helps?

  • Open NVIDIA Control Panel
  • Go to Manage 3D Settings
  • Enter the Program Settings tab
  • Choose QPrompt from the first dropdown
  • Choose Integrated graphics on the second dropdown
  • Close the settings app and test QPrompt

That’s the name given by Windows to identify your display, QPrompt just shows it. Linux follows a much more legible naming scheme.

Could you also send a screenshot of the list of displays being shown under Projections? Duet could also be creating a “virtual” display that perhaps might break some of my assumptions for identifying displays. If this were the case, maybe uninstalling Duet and restarting may allow QPrompt to work over HDMI.

I’ve opened an issue to track this, over at the issue tracker: Windows crashes related to screen projections and auto full screen · Issue #103 · Cuperino/QPrompt · GitHub

RE your question about the potential regarding Duet, I also the same crash problem with a secondary display connected via HDMI…

I do not have both Duet running and an external HDMI monitor connectd at the same time… it is one or the other. I am happy to temporarily uninstall Duet to see if the correction functioality returns to QPrompt but has to be a temporary fix… the HDMI monitor, though modest in size will not fit into the teleprompter!

As to the 3D settings affecting the integrated graphics, there is no setting “Integrated graphics” under the 3d settings > Program Settings, etc. Even the GPU options only offer the GeForce…

I have attached a screen capture… I hope it what you asked for since there is no “Projections” in the menu bar… The white square you see is what appear when clicking on ‘Display 24’… I see the same behaviour for both Duet and HDMI attached monitors…

Just to be sure you have a complete story, perhaps I should clarify “crash” - QPrompt freezes and Windows indicates it is not responding.

I am happy to temporarily uninstall Duet to see if the correct functionality returns to QPrompt but has to be a temporary fix…

Sure, it would then be a test to determine whether Duet is part of the problem or not. Do the test when you have time.

As to the 3D settings affecting the integrated graphics, there is no setting “Integrated graphics” under the 3d settings > Program Settings, etc. Even the GPU options only offer the GeForce…

Interesting… This probably means the Intel UHD Graphic 630 has been disabled at the BIOS/EFI level. Re-enabling it there, if it’s even possible, would make the option appear.

I have attached a screen capture…

Just what I needed. Thank you very much!

Just to be sure you have a complete story, perhaps I should clarify “crash” - QPrompt freezes and Windows indicates it is not responding.

This matches my experiences of previous crashes on Windows. I’m very surprised to see you facing this issue. If you can think of anything else that might help me replicate this issue, please let me know.

Hello!

OK… I uninstalled duet… no change… the crash still occurs with no apparent change in how it occurs…

As to the Intel Graphics, it is enabled… just not visible in any useful way in the nVidia control panel… well, not in the 3D settings anyway.

I did open the intel Graphics app which did not have much in the way of user settings but it did prompt me to add qPrompt to the graphics systems settings for Windows… Here, it allows you to
“let windows decide”
“power saving” - i.e. use the Intel Graphics
“high performance” i.e. use nVidia

Tried each in turn - still with no joy.

I still have a machine running dual monitors Windows 10… I will install qPrompt and see how things work out…
… a few minutes later…
It works fine!!

You’ve helped me determined it is unlikely “Duet” has anything to do with this issue. We cannot fully discard it without knowing what changes Duet does to the system, which I might be able to check, but this is good enough for now.

QPrompt does work fine in most machines with Windows 10 and 11. There’s something about your system’s configuration that’s causing this issue, and I’m almost out of ideas of what that might be. I will try to replicate in the Windows 11 machine I typically use for testing, but I have different graphics chips (same brands tho), so it may not crash at all of its a chip specific issue.

Make sure you have the newest, stable, official drivers from Nvidia installed, as that might help.

QPrompt is slowly undergoing a transition from an older version of the framework used for its foundation, to the newest version of that framework. (That is, we’re going from Qt 5.15.8 to Qt 6.5.0 or later.) As part of that transition, I must re-write the entire screen projections functionality because the current implementation is incompatible with Qt 6. Hopefully the new implementation won’t suffer from these issues.

Sorting this one out will take a while, as the release transitioned to Qt 6, despite being almost complete, isn’t expected to come out until early 2025, since we only make feature releases once at the start of the year, it’s too late to get this done for 2024, and our infrastructure doesn’t allow us to ship Qt 6 builds yet.

Greetings!

I can imagine, with the huge variety of hardware out there, that it is all but inevitable that some compatibility issues will arise… That does not stop me from being VERY grateful for the work you have put into QPrompt…

I do use it on a Mac and that is working perfectly so no complaints… And I am not sure how there coukd be since QPrompt is free to use!

I have a desktop running Windows 11… QPrompt works as expected oni there so it seems there is something oddball in the Alienware… I will see if I can disable the Intel graphics adapter… Perhaps having more than one adapter is enough to cause issues…

I’ll keep an eye out for futire releases!

Cheers

Steve

Thank you for your kind words! It’s a lot of effort to make sure all supported platforms are treated with the same level of respect.

Mac does have one bug regarding screen projections. Apple Silicon versions of MacOS can’t list the displays, and because of this you can only project to the first free screen in which the main window is not at. This still works great for most people, as almost no one tries to use more than two displays at once for performance reasons.

I don’t think having more than one adapter is enough to cause this issue, unless one display is being controlled by one graphics adapter and the other by a different adapter. In that case, QPrompt will either crash or project nothing. I heard a while back that not all laptop integrations of the internal display between graphics adapters are created equal. If there’s one that forces data to be copied between the GPUs, that might also explain the crash.

Enforcing the use of a single GPU on this machine will probably help.

I recall I had no issues with Imaginary Teleprompter with a combination of windows 11 and the Alienware… Just to be sure, I have just tried it and appears to work fine…

Just thought this information might be of use :slight_smile:

Thanks.

The way Imaginary Teleprompter provides support for multiple screens is fundamentally different from QPrompt’s, and it’s flawed by design. The good thing is Imaginary Teleprompter will never crash because it doesn’t copy contents from the GPU. Instead it opens two teleprompter instances and tries to keep them synchronized using various techniques based on a premise of text proportionality that doesn’t always hold true, because of how fonts work. As a result, Imaginary Teleprompter suffers from jitter and will go out of sync at times.

I created QPrompt, in part, to overcome my design flaws in making Imaginary Teleprompter, after attempting for years to solve those synchronization issues.