fixed some re-entrancy bugs
authorDavid Anderson <dvander@alliedmods.net>
Sun May 13 00:42:39 2007 +0000 (2007-05-13)
changeset 77467b8b99bad61
parent 773 e68ac12d1cf6
child 775 9c537df13ec8
fixed some re-entrancy bugs
removed debug commands
core/MenuStyle_Valve.cpp
core/MenuStyle_Valve.h
     1.1 --- a/core/MenuStyle_Valve.cpp	Sun May 13 00:19:05 2007 +0000
     1.2 +++ b/core/MenuStyle_Valve.cpp	Sun May 13 00:42:39 2007 +0000
     1.3 @@ -51,39 +51,6 @@
     1.4  		return true;
     1.5  	}
     1.6  
     1.7 -	if (strcmp(cmd, "sm_test") == 0)
     1.8 -	{
     1.9 -		IBaseMenu *menu = g_ValveMenuStyle.CreateMenu();
    1.10 -		menu->AppendItem("test1", ItemDrawInfo("Test #1", 0));
    1.11 -		menu->AppendItem("test2", ItemDrawInfo("Test #2", 0));
    1.12 -		menu->AppendItem("test3", ItemDrawInfo("Test #3", 0));
    1.13 -		menu->AppendItem("test4", ItemDrawInfo("Test #4", 0));
    1.14 -		menu->AppendItem("test5", ItemDrawInfo("Test #5", 0));
    1.15 -		menu->AppendItem("test6", ItemDrawInfo("Test #6", 0));
    1.16 -		menu->AppendItem("test7", ItemDrawInfo("Test #7", 0));
    1.17 -		menu->AppendItem("test8", ItemDrawInfo("Test #8", 0));
    1.18 -		menu->AppendItem("test9", ItemDrawInfo("Test #9", 0));
    1.19 -		menu->AppendItem("test10", ItemDrawInfo("Test #10", 0));
    1.20 -		menu->AppendItem("test11", ItemDrawInfo("Test #11", 0));
    1.21 -		menu->AppendItem("test12", ItemDrawInfo("Test #12", 0));
    1.22 -		menu->AppendItem("test13", ItemDrawInfo("Test #13", 0));
    1.23 -		menu->AppendItem("test14", ItemDrawInfo("Test #14", 0));
    1.24 -		menu->AppendItem("test15", ItemDrawInfo("Test #15", 0));
    1.25 -		menu->AppendItem("test16", ItemDrawInfo("Test #16", 0));
    1.26 -		menu->AppendItem("test17", ItemDrawInfo("Test #17", 0));
    1.27 -		menu->AppendItem("test18", ItemDrawInfo("Test #18", 0));
    1.28 -		menu->AppendItem("test19", ItemDrawInfo("Test #19", 0));
    1.29 -		menu->AppendItem("test20", ItemDrawInfo("Test #20", 0));
    1.30 -
    1.31 -		menu->Display(client, new TestHandler, 20);
    1.32 -		return true;
    1.33 -	} else if (strcmp(cmd, "gaben") == 0) {
    1.34 -		KeyValues *kv = new KeyValues("menu");
    1.35 -		kv->SetString("msg", "hi");
    1.36 -		serverpluginhelpers->CreateMessage(engine->PEntityOfEntIndex(client), DIALOG_MENU, kv, g_pVSPHandle);
    1.37 -		kv->deleteThis();
    1.38 -	}
    1.39 -
    1.40  	return false;
    1.41  }
    1.42  
    1.43 @@ -109,14 +76,7 @@
    1.44  		return;
    1.45  	}
    1.46  
    1.47 -	menu_states_t &states = player->states;
    1.48 -	states.mh->OnMenuCancel(states.menu, client, MenuCancel_Disconnect);
    1.49 -	states.mh->OnMenuEnd(states.menu);
    1.50 -
    1.51 -	if (player->menuHoldTime)
    1.52 -	{
    1.53 -		m_WatchList.remove(client);
    1.54 -	}
    1.55 +	_CancelMenu(client, true, MenuCancel_Disconnect);
    1.56  
    1.57  	player->bInMenu = false;
    1.58  }
    1.59 @@ -214,7 +174,7 @@
    1.60  	}
    1.61  }
    1.62  
    1.63 -void ValveMenuStyle::_CancelMenu(int client, bool bAutoIgnore)
    1.64 +void ValveMenuStyle::_CancelMenu(int client, bool bAutoIgnore, MenuCancelReason reason)
    1.65  {
    1.66  	CValveMenuPlayer *player = &m_players[client];
    1.67  	menu_states_t &states = player->states;
    1.68 @@ -237,7 +197,7 @@
    1.69  	}
    1.70  
    1.71  	/* Fire callbacks */
    1.72 -	mh->OnMenuCancel(menu, client, MenuCancel_Interrupt);
    1.73 +	mh->OnMenuCancel(menu, client, reason);
    1.74  	mh->OnMenuEnd(menu);
    1.75  
    1.76  	if (bAutoIgnore)
    1.77 @@ -447,13 +407,7 @@
    1.78  	menu_states_t &states = player->states;
    1.79  	if (player->bInMenu)
    1.80  	{
    1.81 -		/* We need to cancel the old menu */
    1.82 -		if (player->menuHoldTime)
    1.83 -		{
    1.84 -			m_WatchList.remove(client);
    1.85 -		}
    1.86 -		states.mh->OnMenuCancel(states.menu, client, MenuCancel_Interrupt);
    1.87 -		states.mh->OnMenuEnd(states.menu);
    1.88 +		_CancelMenu(client, true);
    1.89  	}
    1.90  
    1.91  	states.firstItem = 0;
     2.1 --- a/core/MenuStyle_Valve.h	Sun May 13 00:19:05 2007 +0000
     2.2 +++ b/core/MenuStyle_Valve.h	Sun May 13 00:42:39 2007 +0000
     2.3 @@ -71,7 +71,7 @@
     2.4  private:
     2.5  	bool RedoClientMenu(int client, ItemOrder order);
     2.6  	void HookCreateMessage(edict_t *pEdict, DIALOG_TYPE type, KeyValues *kv, IServerPluginCallbacks *plugin);
     2.7 -	void _CancelMenu(int client, bool bAutoIgnore=false);
     2.8 +	void _CancelMenu(int client, bool bAutoIgnore=false, MenuCancelReason reason=MenuCancel_Interrupt);
     2.9  private:
    2.10  	CValveMenuPlayer *m_players;
    2.11  	FastLink<int> m_WatchList;