diff --git a/modules/camera/src/vkcv/camera/CameraManager.cpp b/modules/camera/src/vkcv/camera/CameraManager.cpp
index 497278292e9bf1626c9e766fd9bd96a7c5cecaff..d539994dc0071dd52764477a86ff202955c1b8f3 100644
--- a/modules/camera/src/vkcv/camera/CameraManager.cpp
+++ b/modules/camera/src/vkcv/camera/CameraManager.cpp
@@ -20,6 +20,7 @@ namespace vkcv::camera {
 		m_window.e_mouseScroll.remove(m_mouseScrollHandle);
 		m_window.e_mouseButton.remove(m_mouseButtonHandle);
 		m_window.e_resize.remove(m_resizeHandle);
+		m_window.e_gamepad.remove(m_gamepadHandle);
     }
 
     void CameraManager::bindCameraToEvents() {
diff --git a/src/vkcv/Window.cpp b/src/vkcv/Window.cpp
index 36c105654dd1ac0263c769be9b01083ce39b4d41..bca207443e4462405229bfd502adbacaee9e37e8 100644
--- a/src/vkcv/Window.cpp
+++ b/src/vkcv/Window.cpp
@@ -119,7 +119,8 @@ namespace vkcv {
 
     void Window::onGamepadEvent(int gamepadIndex) {
         auto window = static_cast<Window *>(glfwGetJoystickUserPointer(gamepadIndex));
-        if (glfwJoystickPresent(gamepadIndex)) {
+
+        if ( window != nullptr && glfwJoystickPresent(gamepadIndex)) {
             window->e_gamepad(gamepadIndex);
         }
     }