InkyPHAT_SSD1608 - _busy_wait returning too early? (Videos included)

I have a multithreaded program running on a Raspberry Pi Zero which uses a Python queue to manage changes to the screen. I want to ensure that the screen has settled/stopped flashing before a user can make a change.

I’ve used an older inky screen (instantiated using inky_display = InkyPHAT("black")) and this has the desirable behaviour of returning only after the screen has “settled” (i.e stops flashing/refreshing).

However when I try to use a newer inky screen (instantiated using inky_display = InkyPHAT_SSD1608("black")), this seems to return far too early.

I’ve linked two videos below which demonstrate the difference between the two screens. The “double beep” sound indicates when the Python future has returned.

Sound warning! A couple loud beeps

  1. InkyPHAT - returning after settling
  2. InkyPHAT_SSD1608 - returning before settling

Does anyone have any ideas on how to get the InkyPHAT_SSD1608 to mirror the older screen’s behaviour?