Browse Source

* [Linux] BugFix: Free the mouse cursor when triggering SIGTRAP on Linux to ensure that the cursor is available for debugging.

Robert MacGregor 3 years ago
parent
commit
070a3a30b6
1 changed files with 11 additions and 0 deletions
  1. 11 0
      Engine/source/platformX86UNIX/x86UNIXProcessControl.cpp

+ 11 - 0
Engine/source/platformX86UNIX/x86UNIXProcessControl.cpp

@@ -24,6 +24,8 @@
 #include "platformX86UNIX/x86UNIXState.h"
 #include "platformX86UNIX/x86UNIXStdConsole.h"
 #include "platform/platformInput.h"
+#include "windowManager/platformWindow.h"
+#include "windowManager/platformWindowMgr.h"
 #include "console/console.h"
 
 #include <stdlib.h>
@@ -165,6 +167,15 @@ void Platform::debugBreak()
    Con::errorf(ConsoleLogEntry::General, 
       "Platform::debugBreak: triggering SIGSEGV for core dump");
    //kill(getpid(), SIGSEGV);
+
+   // On Linux, the mouse cursor will remain trapped when the SIGTRAP below triggers so we ensure the mouse
+   // locked state is disabled prior to dropping to debug
+   PlatformWindow* firstWindow = WindowManager->getFirstWindow();
+   if (firstWindow)
+   {
+       firstWindow->setMouseLocked(false);
+   }
+
    kill(getpid(), SIGTRAP);
 }