mirror of
https://github.com/gnif/LookingGlass.git
synced 2024-11-22 05:27:20 +00:00
[host] d12: allow specifying adapter and output to capture
This commit is contained in:
parent
b1313980fb
commit
055d5527ef
@ -117,6 +117,20 @@ static void d12_initOptions(void)
|
|||||||
{
|
{
|
||||||
struct Option options[] =
|
struct Option options[] =
|
||||||
{
|
{
|
||||||
|
{
|
||||||
|
.module = "d12",
|
||||||
|
.name = "adapter",
|
||||||
|
.description = "The name of the adapter to capture",
|
||||||
|
.type = OPTION_TYPE_STRING,
|
||||||
|
.value.x_string = NULL
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.module = "d12",
|
||||||
|
.name = "output",
|
||||||
|
.description = "The name of the adapter's output to capture",
|
||||||
|
.type = OPTION_TYPE_STRING,
|
||||||
|
.value.x_string = NULL
|
||||||
|
},
|
||||||
{
|
{
|
||||||
.module = "d12",
|
.module = "d12",
|
||||||
.name = "allowRGB24",
|
.name = "allowRGB24",
|
||||||
@ -557,6 +571,23 @@ static bool d12_enumerateDevices(
|
|||||||
DXGI_ADAPTER_DESC1 adapterDesc;
|
DXGI_ADAPTER_DESC1 adapterDesc;
|
||||||
DXGI_OUTPUT_DESC outputDesc;
|
DXGI_OUTPUT_DESC outputDesc;
|
||||||
|
|
||||||
|
const char * _optAdapter = option_get_string("d12", "adapter");
|
||||||
|
const char * _optOutput = option_get_string("d12", "output" );
|
||||||
|
|
||||||
|
wchar_t * optAdapter = NULL;
|
||||||
|
wchar_t * optOutput = NULL;
|
||||||
|
if (_optAdapter)
|
||||||
|
{
|
||||||
|
optAdapter = malloc((strlen(_optAdapter) + 1) * 2);
|
||||||
|
mbstowcs(optAdapter, _optAdapter, strlen(_optAdapter));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_optOutput)
|
||||||
|
{
|
||||||
|
optOutput = malloc((strlen(_optOutput) + 1) * 2);
|
||||||
|
mbstowcs(optOutput, _optOutput, strlen(_optOutput));
|
||||||
|
}
|
||||||
|
|
||||||
for(
|
for(
|
||||||
int i = 0;
|
int i = 0;
|
||||||
IDXGIFactory2_EnumAdapters1(*factory, i, adapter)
|
IDXGIFactory2_EnumAdapters1(*factory, i, adapter)
|
||||||
@ -595,7 +626,15 @@ static bool d12_enumerateDevices(
|
|||||||
if (skip)
|
if (skip)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
// FIXME: Allow specifying the specific adapter
|
if (optAdapter)
|
||||||
|
{
|
||||||
|
if (wcsstr(adapterDesc.Description, optAdapter) == NULL)
|
||||||
|
{
|
||||||
|
DEBUG_INFO("Not using adapter: %ls", adapterDesc.Description);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
DEBUG_INFO("Adapter matched, trying: %ls", adapterDesc.Description);
|
||||||
|
}
|
||||||
|
|
||||||
for(
|
for(
|
||||||
int n = 0;
|
int n = 0;
|
||||||
@ -603,7 +642,17 @@ static bool d12_enumerateDevices(
|
|||||||
++n, comRef_release(output))
|
++n, comRef_release(output))
|
||||||
{
|
{
|
||||||
IDXGIOutput_GetDesc(*output, &outputDesc);
|
IDXGIOutput_GetDesc(*output, &outputDesc);
|
||||||
// FIXME: Allow specifying the specific output
|
|
||||||
|
if (optOutput)
|
||||||
|
{
|
||||||
|
if (wcsstr(outputDesc.DeviceName, optOutput) == NULL)
|
||||||
|
{
|
||||||
|
DEBUG_INFO("Not using adapter output: %ls", outputDesc.DeviceName);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
DEBUG_INFO("Adapter output matched, trying: %ls", outputDesc.DeviceName);
|
||||||
|
}
|
||||||
|
|
||||||
if (outputDesc.AttachedToDesktop)
|
if (outputDesc.AttachedToDesktop)
|
||||||
break;
|
break;
|
||||||
@ -613,6 +662,9 @@ static bool d12_enumerateDevices(
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
free(optAdapter);
|
||||||
|
free(optOutput );
|
||||||
|
|
||||||
if (!*output)
|
if (!*output)
|
||||||
{
|
{
|
||||||
DEBUG_ERROR("Failed to locate a valid output device");
|
DEBUG_ERROR("Failed to locate a valid output device");
|
||||||
|
Loading…
Reference in New Issue
Block a user