Ver Fonte

added device error checks for capturePixels

Nicolas Cannasse há 5 anos atrás
pai
commit
b60bce1ab4
1 ficheiros alterados com 6 adições e 0 exclusões
  1. 6 0
      h3d/impl/DirectXDriver.hx

+ 6 - 0
h3d/impl/DirectXDriver.hx

@@ -535,6 +535,9 @@ class DirectXDriver extends h3d.impl.Driver {
 		desc.access = CpuRead | CpuWrite;
 		desc.access = CpuRead | CpuWrite;
 		desc.usage = Staging;
 		desc.usage = Staging;
 		desc.format = getTextureFormat(tex);
 		desc.format = getTextureFormat(tex);
+		
+		if( hasDeviceError ) throw "Can't capture if device disposed";
+		
 		var tmp = dx.Driver.createTexture2d(desc);
 		var tmp = dx.Driver.createTexture2d(desc);
 		if( tmp == null )
 		if( tmp == null )
 			throw "Capture failed: can't create tmp texture";
 			throw "Capture failed: can't create tmp texture";
@@ -554,6 +557,9 @@ class DirectXDriver extends h3d.impl.Driver {
 		var pitch = 0;
 		var pitch = 0;
 		var bpp = hxd.Pixels.calcStride(1, tex.format);
 		var bpp = hxd.Pixels.calcStride(1, tex.format);
 		var ptr = tmp.map(0, Read, true, pitch);
 		var ptr = tmp.map(0, Read, true, pitch);
+		
+		if( hasDeviceError ) throw "Device was disposed during capturePixels";
+		
 		if( pitch == desc.width * bpp )
 		if( pitch == desc.width * bpp )
 			@:privateAccess pixels.bytes.b.blit(0, ptr, 0, desc.width * desc.height * bpp);
 			@:privateAccess pixels.bytes.b.blit(0, ptr, 0, desc.width * desc.height * bpp);
 		else {
 		else {