summaryrefslogtreecommitdiff
path: root/qt/qt-2.3.7.patch/qte237-keyboard.patch
Side-by-side diff
Diffstat (limited to 'qt/qt-2.3.7.patch/qte237-keyboard.patch') (more/less context) (ignore whitespace changes)
-rw-r--r--qt/qt-2.3.7.patch/qte237-keyboard.patch43
1 files changed, 43 insertions, 0 deletions
diff --git a/qt/qt-2.3.7.patch/qte237-keyboard.patch b/qt/qt-2.3.7.patch/qte237-keyboard.patch
new file mode 100644
index 0000000..b644fd7
--- a/dev/null
+++ b/qt/qt-2.3.7.patch/qte237-keyboard.patch
@@ -0,0 +1,43 @@
+Free the Virtual Terminal and Keyboard on a segfault in all cases...
+
+
+--- qt-2.3.7-old/src/kernel/qwindowsystem_qws.cpp 2004-07-23 15:22:56.000000000 +0200
++++ qt-2.3.7/src/kernel/qwindowsystem_qws.cpp 2004-07-23 15:33:47.000000000 +0200
+@@ -844,6 +844,18 @@
+ {
+ }
+
++static void catchSegvSignal( int )
++{
++#ifndef QT_NO_QWS_KEYBOARD
++ if ( qwsServer )
++ qwsServer->closeKeyboard();
++#endif
++ QWSServer::closedown();
++ fprintf(stderr, "Segmentation fault.\n");
++ exit(1);
++}
++
++
+ /*!
+ \class QWSServer qwindowsystem_qws.h
+ \brief Server-specific functionality in Qt/Embedded
+@@ -936,6 +948,7 @@
+ }
+
+ signal(SIGPIPE, ignoreSignal); //we get it when we read
++ signal(SIGSEGV, catchSegvSignal); //recover the keyboard on crash
+ #endif
+ focusw = 0;
+ mouseGrabber = 0;
+--- qt-2.3.7-old/src/kernel/qkeyboard_qws.cpp 2004-07-23 15:22:56.000000000 +0200
++++ qt-2.3.7/src/kernel/qkeyboard_qws.cpp 2004-07-23 15:33:46.000000000 +0200
+@@ -238,7 +238,7 @@
+ { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, // 63
+ { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, // 64
+ { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, // 65
+- { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, // 66
++ { Qt::Key_F14, 0xffff , 0xffff , 0xffff }, // 66
+ { Qt::Key_Meta, 0xffff , 0xffff , 0xffff }, // 67
+ { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, // 68
+ { Qt::Key_unknown, 0xffff , 0xffff , 0xffff }, // 69