Late answer, but after digging into this issue a lot, I found a solution (though I’m not proud of it, it works).
The concept is to add a lifecycle application component in your Player Controller and bind it to the “Application Has Reactivated” delegate event. On reactivation, add a delay (0.3 seconds), send a command (Execute Command blueprint) with r.VSync 1
, then add another delay (0.3 seconds), and send a command with r.VSync 0
.
The delays are important :'(.
I’m sorry, it’s a terrible solution, but at least I get my FPS back.