}
dpsnprintf (str, sizeof(str), "playdemo %s\n", cls.demos[cls.demonum]);
- Cbuf_InsertText(&cmd_client, str);
+ Cbuf_InsertText(cmd_client, str);
cls.demonum++;
}
CL_ParseServerMessage();
if (cls.signon != SIGNONS)
- Cbuf_Execute((&cmd_client)->cbuf); // immediately execute svc_stufftext if in the demo before connect!
+ Cbuf_Execute((cmd_client)->cbuf); // immediately execute svc_stufftext if in the demo before connect!
// In case the demo contains a "svc_disconnect" message
if (!cls.demoplayback)
if(atoi(sys.argv[i + 1]) > benchmark_runs)
{
// restart the benchmark
- Cbuf_AddText(&cmd_client, va(vabuf, sizeof(vabuf), "timedemo %s\n", cls.demoname));
+ Cbuf_AddText(cmd_client, va(vabuf, sizeof(vabuf), "timedemo %s\n", cls.demoname));
// cannot execute here
}
else
sizebuf_t buf;
unsigned char bufdata[8];
if (cls.demorecording)
- CL_Stop_f(&cmd_client);
+ CL_Stop_f(cmd_client);
// send disconnect message 3 times to improve chances of server
// receiving it (but it still fails sometimes)
{
int i;
*cls.connect_userinfo = 0;
- for(i = firstarg; i+2 <= Cmd_Argc(&cmd_client); i += 2)
- InfoString_SetValue(cls.connect_userinfo, sizeof(cls.connect_userinfo), Cmd_Argv(&cmd_client, i), Cmd_Argv(&cmd_client, i+1));
+ for(i = firstarg; i+2 <= Cmd_Argc(cmd_client); i += 2)
+ InfoString_SetValue(cls.connect_userinfo, sizeof(cls.connect_userinfo), Cmd_Argv(cmd_client, i), Cmd_Argv(cmd_client, i+1));
}
else if(firstarg < -1)
{
World_Start(&cl.world);
// load or reload .loc file for team chat messages
- CL_Locs_Reload_f(&cmd_client);
+ CL_Locs_Reload_f(cmd_client);
// make sure we send enough keepalives
CL_KeepaliveMessage(false);
return;
// abort existing upload if in progress
- QW_CL_StopUpload_f(&cmd_client);
+ QW_CL_StopUpload_f(cmd_client);
Con_DPrintf("Starting upload of %d bytes...\n", size);
cls.qw_uploadsize = size;
cls.qw_uploadpos = 0;
- QW_CL_NextUpload_f(&cmd_client);
+ QW_CL_NextUpload_f(cmd_client);
}
#if 0
// execute cl_begindownloads next frame
// (after any commands added by svc_stufftext have been executed)
// when done with downloads the "prespawn" will be sent
- Cbuf_AddText(&cmd_client, "\ncl_begindownloads\n");
+ Cbuf_AddText(cmd_client, "\ncl_begindownloads\n");
//MSG_WriteByte (&cls.netcon->message, clc_stringcmd);
//MSG_WriteString (&cls.netcon->message, "prespawn");
if (cls.demorecording)
{
// finish the previous level's demo file
- CL_Stop_f(&cmd_client);
+ CL_Stop_f(cmd_client);
}
// start a new demo file
break;
case qw_svc_sellscreen:
- Cmd_ExecuteString(&cmd_client, "help", src_local, true);
+ Cmd_ExecuteString(cmd_client, "help", src_local, true);
break;
case qw_svc_smallkick:
break;
case svc_sellscreen:
- Cmd_ExecuteString(&cmd_client, "help", src_local, true);
+ Cmd_ExecuteString(cmd_client, "help", src_local, true);
break;
case svc_hidelmp:
if (gamemode == GAME_TENEBRAE)
void CL_Parse_ErrorCleanUp(void)
{
CL_StopDownload(0, 0);
- QW_CL_StopUpload_f(&cmd_client);
+ QW_CL_StopUpload_f(cmd_client);
}
void CL_Parse_Init(void)
static void VM_CL_registercmd (prvm_prog_t *prog)
{
VM_SAFEPARMCOUNT(1, VM_CL_registercmd);
- if(!Cmd_Exists(&cmd_client, PRVM_G_STRING(OFS_PARM0)))
+ if(!Cmd_Exists(cmd_client, PRVM_G_STRING(OFS_PARM0)))
Cmd_AddCommand(CF_CLIENT, PRVM_G_STRING(OFS_PARM0), NULL, "console command created by QuakeC");
}
#include "quakedef.h"
#include "thread.h"
-cmd_state_t cmd_client;
-cmd_state_t cmd_server;
-cmd_state_t cmd_serverfromclient;
+cmd_state_t *cmd_client;
+cmd_state_t *cmd_server;
+cmd_state_t *cmd_serverfromclient;
cmd_userdefined_t cmd_userdefined_all;
cmd_userdefined_t cmd_userdefined_null;
}
cmd_iter_t;
-static cmd_iter_t cmd_iter_all[] = {
- {&cmd_client},
- {&cmd_server},
- {&cmd_serverfromclient},
- {NULL},
-};
+static cmd_iter_t *cmd_iter_all;
mempool_t *cbuf_mempool;
Con_Printf("%i result%s\n\n", count, (count > 1) ? "s" : "");
}
+static cmd_state_t *Cmd_AddInterpreter(cmd_buf_t *cbuf, cvar_state_t *cvars, int cvars_flagsmask, int cmds_flagsmask, cmd_userdefined_t *userdefined, int autoflags, xcommand_t autofunction)
+{
+ cmd_state_t *cmd = (cmd_state_t *)Mem_Alloc(tempmempool, sizeof(cmd_state_t));
+
+ cmd->mempool = Mem_AllocPool("commands", 0, NULL);
+ // space for commands and script files
+ cmd->cbuf = cbuf;
+ cmd->null_string = "";
+
+ cmd->cvars = cvars;
+ cmd->cvars_flagsmask = cvars_flagsmask;
+ cmd->cmd_flags = cmds_flagsmask;
+ cmd->auto_flags = autoflags;
+ cmd->auto_function = autofunction;
+ cmd->userdefined = userdefined;
+
+ return cmd;
+}
+
/*
============
Cmd_Init
*/
void Cmd_Init(void)
{
- cmd_iter_t *cmd_iter;
cmd_buf_t *cbuf;
cbuf_mempool = Mem_AllocPool("Command buffer", 0, NULL);
cbuf = (cmd_buf_t *)Mem_Alloc(cbuf_mempool, sizeof(cmd_buf_t));
cbuf->deferred.prev = cbuf->deferred.next = &(cbuf->deferred);
cbuf->free.prev = cbuf->free.next = &(cbuf->free);
- for (cmd_iter = cmd_iter_all; cmd_iter->cmd; cmd_iter++)
- {
- cmd_state_t *cmd = cmd_iter->cmd;
- cmd->mempool = Mem_AllocPool("commands", 0, NULL);
- // space for commands and script files
- cmd->cbuf = cbuf;
- cmd->null_string = "";
- }
+ // FIXME: Get rid of cmd_iter_all eventually. This is just a hack to reduce the amount of work to make the interpreters dynamic.
+ cmd_iter_all = (cmd_iter_t *)Mem_Alloc(tempmempool, sizeof(cmd_iter_t) * 4);
+
// client console can see server cvars because the user may start a server
- cmd_client.cvars = &cvars_all;
- cmd_client.cvars_flagsmask = CF_CLIENT | CF_SERVER;
- cmd_client.cmd_flags = CF_CLIENT | CF_CLIENT_FROM_SERVER;
- cmd_client.auto_flags = CF_SERVER_FROM_CLIENT;
- cmd_client.auto_function = CL_ForwardToServer_f; // FIXME: Move this to the client.
- cmd_client.userdefined = &cmd_userdefined_all;
+ cmd_iter_all[0].cmd = cmd_client = Cmd_AddInterpreter(cbuf, &cvars_all, CF_CLIENT | CF_SERVER, CF_CLIENT | CF_CLIENT_FROM_SERVER, &cmd_userdefined_all, CF_SERVER_FROM_CLIENT, CL_ForwardToServer_f);
+
// dedicated server console can only see server cvars, there is no client
- cmd_server.cvars = &cvars_all;
- cmd_server.cvars_flagsmask = CF_SERVER;
- cmd_server.cmd_flags = CF_SERVER;
- cmd_server.auto_flags = 0;
- cmd_server.auto_function = NULL;
- cmd_server.userdefined = &cmd_userdefined_all;
+ cmd_iter_all[1].cmd = cmd_server = Cmd_AddInterpreter(cbuf, &cvars_all, CF_SERVER, CF_SERVER, &cmd_userdefined_all, 0, NULL);
+
// server commands received from clients have no reason to access cvars, cvar expansion seems perilous.
- cmd_serverfromclient.cvars = &cvars_null;
- cmd_serverfromclient.cvars_flagsmask = 0;
- cmd_serverfromclient.cmd_flags = CF_SERVER_FROM_CLIENT | CF_USERINFO;
- cmd_serverfromclient.auto_flags = 0;
- cmd_serverfromclient.auto_function = NULL;
- cmd_serverfromclient.userdefined = &cmd_userdefined_null;
+ cmd_iter_all[2].cmd = cmd_serverfromclient = Cmd_AddInterpreter(cbuf, &cvars_null, 0, CF_SERVER_FROM_CLIENT | CF_USERINFO, &cmd_userdefined_null, 0, NULL);
+ cmd_iter_all[3].cmd = NULL;
//
// register our commands
//
// command interpreter for client commands injected by CSQC, MQC or client engine code
// uses cmddefs_all
-extern cmd_state_t cmd_client;
+extern cmd_state_t *cmd_client;
// command interpreter for server commands injected by MQC, SVQC, menu engine code or server engine code
// uses cmddefs_all
-extern cmd_state_t cmd_server;
+extern cmd_state_t *cmd_server;
// command interpreter for server commands received over network from clients
// uses cmddefs_null
-extern cmd_state_t cmd_serverfromclient;
+extern cmd_state_t *cmd_serverfromclient;
extern qbool host_stuffcmdsrun;
int crcflags = csqc_progcrc.flags;
csqc_progcrc.flags &= ~CF_READONLY;
csqc_progsize.flags &= ~CF_READONLY;
- Cmd_ExecuteString(&cmd_client, msg, src_local, true);
+ Cmd_ExecuteString(cmd_client, msg, src_local, true);
csqc_progcrc.flags = csqc_progsize.flags = crcflags;
return;
}
l = sizeof(buf) - 1;
strlcpy(buf, p, l + 1); // strlcpy needs a + 1 as it includes the newline!
- Cmd_ExecuteString(&cmd_client, buf, src_local, true);
+ Cmd_ExecuteString(cmd_client, buf, src_local, true);
p += l;
if(*p == '\n')
else
break; // end of string or overflow
}
- Cmd_ExecuteString(&cmd_client, "curl --clear_autodownload", src_local, true); // don't inhibit CSQC loading
+ Cmd_ExecuteString(cmd_client, "curl --clear_autodownload", src_local, true); // don't inhibit CSQC loading
return;
}
if(!cl.csqc_loaded)
{
- Cbuf_AddText(&cmd_client, msg);
+ Cbuf_AddText(cmd_client, msg);
return;
}
CSQC_BEGIN
prog->tempstringsbuf.cursize = restorevm_tempstringsbuf_cursize;
}
else
- Cbuf_AddText(&cmd_client, msg);
+ Cbuf_AddText(cmd_client, msg);
CSQC_END
}
return;
}
- PRVM_Prog_Init(prog, &cmd_client);
+ PRVM_Prog_Init(prog, cmd_client);
// allocate the mempools
prog->progs_mempool = Mem_AllocPool(csqc_progname.string, 0, NULL);
void CL_VM_ShutDown (void)
{
prvm_prog_t *prog = CLVM_prog;
- Cmd_ClearCSQCCommands(&cmd_client);
+ Cmd_ClearCSQCCommands(cmd_client);
//Cvar_SetValueQuick(&csqc_progcrc, -1);
//Cvar_SetValueQuick(&csqc_progsize, -1);
if(!cl.csqc_loaded)
}
// check for overlap with a command
- if (Cmd_Exists(&cmd_client, variable->name) || Cmd_Exists(&cmd_server, variable->name))
+ if (Cmd_Exists(cmd_client, variable->name) || Cmd_Exists(cmd_server, variable->name))
{
Con_Printf("Cvar_RegisterVariable: %s is a command\n", variable->name);
return;
}
// check for overlap with a command
- if (Cmd_Exists(&cmd_client, name) || Cmd_Exists(&cmd_server, name))
+ if (Cmd_Exists(cmd_client, name) || Cmd_Exists(cmd_server, name))
{
Con_Printf("Cvar_Get: %s is a command\n", name);
return NULL;
if (cls.demoplayback)
{
- CL_Disconnect_f(&cmd_client);
+ CL_Disconnect_f(cmd_client);
cls.demonum = 0;
}
// unload all sounds so they will be reloaded from the new files as needed
- S_UnloadAllSounds_f(&cmd_client);
+ S_UnloadAllSounds_f(cmd_client);
// restart the video subsystem after the config is executed
- Cbuf_InsertText(&cmd_client, "\nloadconfig\nvid_restart\n\n");
+ Cbuf_InsertText(cmd_client, "\nloadconfig\nvid_restart\n\n");
return true;
}
r_texture_numcubemaps = 0;
//r_texture_fogintensity = NULL;
memset(&r_fb, 0, sizeof(r_fb));
- R_GLSL_Restart_f(&cmd_client);
+ R_GLSL_Restart_f(cmd_client);
r_glsl_permutation = NULL;
memset(r_glsl_permutationhash, 0, sizeof(r_glsl_permutationhash));
rsurface.entity = NULL; // used only by R_GetCurrentTexture and RSurf_ActiveModelEntity
if(R_CompileShader_CheckStaticParms())
- R_GLSL_Restart_f(&cmd_client);
+ R_GLSL_Restart_f(cmd_client);
if (!r_drawentities.integer)
r_refdef.scene.numentities = 0;
Cmd_RestoreInitState();
#ifdef CONFIG_MENU
// prepend a menu restart command to execute after the config
- Cbuf_InsertText(&cmd_client, "\nmenu_restart\n");
+ Cbuf_InsertText(cmd_client, "\nmenu_restart\n");
#endif
// reset cvars to their defaults, and then exec startup scripts again
- Host_AddConfigText(&cmd_client);
+ Host_AddConfigText(cmd_client);
}
//============================================================================
while ((line = Sys_ConsoleInput()))
{
if (cls.state == ca_dedicated)
- Cbuf_AddText(&cmd_server, line);
+ Cbuf_AddText(cmd_server, line);
else
- Cbuf_AddText(&cmd_client, line);
+ Cbuf_AddText(cmd_client, line);
}
}
int i;
const char* os;
char vabuf[1024];
- cmd_state_t *cmd = &cmd_client;
host.hook.ConnectLocal = NULL;
host.hook.Disconnect = NULL;
// here comes the not so critical stuff
- Host_AddConfigText(cmd);
+ Host_AddConfigText(cmd_client);
// if quake.rc is missing, use default
if (!FS_FileExists("quake.rc"))
{
- Cbuf_AddText(cmd, "exec default.cfg\nexec " CONFIGFILENAME "\nexec autoexec.cfg\n");
- Cbuf_Execute(cmd->cbuf);
+ Cbuf_AddText(cmd_client, "exec default.cfg\nexec " CONFIGFILENAME "\nexec autoexec.cfg\n");
+ Cbuf_Execute(cmd_client->cbuf);
}
host.state = host_active;
if (i && i + 1 < sys.argc)
if (!sv.active && !cls.demoplayback && !cls.connect_trying)
{
- Cbuf_AddText(&cmd_client, va(vabuf, sizeof(vabuf), "timedemo %s\n", sys.argv[i + 1]));
- Cbuf_Execute((&cmd_client)->cbuf);
+ Cbuf_AddText(cmd_client, va(vabuf, sizeof(vabuf), "timedemo %s\n", sys.argv[i + 1]));
+ Cbuf_Execute(cmd_client->cbuf);
}
// check for special demo mode
if (i && i + 1 < sys.argc)
if (!sv.active && !cls.demoplayback && !cls.connect_trying)
{
- Cbuf_AddText(&cmd_client, va(vabuf, sizeof(vabuf), "playdemo %s\n", sys.argv[i + 1]));
- Cbuf_Execute((&cmd_client)->cbuf);
+ Cbuf_AddText(cmd_client, va(vabuf, sizeof(vabuf), "playdemo %s\n", sys.argv[i + 1]));
+ Cbuf_Execute(cmd_client->cbuf);
}
#ifdef CONFIG_VIDEO_CAPTURE
if (i && i + 1 < sys.argc)
if (!sv.active && !cls.demoplayback && !cls.connect_trying)
{
- Cbuf_AddText(&cmd_client, va(vabuf, sizeof(vabuf), "playdemo %s\ncl_capturevideo 1\n", sys.argv[i + 1]));
- Cbuf_Execute((&cmd_client)->cbuf);
+ Cbuf_AddText(cmd_client, va(vabuf, sizeof(vabuf), "playdemo %s\ncl_capturevideo 1\n", sys.argv[i + 1]));
+ Cbuf_Execute((cmd_client)->cbuf);
}
#endif
if (cls.state == ca_dedicated || Sys_CheckParm("-listen"))
if (!sv.active && !cls.demoplayback && !cls.connect_trying)
{
- Cbuf_AddText(&cmd_client, "startmap_dm\n");
- Cbuf_Execute((&cmd_client)->cbuf);
+ Cbuf_AddText(cmd_client, "startmap_dm\n");
+ Cbuf_Execute(cmd_client->cbuf);
}
if (!sv.active && !cls.demoplayback && !cls.connect_trying)
{
#ifdef CONFIG_MENU
- Cbuf_AddText(&cmd_client, "togglemenu 1\n");
+ Cbuf_AddText(cmd_client, "togglemenu 1\n");
#endif
- Cbuf_Execute((&cmd_client)->cbuf);
+ Cbuf_Execute(cmd_client->cbuf);
}
Con_DPrint("========Initialized=========\n");
void
Key_Event (int key, int ascii, qbool down)
{
- cmd_state_t *cmd = &cmd_client;
+ cmd_state_t *cmd = cmd_client;
const char *bind;
qbool q;
keydest_t keydest = key_dest;
{
if(down)
{
- Con_ToggleConsole_f(&cmd_client);
+ Con_ToggleConsole_f(cmd_client);
tbl_keydest[key] = key_void; // esc release should go nowhere (especially not to key_menu or key_game)
}
return;
#endif
}
else
- Con_ToggleConsole_f(&cmd_client);
+ Con_ToggleConsole_f(cmd_client);
}
break;
// (special exemption for german keyboard layouts)
if (con_closeontoggleconsole.integer && bind && !strncmp(bind, "toggleconsole", strlen("toggleconsole")) && (key_consoleactive & KEY_CONSOLEACTIVE_USER) && (con_closeontoggleconsole.integer >= ((ascii != STRING_COLOR_TAG) ? 2 : 3) || key_linepos == 1))
{
- Con_ToggleConsole_f(&cmd_client);
+ Con_ToggleConsole_f(cmd_client);
return;
}
if(numdownloads_fail == 0)
{
Con_DPrintf("cURL downloads occurred, executing %s\n", command_when_done);
- Cbuf_AddText(&cmd_client, "\n");
- Cbuf_AddText(&cmd_client, command_when_done);
- Cbuf_AddText(&cmd_client, "\n");
+ Cbuf_AddText(cmd_client, "\n");
+ Cbuf_AddText(cmd_client, command_when_done);
+ Cbuf_AddText(cmd_client, "\n");
}
else
{
Con_DPrintf("cURL downloads FAILED, executing %s\n", command_when_error);
- Cbuf_AddText(&cmd_client, "\n");
- Cbuf_AddText(&cmd_client, command_when_error);
- Cbuf_AddText(&cmd_client, "\n");
+ Cbuf_AddText(cmd_client, "\n");
+ Cbuf_AddText(cmd_client, command_when_error);
+ Cbuf_AddText(cmd_client, "\n");
}
Curl_Clear_forthismap();
}
Cvar_RegisterVariable (&cl_curl_useragent);
Cvar_RegisterVariable (&cl_curl_useragent_append);
Cmd_AddCommand(CF_CLIENT | CF_CLIENT_FROM_SERVER, "curl", Curl_Curl_f, "download data from an URL and add to search path");
- //Cmd_AddCommand(&cmd_client, "curlcat", Curl_CurlCat_f, "display data from an URL (debugging command)");
+ //Cmd_AddCommand(cmd_client, "curlcat", Curl_CurlCat_f, "display data from an URL (debugging command)");
}
/*
{
if(mode == 0)
return; // the menu is off, and we want it off
- M_Menu_Main_f (&cmd_client);
+ M_Menu_Main_f (cmd_client);
}
else
{
void M_KeyEvent (int key, int ascii, qbool downevent)
{
- cmd_state_t *cmd = &cmd_client;
+ cmd_state_t *cmd = cmd_client;
if (!downevent)
return;
switch (m_state)
static void MP_Init (void)
{
prvm_prog_t *prog = MVM_prog;
- PRVM_Prog_Init(prog, &cmd_client);
+ PRVM_Prog_Init(prog, cmd_client);
prog->edictprivate_size = 0; // no private struct used
prog->name = "menu";
if(l)
{
client_t *host_client_save = host_client;
- Cmd_ExecuteString(&cmd_server, s, src_local, true);
+ Cmd_ExecuteString(cmd_server, s, src_local, true);
host_client = host_client_save;
// in case it is a command that changes host_client (like restart)
}
struct fssearch_s *opensearches[PRVM_MAX_OPENSEARCHES];
const char * opensearches_origin[PRVM_MAX_OPENSEARCHES];
struct skeleton_s *skeletons[MAX_EDICTS];
- struct cmd_state_s *console_cmd; // points to the relevant console command interpreter for this vm (&cmd_client or &cmd_server), also used to access cvars
+ struct cmd_state_s *console_cmd; // points to the relevant console command interpreter for this vm (cmd_client or &cmd_server), also used to access cvars
// buffer for storing all tempstrings created during one invocation of ExecuteProgram
sizebuf_t tempstringsbuf;
char string[VM_STRINGTEMP_LENGTH];
VM_SAFEPARMCOUNTRANGE(1, 8, VM_localcmd_client);
VM_VarString(prog, 0, string, sizeof(string));
- Cbuf_AddText(&cmd_client, string);
+ Cbuf_AddText(cmd_client, string);
}
/*
char string[VM_STRINGTEMP_LENGTH];
VM_SAFEPARMCOUNTRANGE(1, 8, VM_localcmd_server);
VM_VarString(prog, 0, string, sizeof(string));
- Cbuf_AddText(&cmd_server, string);
+ Cbuf_AddText(cmd_server, string);
}
static qbool PRVM_Cvar_ReadOk(prvm_prog_t *prog, const char *string)
*/
void VM_coredump(prvm_prog_t *prog)
{
- cmd_state_t *cmd = !host_isclient.integer ? &cmd_server : &cmd_client;
+ cmd_state_t *cmd = !host_isclient.integer ? cmd_server : cmd_client;
VM_SAFEPARMCOUNT(0,VM_coredump);
Cbuf_AddText(cmd, "prvm_edicts ");
return;
svs.changelevel_issued = true;
- Cbuf_AddText(&cmd_server, va(vabuf, sizeof(vabuf), "changelevel %s\n", PRVM_G_STRING(OFS_PARM0)));
+ Cbuf_AddText(cmd_server, va(vabuf, sizeof(vabuf), "changelevel %s\n", PRVM_G_STRING(OFS_PARM0)));
}
/*
return;
// check for overlap with a command
- if (Cmd_Exists(&cmd_client, name) || Cmd_Exists(&cmd_server, name))
+ if (Cmd_Exists(cmd_client, name) || Cmd_Exists(cmd_server, name))
{
VM_Warning(prog, "VM_registercvar: %s is a command\n", name);
return;
}
if(R_CompileShader_CheckStaticParms())
- R_GLSL_Restart_f(&cmd_client);
+ R_GLSL_Restart_f(cmd_client);
}
qbool R_Shadow_ShadowMappingEnabled(void)
if (r_editlights_sprcubemapnoshadowlight) { R_SkinFrame_MarkUsed(r_editlights_sprcubemapnoshadowlight); }
if (r_editlights_sprselection) { R_SkinFrame_MarkUsed(r_editlights_sprselection); }
if (strncmp(cl.worldname, r_shadow_mapname, sizeof(r_shadow_mapname)))
- R_Shadow_EditLights_Reload_f(&cmd_client);
+ R_Shadow_EditLights_Reload_f(cmd_client);
}
void R_Shadow_Init(void)
if (!light)
continue;
R_Shadow_SelectLight(light);
- R_Shadow_EditLights_Edit_f(&cmd_client);
+ R_Shadow_EditLights_Edit_f(cmd_client);
}
// return to old selected (to not mess editing once selection is locked)
R_Shadow_SelectLight(oldselected);
static void SV_VM_Setup(void)
{
prvm_prog_t *prog = SVVM_prog;
- PRVM_Prog_Init(prog, &cmd_server);
+ PRVM_Prog_Init(prog, cmd_server);
// allocate the mempools
// TODO: move the magic numbers/constants into #defines [9/13/2006 Black]
if (strncasecmp(s, "spawn", 5) == 0
|| strncasecmp(s, "begin", 5) == 0
|| strncasecmp(s, "prespawn", 8) == 0)
- Cmd_ExecuteString (&cmd_serverfromclient, s, src_client, true);
+ Cmd_ExecuteString (cmd_serverfromclient, s, src_client, true);
else if (PRVM_serverfunction(SV_ParseClientCommand))
{
int restorevm_tempstringsbuf_cursize;
prog->tempstringsbuf.cursize = restorevm_tempstringsbuf_cursize;
}
else
- Cmd_ExecuteString (&cmd_serverfromclient, s, src_client, true);
+ Cmd_ExecuteString (cmd_serverfromclient, s, src_client, true);
break;
clc_stringcmd_invalid:
temp_client = host_client;
host_client = svs.clients + i;
- Cmd_ExecuteString(&cmd_serverfromclient, PRVM_G_STRING(OFS_PARM1), src_client, true);
+ Cmd_ExecuteString(cmd_serverfromclient, PRVM_G_STRING(OFS_PARM1), src_client, true);
host_client = temp_client;
}
static void VM_SV_registercommand (prvm_prog_t *prog)
{
VM_SAFEPARMCOUNT(1, VM_SV_registercmd);
- if(!Cmd_Exists(&cmd_server, PRVM_G_STRING(OFS_PARM0)))
+ if(!Cmd_Exists(cmd_server, PRVM_G_STRING(OFS_PARM0)))
Cmd_AddCommand(CF_SERVER, PRVM_G_STRING(OFS_PARM0), NULL, "console command created by QuakeC");
}
void Sys_Quit (int returnvalue)
{
// Unlock mutexes because the quit command may jump directly here, causing a deadlock
- if ((&cmd_client)->cbuf->lock)
- Cbuf_Unlock((&cmd_client)->cbuf);
- if ((&cmd_server)->cbuf->lock)
- Cbuf_Unlock((&cmd_server)->cbuf);
+ if ((cmd_client)->cbuf->lock)
+ Cbuf_Unlock((cmd_client)->cbuf);
+ if ((cmd_server)->cbuf->lock)
+ Cbuf_Unlock((cmd_server)->cbuf);
SV_UnlockThreadMutex();
TaskQueue_Frame(true);
if (!VID_ShowingKeyboard())
{
// user entered a command, close the console now
- Con_ToggleConsole_f(&cmd_client);
+ Con_ToggleConsole_f(cmd_client);
}
VID_TouchscreenArea( 0, 0, 0, 0, 0, NULL , 0.0f, NULL, NULL, &buttons[15], (keynum_t)0, NULL, 0, 0, 0, true);
VID_TouchscreenArea( 0, 0, 0, 0, 0, NULL , 0.0f, NULL, move, &buttons[0], K_MOUSE4, NULL, 0, 0, 0, true);
// so, let's better queue it for next frame
if(!sdl_needs_restart)
{
- Cbuf_AddText(&cmd_client, "\nr_restart\n");
+ Cbuf_AddText(cmd_client, "\nr_restart\n");
sdl_needs_restart = true;
}
#endif