extern "C" void play_sound_for_message(const char* str);
#endif
+#ifdef SAFERHANGUP
+#include <qtimer.h>
+#endif
+
// Warwick prefers it this way...
#define QT_CHOOSE_RACE_FIRST
updateTiles();
//setFocusPolicy(StrongFocus);
+#ifdef SAFERHANGUP
+ QTimer* deadman = new QTimer(this);
+ connect(deadman, SIGNAL(timeout()), SLOT(timeout()));
+ deadman->start(2000); // deadman timer every 2 seconds
+#endif
}
+#ifdef SAFERHANGUP
+// The "deadman" timer is received by this slot
+void NetHackQtMapWindow::timeout() {}
+#endif
+
void NetHackQtMapWindow::moveMessages(int x, int y)
{
QRect u = messages_rect;
// Process events until a key arrives.
//
- while (keybuffer.Empty()) {
+ while (keybuffer.Empty()
+#ifdef SAFERHANGUP
+ && !program_state.done_hup
+#endif
+ ) {
qApp->enter_loop();
}
+#ifdef SAFERHANGUP
+ if (program_state.done_hup && keybuffer.Empty()) return '\033';
+#endif
return keybuffer.GetAscii();
}
// Process events until a key or map-click arrives.
//
- while (keybuffer.Empty() && clickbuffer.Empty()) {
+ while (keybuffer.Empty() && clickbuffer.Empty()
+#ifdef SAFERHANGUP
+ && !program_state.done_hup
+#endif
+ ) {
qApp->enter_loop();
}
+#ifdef SAFERHANGUP
+ if (program_state.done_hup && keybuffer.Empty()) return '\033';
+#endif
if (!keybuffer.Empty()) {
return keybuffer.GetAscii();
} else {
return TRUE;
bool result=QApplication::notify(receiver,event);
+#ifdef SAFERHANGUP
+ if (program_state.done_hup) {
+ keybuffer.Put('\033');
+ qApp->exit_loop();
+ return TRUE;
+ }
+#endif
if (event->type()==QEvent::KeyPress) {
QKeyEvent* key_event=(QKeyEvent*)event;