Explorar o código

Merge pull request #606 from Ragora/bugfix-linux-assert-free-cursor

* [Linux] BugFix: Free the mouse cursor when triggering SIGTRAP
Jeff Hutchinson %!s(int64=3) %!d(string=hai) anos
pai
achega
026409ed7f
Modificáronse 1 ficheiros con 11 adicións e 0 borrados
  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);
 }