DXGITextureHostD3D11::DXGITextureHostD3D11(TextureFlags aFlags, const SurfaceDescriptorD3D10& aDescriptor) : TextureHost(aFlags) , mHandle(aDescriptor.handle()) , mFormat(aDescriptor.format()) , mIsLocked(false) { OpenSharedHandle(); }
already_AddRefed<ID3D10Texture2D> OpenForeign(ID3D10Device* aDevice, const SurfaceDescriptorD3D10& aDescr) { HRESULT hr; ID3D10Texture2D* tex = nullptr; hr = aDevice->OpenSharedResource(reinterpret_cast<HANDLE>(aDescr.handle()), __uuidof(ID3D10Texture2D), (void**)&tex); if (!SUCCEEDED(hr) || !tex) return nullptr; return nsRefPtr<ID3D10Texture2D>(tex).forget(); }