added clearing event queue after fading and after door/envelope requests
[rocksndiamonds.git] / src / screens.c
index 54e27e311f8c4d0f086cb4a1e7207f2eaf291207..758e536d29a16b17e97e7bdc095e29d094ea8f6e 100644 (file)
@@ -1642,6 +1642,7 @@ void DrawMainMenu()
 
   DrawCursorAndText_Main(-1, FALSE, FALSE);
   DrawPreviewLevelInitial();
+  DrawNetworkPlayers();
 
   HandleMainMenu(0, 0, 0, 0, MB_MENU_INITIALIZE);
 
@@ -6445,26 +6446,20 @@ static void changeSetupValue(int screen_pos, int setup_info_pos_raw, int dx)
     ToggleFullscreenOrChangeWindowScalingIfNeeded();
 
   if (si->value == &setup.network_mode &&
-      setup.network_mode &&
-      !network.enabled)
+      setup.network_mode != network.enabled)
   {
-    network.enabled = TRUE;
-
-    SetGameStatus(GAME_MODE_LOADING);
-    SetDrawBackgroundMask(REDRAW_NONE);
+    network.enabled = setup.network_mode;
 
     FadeOut(REDRAW_ALL);
 
-    ClearRectangle(drawto, 0, 0, WIN_XSIZE, WIN_YSIZE);
+    ClearField();
 
     FadeIn(REDRAW_ALL);
 
-    InitNetworkServer();
-
-    SetGameStatus(GAME_MODE_SETUP);
-    SetDrawBackgroundMask(REDRAW_FIELD);
-
-    redraw_mask = REDRAW_ALL;
+    if (network.enabled)
+      InitNetworkServer();
+    else
+      DisconnectFromNetworkServer();
 
     DrawSetupScreen();
   }