summaryrefslogtreecommitdiff
path: root/qt/qt-2.3.8.patch/qte238-keyboard.patch
Side-by-side diff
Diffstat (limited to 'qt/qt-2.3.8.patch/qte238-keyboard.patch') (more/less context) (ignore whitespace changes)
-rw-r--r--qt/qt-2.3.8.patch/qte238-keyboard.patch47
1 files changed, 47 insertions, 0 deletions
diff --git a/qt/qt-2.3.8.patch/qte238-keyboard.patch b/qt/qt-2.3.8.patch/qte238-keyboard.patch
new file mode 100644
index 0000000..0ac321f
--- a/dev/null
+++ b/qt/qt-2.3.8.patch/qte238-keyboard.patch
@@ -0,0 +1,47 @@
+Free the Virtual Terminal and Keyboard on a segfault in all cases...
+
+
+diff -ur qt-2.3.8-old/src/kernel/qkeyboard_qws.cpp qt-2.3.8/src/kernel/qkeyboard_qws.cpp
+--- qt-2.3.8-old/src/kernel/qkeyboard_qws.cpp 2004-07-22 01:07:45.000000000 +0200
++++ qt-2.3.8/src/kernel/qkeyboard_qws.cpp 2004-07-23 19:13:52.000000000 +0200
+@@ -314,7 +314,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
+Nur in qt-2.3.8/src/kernel/: qkeyboard_qws.cpp.orig.
+diff -ur qt-2.3.8-old/src/kernel/qwindowsystem_qws.cpp qt-2.3.8/src/kernel/qwindowsystem_qws.cpp
+--- qt-2.3.8-old/src/kernel/qwindowsystem_qws.cpp 2004-07-22 01:07:45.000000000 +0200
++++ qt-2.3.8/src/kernel/qwindowsystem_qws.cpp 2004-07-23 19:13:52.000000000 +0200
+@@ -1273,6 +1273,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
+@@ -1365,6 +1377,7 @@
+ }
+
+ signal(SIGPIPE, ignoreSignal); //we get it when we read
++ signal(SIGSEGV, catchSegvSignal); //recover the keyboard on crash
+ #endif
+ focusw = 0;
+ mouseGrabber = 0;
+Nur in qt-2.3.8/src/kernel/: qwindowsystem_qws.cpp.orig.