[CF-Devel] Client patch: metaserver & connect info

crossfire-devel at archives.real-time.com crossfire-devel at archives.real-time.com
Sat Mar 6 10:49:03 CST 2004


Hello.

I noticed that failure to connect to metaserver wasn't reported to client's 
window, only on the console.
This patch uses draw_info to report failure to player.
I also changed the color of failure to connect to metaserver or server message 
to black (instead of red). Even if it should probably be in red, in split window 
mode this means the 'trying to connect to' and 'can't connect to server' 
messages appear in different windows, making it confusing (imo).

Finally, the information windows weren't correctly updated: frozen in draw_info, 
but released only in do_timeout, which is not called in metaserver mode. So I 
moved the relevant code to a function, to use it in metaserver mode too.

Nicolas
-------------- next part --------------
Index: common/metaserver.c
===================================================================
RCS file: /cvsroot/crossfire/client/common/metaserver.c,v
retrieving revision 1.8
diff -u -r1.8 metaserver.c
--- common/metaserver.c	30 Jan 2004 18:43:34 -0000	1.8
+++ common/metaserver.c	6 Mar 2004 16:39:45 -0000
@@ -167,7 +167,7 @@
     fd = socket(PF_INET, SOCK_STREAM, protox->p_proto);
     if (fd==-1) {
         perror("get_metaserver_info:  Error on socket command.\n");
-	return 1;
+	    return 1;
     }
     insock.sin_family = AF_INET;
     insock.sin_port = htons((unsigned short)meta_port);
@@ -178,14 +178,15 @@
         if (hostbn == (struct hostent *) NULL)
         {
             LOG(LOG_WARNING,"common::metaserver_get_info","Unknown metaserver hostname: %s",metaserver);
-	    return 1;
-	}
+	        return 1;
+	    }
         memcpy(&insock.sin_addr, hostbn->h_addr, hostbn->h_length);
     }
     if (connect(fd,(struct sockaddr *)&insock,sizeof(insock)) == (-1))
     {
-        perror("Can't connect to server");
-	return 1;
+        perror("Can't connect to metaserver");
+        draw_info("\nCan't connect to metaserver.",NDI_BLACK);
+    	return 1;
     }
 
 #ifndef WIN32 /* Windows doesn't support this */
@@ -370,7 +371,7 @@
     draw_info(buf,NDI_BLACK);
     csocket.fd=init_connection(server_ip, use_config[CONFIG_PORT]);
     if (csocket.fd==-1) {
-	draw_info("Unable to connect to server.", NDI_RED);
+	draw_info("Unable to connect to server.", NDI_BLACK);
 	return 1;
     }
     return 0;
Index: gtk/gx11.c
===================================================================
RCS file: /cvsroot/crossfire/client/gtk/gx11.c,v
retrieving revision 1.46
diff -u -r1.46 gx11.c
--- gtk/gx11.c	30 Jan 2004 18:43:34 -0000	1.46
+++ gtk/gx11.c	6 Mar 2004 16:39:59 -0000
@@ -4844,21 +4844,26 @@
   }
 }
 
+void draw_info_windows()
+    {
+    if (draw_info_freeze1) {
+        gtk_text_thaw (GTK_TEXT (gtkwin_info_text));
+        gtk_adjustment_set_value(GTK_ADJUSTMENT(text_vadj), GTK_ADJUSTMENT(text_vadj)->upper-GTK_ADJUSTMENT(text_vadj)->page_size);
+        gtk_text_set_adjustments(GTK_TEXT (gtkwin_info_text),GTK_ADJUSTMENT(text_hadj),GTK_ADJUSTMENT(text_vadj));
+        draw_info_freeze1=FALSE;
+    }
+    if (draw_info_freeze2) {
+        gtk_text_thaw (GTK_TEXT (gtkwin_info_text2));
+        gtk_adjustment_set_value(GTK_ADJUSTMENT(text_vadj2), GTK_ADJUSTMENT(text_vadj2)->upper-GTK_ADJUSTMENT(text_vadj2)->page_size);
+        gtk_text_set_adjustments(GTK_TEXT (gtkwin_info_text2),GTK_ADJUSTMENT(text_hadj2),GTK_ADJUSTMENT(text_vadj2));
+        draw_info_freeze2=FALSE;
+    }
+    }
+
 int do_timeout() {
 
   updatelock=0;
-  if (draw_info_freeze1) {
-    gtk_text_thaw (GTK_TEXT (gtkwin_info_text));
-    gtk_adjustment_set_value(GTK_ADJUSTMENT(text_vadj), GTK_ADJUSTMENT(text_vadj)->upper-GTK_ADJUSTMENT(text_vadj)->page_size);
-    gtk_text_set_adjustments(GTK_TEXT (gtkwin_info_text),GTK_ADJUSTMENT(text_hadj),GTK_ADJUSTMENT(text_vadj));
-    draw_info_freeze1=FALSE;
-  }
-  if (draw_info_freeze2) {
-    gtk_text_thaw (GTK_TEXT (gtkwin_info_text2));
-    gtk_adjustment_set_value(GTK_ADJUSTMENT(text_vadj2), GTK_ADJUSTMENT(text_vadj2)->upper-GTK_ADJUSTMENT(text_vadj2)->page_size);
-    gtk_text_set_adjustments(GTK_TEXT (gtkwin_info_text2),GTK_ADJUSTMENT(text_hadj2),GTK_ADJUSTMENT(text_vadj2));
-    draw_info_freeze2=FALSE;
-  }
+  draw_info_windows();
   if (redraw_needed) {
     display_map_doneupdate(TRUE);
     draw_all_list(&inv_list);
@@ -5951,7 +5956,8 @@
 	    metaserver_get_info(meta_server, meta_port);
 	    metaserver_show(TRUE);
 	    do {
-		ms=get_metaserver();
+            draw_info_windows();
+            ms=get_metaserver();
 	    } while (metaserver_select(ms));
 	    negotiate_connection(use_config[CONFIG_SOUND]);
 	} else {
-------------- next part --------------
_______________________________________________
crossfire-devel mailing list
     
     crossfire-devel at lists.real-time.com
     
     
     https://mailman.real-time.com/mailman/listinfo/crossfire-devel
     
     
    


More information about the crossfire mailing list