I’m porting a large Psychopy program from version 1.90 to the latest version (2022.2.5). The underlying hardware has also updated from an Intel MBP c. 2018 to an M1 MBP c. 2021, along with the MacOS (currently Ventura 13.2.1).
I’m having a problem displaying stimuli.
I’m using the frame-based method for determining how long stimuli are displayed:(Presenting Stimuli — PsychoPy v2023.1.1)
That is, I write all the desired stimuli to the buffer (using stimulus.draw()).
Then I figure out how many frames (N) are required to reach the requested duration, and then call win.flip() N times.
Because I want the stimuli to persist across each flip, I call win.flip(clearBuffer=False).
This used to work just fine.
But now with the new psychopy version, computer, macOS version, etc., the stimulus is flickering. Upon closer inspection, it appears that each call to win.flip(clearBuffer=False) alternates between displaying a blank screen and displaying the stimulus from the buffer.
My question is: how do I keep this stimulus flickering from happening?
A couple other tidbits that may be helpful:
The following post seems to address some unpredictable behavior from clearBuffer=False. Does anyone know if that’s what’s happening to me, and if so what a workaround may be?
Also, I’ve considered setting autoDraw=True for each stimulus and/or redrawing the stimulus with each flip. Both of these methods work. However, the program is structured such that a general method controls the timing (along with the window flips), while task-specific methods draw the stimuli. Therefore the timing method doesn’t know about the stimuli, so it wouldn’t be able to redraw them for each frame, nor set autoDraw=False when the epoch is over.
So if one of these 2 approaches (autoDraw or redrawing with each flip) is advised, any suggestions on how to either turn off autodraw, or redraw all stimuli, en masse?
Thanks very much for any guidance!