Summary
Viewers currently vsync to the hardware for optimal appearance, but the viewer windows try to sync to the source widget (to share buffers) which causes a desynchronization between the viewer window and the hardware vsync. This leads to a noticeable stutter.
Additional Information / Output
We have to prepare for the inevitability that the viewer window will sync at a different time to the widget. We may have to make a small queue of buffers when windows are open to ensure each window/widget can get the buffer it needs.
Summary Viewers currently vsync to the hardware for optimal appearance, but the viewer windows try to sync to the source widget (to share buffers) which causes a desynchronization between the viewer window and the hardware vsync. This leads to a noticeable stutter.
Additional Information / Output We have to prepare for the inevitability that the viewer window will sync at a different time to the widget. We may have to make a small queue of buffers when windows are open to ensure each window/widget can get the buffer it needs.