Issue With Changing AppSettings at Runtime

My game has an in-game settings dialog. Most of it’s settings relate to things that can be easily changed in-game (ie. adding-removing spatials and filters). One that I just tried to add, however, is nonfunctional. Specifically, I attempted to add a vsync setting so that the user can decide if they want to enable it or not.

Here is my code that updates the vsync value in JME. It is in my SettingsAppState that stores the settings data but doesn’t change it (there is a separate SettingsGuiAppState for that). This code is called when the user exits the settings dialog (the vsync variable is updated by said dialog):

AppSettings settings = getApplication().getSettings();
if(settings.isVSync() != vsync){
    System.out.println("Setting vsync to: " + vsync);

When I run this code the println outputs as expected, but, there is no change in the framerate which leads me to believe that vsync was not applied (simply setting it to false from the start yeilds significantly higher framerates). Additionally, after a few seconds the following crash occurs:

Apr 24, 2016 1:13:09 AM handleError
SEVERE: Uncaught exception thrown in Thread[jME3 Main,6,main]
java.lang.IllegalArgumentException: This NativeObject is not registered in this NativeObjectManager
    at com.jme3.util.NativeObjectManager.deleteNativeObject(
    at com.jme3.util.NativeObjectManager.deleteUnused(
    at com.jme3.renderer.opengl.GLRenderer.postFrame(
    at com.jme3.system.lwjgl.LwjglAbstractDisplay.runLoop(
    at com.jme3.system.lwjgl.LwjglCanvas.runLoop(

I should also note that this is taking place in a swing panel with 3.1 alpha.

What is swing panel exactly? You mean canvas, AwtPanel, or something else?

I mean this:

Hmm, that’s odd. The canvas restart() call is stubbed out. Nothing should happen when you call app.restart(). Are you sure you’re using canvas?

When I remove app.restart() the crash dissappears but the vsync setting still isn’t changed.

Would it matter if I am using SwingUtilities.invokeLater rather than EventQueue.invokeLater?

Also, yes, I am using the canvas described in the wiki link.