Fix the renderer thread causing NvConnection.stop() to block forever. Remove the hack to workaround this bug.
Terminate the controller listener thread when the connection is interrupted. Start the controller listener only after the connection is established. Call dispose() on a different thread since Swing doesn't like it when that's called on an interrupted thread.