From 2ce0947948c6a9297faf0a6d111f3100b1146f5a Mon Sep 17 00:00:00 2001 From: Spoike Date: Thu, 1 Jul 2021 01:15:52 +0000 Subject: [PATCH] Add -noenumerate arg to play it safe by skipping device enumeration for video and sound drivers. git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@5922 fc73d0e0-1445-4013-8a0c-d673dee63da5 --- engine/client/renderer.c | 3 ++- engine/client/snd_dma.c | 6 ++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/engine/client/renderer.c b/engine/client/renderer.c index 1dc3dca52..fe5807003 100644 --- a/engine/client/renderer.c +++ b/engine/client/renderer.c @@ -2456,6 +2456,7 @@ static void R_UpdateRendererOptsNow(int iarg, void *data) struct videnumctx_s e = {NULL}; size_t i; struct sortedrenderers_s sorted[countof(rendererinfo)]; + qboolean safe = COM_CheckParm("-noenumerate") || COM_CheckParm("-safe"); if (!rendereroptsupdated) return; //multiple got queued... rendereroptsupdated = false; @@ -2478,7 +2479,7 @@ static void R_UpdateRendererOptsNow(int iarg, void *data) if (r->rtype == QR_HEADLESS || r->rtype == QR_NONE) continue; //skip these, they're kinda dangerous. e.apiname = r->name[0]; - if (!r->VID_EnumerateDevices || !r->VID_EnumerateDevices(&e, R_DeviceEnumerated)) + if (safe || !r->VID_EnumerateDevices || !r->VID_EnumerateDevices(&e, R_DeviceEnumerated)) R_DeviceEnumerated(&e, r->name[0], "", r->description); } } diff --git a/engine/client/snd_dma.c b/engine/client/snd_dma.c index 64123f37c..85f42959a 100644 --- a/engine/client/snd_dma.c +++ b/engine/client/snd_dma.c @@ -2070,6 +2070,8 @@ void S_EnumerateDevices(void) { int i; sounddriver_t *sd; + qboolean safe = COM_CheckParm("-noenumerate") || COM_CheckParm("-safe"); + Cvar_ForceSet(&snd_device_opts, ""); S_EnumeratedOutDevice("", NULL, "Default"); S_EnumeratedOutDevice("none", NULL, "None"); @@ -2079,7 +2081,7 @@ void S_EnumerateDevices(void) sd = outputdrivers[i]; if (sd && sd->name) { - if (!sd->Enumerate || !sd->Enumerate(S_EnumeratedOutDevice)) + if (safe || !sd->Enumerate || !sd->Enumerate(S_EnumeratedOutDevice)) S_EnumeratedOutDevice(sd->name, "", va("Default %s", sd->name)); } } @@ -2091,7 +2093,7 @@ void S_EnumerateDevices(void) { if (!capturedrivers[i]->Init) continue; - if (!capturedrivers[i]->Enumerate || !capturedrivers[i]->Enumerate(S_Voip_EnumeratedCaptureDevice)) + if (safe || !capturedrivers[i]->Enumerate || !capturedrivers[i]->Enumerate(S_Voip_EnumeratedCaptureDevice)) S_Voip_EnumeratedCaptureDevice(capturedrivers[i]->drivername, NULL, va("Default %s", capturedrivers[i]->drivername)); } #endif