 					}
 				} else {
 					// Full refresh: create a new list of devices
-					gameInputDevices = new Vector.<GameInputDevice>();
-					gameInputDeviceIds = new Vector.<String>();
-					gameInputDeviceDefinitions = new Vector.<AutoGamepadInfo>();
+					gameInputDevices.length = GameInput.numDevices;
+					gameInputDeviceIds.length = GameInput.numDevices;
+					gameInputDeviceDefinitions.length = GameInput.numDevices;
 					for (i = 0; i < GameInput.numDevices; i++) {
-						gameInputDevices.push(GameInput.getDeviceAt(i));
+						gameInputDevices[i] = GameInput.getDeviceAt(i);
 						if (gameInputDevices[i] != null) {
-							gameInputDeviceIds.push(gameInputDevices[i].id);
-							gameInputDeviceDefinitions.push(findGamepadInfo(gameInputDevices[i]));
+							gameInputDeviceIds[i] = gameInputDevices[i].id;
+							gameInputDeviceDefinitions[i] = findGamepadInfo(gameInputDevices[i]);
 						} else {
-							gameInputDeviceIds.push(null);
-							gameInputDeviceDefinitions.push(null);
+							gameInputDeviceIds[i] = null;
+							gameInputDeviceDefinitions[i] = null;
 						}
 					}
 				}

					gameInput.removeEventListener(GameInputEvent.DEVICE_REMOVED, onGameInputDeviceRemoved);
				}

				gameInputDevices = null;
				gameInputDeviceDefinitions = null;
				removeGameInputDeviceEvents();

				_isRunning = false;

			_onActionValueChanged = new SimpleSignal();
			_onDevicesChanged = new SimpleSignal();

			gameInputDevices = new Vector.<GameInputDevice>();
			gameInputDeviceIds = new Vector.<String>();
			gameInputDeviceDefinitions = new Vector.<AutoGamepadInfo>();

			start();
		}

