Author: mir3x
Date: Tue Aug 16 17:31:06 2016
New Revision: 33622

URL: http://svn.gna.org/viewcvs/freeciv?rev=33622&view=rev
Log:
Qt client - fixed version message not shown at Qt-client
Reported by Marko Lindqvist <cazfi>
Patch by Louis Moureaux <louis94>

See bug #24935


Modified:
    branches/S2_6/client/gui-qt/chatline.cpp
    branches/S2_6/client/gui-qt/chatline.h
    branches/S2_6/client/gui-qt/fc_client.cpp
    branches/S2_6/client/gui-qt/fc_client.h
    branches/S2_6/client/gui-qt/pages.cpp

Modified: branches/S2_6/client/gui-qt/chatline.cpp
URL: 
http://svn.gna.org/viewcvs/freeciv/branches/S2_6/client/gui-qt/chatline.cpp?rev=33622&r1=33621&r2=33622&view=diff
==============================================================================
--- branches/S2_6/client/gui-qt/chatline.cpp    (original)
+++ branches/S2_6/client/gui-qt/chatline.cpp    Tue Aug 16 17:31:06 2016
@@ -16,6 +16,7 @@
 #endif
 
 //Qt
+#include <QApplication>
 #include <QScrollBar>
 #include <QStyleFactory>
 
@@ -33,6 +34,7 @@
 // gui-qt
 #include "colors.h"
 #include "fc_client.h"
+#include "gui_main.h"
 #include "qtg_cxxside.h"
 
 #include "chatline.h"
@@ -556,12 +558,17 @@
 }
 
 /**************************************************************************
+  Version message event constructor.
+**************************************************************************/
+version_message_event::version_message_event(const QString &message) :
+  QEvent(QEvent::User),
+  message(message)
+{}
+
+/**************************************************************************
   Got version message from metaserver thread.
 **************************************************************************/
 void qtg_version_message(const char *vertext)
 {
-  /* FIXME - this will crash at some point - event will come 
-   * later with non existent pointer
-  output_window_append(ftc_client, vertext);
-  */
-}
+  current_app()->postEvent(gui(), new version_message_event(vertext));
+}

Modified: branches/S2_6/client/gui-qt/chatline.h
URL: 
http://svn.gna.org/viewcvs/freeciv/branches/S2_6/client/gui-qt/chatline.h?rev=33622&r1=33621&r2=33622&view=diff
==============================================================================
--- branches/S2_6/client/gui-qt/chatline.h      (original)
+++ branches/S2_6/client/gui-qt/chatline.h      Tue Aug 16 17:31:06 2016
@@ -23,6 +23,7 @@
 }
 
 //Qt
+#include <QEvent>
 #include <QTextBrowser>
 #include <QLineEdit>
 #include <QCheckBox>
@@ -62,4 +63,12 @@
 
 };
 
+class version_message_event : public QEvent
+{
+  QString message;
+public:
+  explicit version_message_event(const QString &message);
+  QString get_message() const { return message; }
+};
+
 #endif                        /* FC__CHATLINE_H */

Modified: branches/S2_6/client/gui-qt/fc_client.cpp
URL: 
http://svn.gna.org/viewcvs/freeciv/branches/S2_6/client/gui-qt/fc_client.cpp?rev=33622&r1=33621&r2=33622&view=diff
==============================================================================
--- branches/S2_6/client/gui-qt/fc_client.cpp   (original)
+++ branches/S2_6/client/gui-qt/fc_client.cpp   Tue Aug 16 17:31:06 2016
@@ -365,6 +365,21 @@
 /****************************************************************************
   Event handler
 ****************************************************************************/
+bool fc_client::event(QEvent *event)
+{
+  if (event->type() == QEvent::User) {
+    version_message_event vmevt =
+        dynamic_cast<version_message_event&>(*event);
+    set_status_bar(vmevt.get_message());
+    return true;
+  } else {
+    return QMainWindow::event(event);
+  }
+}
+
+/****************************************************************************
+  Event filter
+****************************************************************************/
 bool fc_client::eventFilter(QObject *obj, QEvent *event)
 {
   if (obj == chat_line) {

Modified: branches/S2_6/client/gui-qt/fc_client.h
URL: 
http://svn.gna.org/viewcvs/freeciv/branches/S2_6/client/gui-qt/fc_client.h?rev=33622&r1=33621&r2=33622&view=diff
==============================================================================
--- branches/S2_6/client/gui-qt/fc_client.h     (original)
+++ branches/S2_6/client/gui-qt/fc_client.h     Tue Aug 16 17:31:06 2016
@@ -212,6 +212,7 @@
   unit_label *unitinfo_wdg;
   void add_server_source(int);
   void remove_server_source();
+  bool event(QEvent *event);
 
   enum client_pages current_page();
 

Modified: branches/S2_6/client/gui-qt/pages.cpp
URL: 
http://svn.gna.org/viewcvs/freeciv/branches/S2_6/client/gui-qt/pages.cpp?rev=33622&r1=33621&r2=33622&view=diff
==============================================================================
--- branches/S2_6/client/gui-qt/pages.cpp       (original)
+++ branches/S2_6/client/gui-qt/pages.cpp       Tue Aug 16 17:31:06 2016
@@ -876,21 +876,11 @@
 **************************************************************************/
 void server_scan_error(struct server_scan *scan, const char *message)
 {
-  output_window_append(ftc_client, message);
+  qtg_version_message(message);
   log_error("%s", message);
 
-  switch (server_scan_get_type(scan)) {
-  case SERVER_SCAN_LOCAL:
-    server_scan_finish(lan_scan);
-    lan_scan = NULL;
-    break;
-  case SERVER_SCAN_GLOBAL:
-    server_scan_finish(meta_scan);
-    meta_scan = NULL;
-    break;
-  case SERVER_SCAN_LAST:
-    break;
-  }
+  /* Main thread will finalize the scan later (or even concurrently) -
+   * do not do anything here to cause double free or raze condition. */
 }
 
 


_______________________________________________
Freeciv-commits mailing list
Freeciv-commits@gna.org
https://mail.gna.org/listinfo/freeciv-commits

Reply via email to