New upstream version 24.0.1+dfsg1
This commit is contained in:
parent
b14f9eae6d
commit
5a730d6ec3
842 changed files with 42245 additions and 33385 deletions
|
|
@ -19,7 +19,7 @@
|
|||
#include <map>
|
||||
|
||||
static inline bool get_monitor(gs_device_t *device, int monitor_idx,
|
||||
IDXGIOutput **dxgiOutput)
|
||||
IDXGIOutput **dxgiOutput)
|
||||
{
|
||||
HRESULT hr;
|
||||
|
||||
|
|
@ -44,7 +44,7 @@ void gs_duplicator::Start()
|
|||
throw "Invalid monitor index";
|
||||
|
||||
hr = output->QueryInterface(__uuidof(IDXGIOutput1),
|
||||
(void**)output1.Assign());
|
||||
(void **)output1.Assign());
|
||||
if (FAILED(hr))
|
||||
throw HRError("Failed to query IDXGIOutput1", hr);
|
||||
|
||||
|
|
@ -54,11 +54,11 @@ void gs_duplicator::Start()
|
|||
}
|
||||
|
||||
gs_duplicator::gs_duplicator(gs_device_t *device_, int monitor_idx)
|
||||
: gs_obj (device_, gs_type::gs_duplicator),
|
||||
texture (nullptr),
|
||||
idx (monitor_idx),
|
||||
refs (1),
|
||||
updated (false)
|
||||
: gs_obj(device_, gs_type::gs_duplicator),
|
||||
texture(nullptr),
|
||||
idx(monitor_idx),
|
||||
refs(1),
|
||||
updated(false)
|
||||
{
|
||||
Start();
|
||||
}
|
||||
|
|
@ -71,7 +71,8 @@ gs_duplicator::~gs_duplicator()
|
|||
extern "C" {
|
||||
|
||||
EXPORT bool device_get_duplicator_monitor_info(gs_device_t *device,
|
||||
int monitor_idx, struct gs_monitor_info *info)
|
||||
int monitor_idx,
|
||||
struct gs_monitor_info *info)
|
||||
{
|
||||
DXGI_OUTPUT_DESC desc;
|
||||
HRESULT hr;
|
||||
|
|
@ -86,9 +87,11 @@ EXPORT bool device_get_duplicator_monitor_info(gs_device_t *device,
|
|||
if (FAILED(hr))
|
||||
throw HRError("GetDesc failed", hr);
|
||||
|
||||
} catch (HRError error) {
|
||||
blog(LOG_ERROR, "device_get_duplicator_monitor_info: "
|
||||
"%s (%08lX)", error.str, error.hr);
|
||||
} catch (const HRError &error) {
|
||||
blog(LOG_ERROR,
|
||||
"device_get_duplicator_monitor_info: "
|
||||
"%s (%08lX)",
|
||||
error.str, error.hr);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
@ -119,7 +122,7 @@ EXPORT bool device_get_duplicator_monitor_info(gs_device_t *device,
|
|||
return true;
|
||||
}
|
||||
|
||||
static std::map<int, gs_duplicator*> instances;
|
||||
static std::map<int, gs_duplicator *> instances;
|
||||
|
||||
void reset_duplicators(void)
|
||||
{
|
||||
|
|
@ -129,7 +132,7 @@ void reset_duplicators(void)
|
|||
}
|
||||
|
||||
EXPORT gs_duplicator_t *device_duplicator_create(gs_device_t *device,
|
||||
int monitor_idx)
|
||||
int monitor_idx)
|
||||
{
|
||||
gs_duplicator *duplicator = nullptr;
|
||||
|
||||
|
|
@ -145,13 +148,12 @@ EXPORT gs_duplicator_t *device_duplicator_create(gs_device_t *device,
|
|||
instances[monitor_idx] = duplicator;
|
||||
|
||||
} catch (const char *error) {
|
||||
blog(LOG_DEBUG, "device_duplicator_create: %s",
|
||||
error);
|
||||
blog(LOG_DEBUG, "device_duplicator_create: %s", error);
|
||||
return nullptr;
|
||||
|
||||
} catch (HRError error) {
|
||||
} catch (const HRError &error) {
|
||||
blog(LOG_DEBUG, "device_duplicator_create: %s (%08lX)",
|
||||
error.str, error.hr);
|
||||
error.str, error.hr);
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
|
|
@ -171,20 +173,17 @@ static inline void copy_texture(gs_duplicator_t *d, ID3D11Texture2D *tex)
|
|||
D3D11_TEXTURE2D_DESC desc;
|
||||
tex->GetDesc(&desc);
|
||||
|
||||
if (!d->texture ||
|
||||
d->texture->width != desc.Width ||
|
||||
if (!d->texture || d->texture->width != desc.Width ||
|
||||
d->texture->height != desc.Height) {
|
||||
|
||||
delete d->texture;
|
||||
d->texture = (gs_texture_2d*)gs_texture_create(
|
||||
desc.Width, desc.Height,
|
||||
ConvertDXGITextureFormat(desc.Format), 1,
|
||||
nullptr, 0);
|
||||
d->texture = (gs_texture_2d *)gs_texture_create(
|
||||
desc.Width, desc.Height,
|
||||
ConvertDXGITextureFormat(desc.Format), 1, nullptr, 0);
|
||||
}
|
||||
|
||||
if (!!d->texture)
|
||||
d->device->context->CopyResource(d->texture->texture,
|
||||
tex);
|
||||
d->device->context->CopyResource(d->texture->texture, tex);
|
||||
}
|
||||
|
||||
EXPORT bool gs_duplicator_update_frame(gs_duplicator_t *d)
|
||||
|
|
@ -209,16 +208,20 @@ EXPORT bool gs_duplicator_update_frame(gs_duplicator_t *d)
|
|||
return true;
|
||||
|
||||
} else if (FAILED(hr)) {
|
||||
blog(LOG_ERROR, "gs_duplicator_update_frame: Failed to update "
|
||||
"frame (%08lX)", hr);
|
||||
blog(LOG_ERROR,
|
||||
"gs_duplicator_update_frame: Failed to update "
|
||||
"frame (%08lX)",
|
||||
hr);
|
||||
return true;
|
||||
}
|
||||
|
||||
hr = res->QueryInterface(__uuidof(ID3D11Texture2D),
|
||||
(void**)tex.Assign());
|
||||
(void **)tex.Assign());
|
||||
if (FAILED(hr)) {
|
||||
blog(LOG_ERROR, "gs_duplicator_update_frame: Failed to query "
|
||||
"ID3D11Texture2D (%08lX)", hr);
|
||||
blog(LOG_ERROR,
|
||||
"gs_duplicator_update_frame: Failed to query "
|
||||
"ID3D11Texture2D (%08lX)",
|
||||
hr);
|
||||
d->duplicator->ReleaseFrame();
|
||||
return true;
|
||||
}
|
||||
|
|
@ -233,5 +236,4 @@ EXPORT gs_texture_t *gs_duplicator_get_texture(gs_duplicator_t *duplicator)
|
|||
{
|
||||
return duplicator->texture;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue