psychopy.org | Reference | Downloads | Github

Dual-screen display not working for a specific project?

OS: Microsoft Windows Pro 10

PsychoPy version: ver3.2.4

What are you trying to achieve?

I’m trying to make an experiment that specifically works on an extended screen to prevent participants from seeing the paradigm switching happening on the main screen (two screens: one on the lab computer for us to keep in track with experiment progression, and a second one in another room for the participants to see); however, it isn’t working for our code on Windows 10.

Demo script screensAndWindows.py works (interestingly, even without gammaErrorPolicy or defaultGammaFailPolicy set to ignore/warn) with True and False settings, demonstrating that it should absolutely be possible. In addition, on my Ubuntu system, I’ve verified that my script (and screensAndWindows.py) work for extended display, pointing to it being a system-specific problem, and my script works on Windows so long as I don’t have extended display; however, given my situation, this isn’t sufficient.

I’m aware that this is an issue for Windows 1903; however, given screensAndWindows.py working and my gammaErrorPolicy/defaultGammaFailPolicy tags, this seems significant enough to bring up on its own.

Things I’ve tried:

  • pyglet is set to 1.3.2
  • I’ve tried every combination of gammaErrorPolicy=‘warn’ and defaultGammaFailPolicy=‘warn’
  • I copied and pasted the winL and winR code from screensAndWindows.py, only changing the variable names to fit with the rest of my code, to see if there was an extra constructor field which broke it, but it still didn’t work with that either

Error log:

Traceback (most recent call last):
  File "C:\Users\User Name\Desktop\paradigm_folder\paradigm.py", line 66, in <module>
    color=[1,1,1])
  File "C:\Users\User Name\AppData\Roaming\psychopy3\versions\psychopy\visual\window.py", line 389, in __init__
    self.backend = backends.getBackend(win=self, *args, **kwargs)
  File "C:\Users\User Name\AppData\Roaming\psychopy3\versions\psychopy\visual\backends\__init__.py", line 32, in getBackend
    return Backend(win, *args, **kwargs)
  File "C:\Users\User Name\AppData\Roaming\psychopy3\versions\psychopy\visual\backends\pygletbackend.py", line 227, in __init__
    self._origGammaRamp = self.getGammaRamp()
  File "C:\Users\User Name\AppData\Roaming\psychopy3\versions\psychopy\visual\backends\pygletbackend.py", line 329, in getGammaRamp
    return getGammaRamp(self.screenID, self.xDisplay)
  File "C:\Users\User Name\AppData\Roaming\psychopy3\versions\psychopy\visual\backends\gamma.py", line 128, in getGammaRamp
    raise AssertionError('GetDeviceGammaRamp failed')
AssertionError: GetDeviceGammaRamp failed
11.4044     WARNING     Monitor specification not found. Creating a temporary one...
Exception ignored in: <bound method Window.__del__ of <psychopy.visual.window.Window object at 0x000002458A17AC50>>
Traceback (most recent call last):
  File "C:\Users\User Name\AppData\Roaming\psychopy3\versions\psychopy\visual\window.py", line 501, in __del__
    self.close()
  File "C:\Users\User Name\AppData\Roaming\psychopy3\versions\psychopy\visual\window.py", line 1327, in close
    self.backend.close()  # moved here, dereferencing the window prevents
AttributeError: 'NoneType' object has no attribute 'close'

The window instantiation code:

win_disp = visual.Window(
    size=[810, 540], fullscr=False, screen=0, 
    winType='pyglet', allowGUI=True, allowStensil=False,
    monitor='MacBookPro', waitBlanking=False,
    gammaErrorPolicy='warn', defaultGammaFailPolicy='ignore',
    color=[1,1,1])
win = visual.Window(
    size=[3840, 1080], fullscr=True, screen=1, 
    winType='pyglet', allowGUI=False, allowStencil=False,
    monitor='MacBookPro', color=[-1,-1,-1], colorSpace='rgb',
    blendMode='avg', useFBO=True, defaultGammaFailPolicy='ignore',
    units='height', gammaErrorPolicy='warn')

Any help or suggestions are welcome!