Fix server sending stuff before textures have been sent
authorPerttu Ahola <celeron55@gmail.com>
Mon, 2 Jan 2012 15:44:00 +0000 (17:44 +0200)
committerPerttu Ahola <celeron55@gmail.com>
Mon, 2 Jan 2012 15:44:00 +0000 (17:44 +0200)
src/game.cpp
src/server.cpp

index 13d1e0c7da058dc28b5adad983e9f7437c46ed05..0d08074ad93b5152513d2f7be1d81683d0644485 100644 (file)
@@ -1011,6 +1011,7 @@ void the_game(
        bool invert_mouse = g_settings->getBool("invert_mouse");
 
        bool respawn_menu_active = false;
+       bool update_wielded_item_trigger = false;
 
        bool show_profiler = false;
        bool force_fog_off = false;
@@ -1663,6 +1664,8 @@ void the_game(
                                else if(event.type == CE_TEXTURES_UPDATED)
                                {
                                        update_skybox(driver, tsrc, smgr, skybox, brightness);
+                                       
+                                       update_wielded_item_trigger = true;
                                }
                        }
                }
@@ -2274,7 +2277,12 @@ void the_game(
                {
                        //infostream<<"Updating local inventory"<<std::endl;
                        client.getLocalInventory(local_inventory);
-
+                       
+                       update_wielded_item_trigger = true;
+               }
+               if(update_wielded_item_trigger)
+               {
+                       update_wielded_item_trigger = false;
                        // Update wielded tool
                        InventoryList *mlist = local_inventory.getList("main");
                        InventoryItem *item = NULL;
index 5bd072d0270d5694d8ef6d91ed16fc3b43456c3d..b76d0e41aec17fd90e3eda2b81d1cdeecf675b40 100644 (file)
@@ -2140,9 +2140,6 @@ void Server::ProcessData(u8 *data, u32 datasize, u16 peer_id)
                        m_con.Send(peer_id, 0, data, true);
                }
                
-               // Now the client should know about everything
-               getClient(peer_id)->definitions_sent = true;
-               
                // Send information about server to player in chat
                SendChatMessage(peer_id, getStatusString());
                
@@ -2849,6 +2846,10 @@ void Server::ProcessData(u8 *data, u32 datasize, u16 peer_id)
                }
 
                SendTexturesRequested(peer_id, tosend);
+
+               // Now the client should know about everything
+               // (definitions and textures)
+               getClient(peer_id)->definitions_sent = true;
        }
        else if(command == TOSERVER_INTERACT)
        {