libobs-d3d11: Store index and add "Start" function

This allows restarting the duplicator at a later point in time.
master
jp9000 2016-11-03 06:59:56 -07:00
parent 75cd6b4ab4
commit a5ed61e02e
2 changed files with 11 additions and 3 deletions

View File

@ -33,14 +33,13 @@ static inline bool get_monitor(gs_device_t *device, int monitor_idx,
return true; return true;
} }
gs_duplicator::gs_duplicator(gs_device_t *device_, int monitor_idx) void gs_duplicator::Start()
: texture(nullptr), device(device_)
{ {
ComPtr<IDXGIOutput1> output1; ComPtr<IDXGIOutput1> output1;
ComPtr<IDXGIOutput> output; ComPtr<IDXGIOutput> output;
HRESULT hr; HRESULT hr;
if (!get_monitor(device, monitor_idx, output.Assign())) if (!get_monitor(device, idx, output.Assign()))
throw "Invalid monitor index"; throw "Invalid monitor index";
hr = output->QueryInterface(__uuidof(IDXGIOutput1), hr = output->QueryInterface(__uuidof(IDXGIOutput1),
@ -53,6 +52,12 @@ gs_duplicator::gs_duplicator(gs_device_t *device_, int monitor_idx)
throw HRError("Failed to duplicate output", hr); throw HRError("Failed to duplicate output", hr);
} }
gs_duplicator::gs_duplicator(gs_device_t *device_, int monitor_idx)
: texture(nullptr), device(device_), idx(monitor_idx)
{
Start();
}
gs_duplicator::~gs_duplicator() gs_duplicator::~gs_duplicator()
{ {
delete texture; delete texture;

View File

@ -453,6 +453,9 @@ struct gs_duplicator {
ComPtr<IDXGIOutputDuplication> duplicator; ComPtr<IDXGIOutputDuplication> duplicator;
gs_texture_2d *texture; gs_texture_2d *texture;
gs_device_t *device; gs_device_t *device;
int idx;
void Start();
gs_duplicator(gs_device_t *device, int monitor_idx); gs_duplicator(gs_device_t *device, int monitor_idx);
~gs_duplicator(); ~gs_duplicator();