ncannasse пре 7 година
родитељ
комит
753e3d77a9
2 измењених фајлова са 13 додато и 1 уклоњено
  1. 9 0
      libs/directx/directx.cpp
  2. 4 1
      libs/directx/dx/Driver.hx

+ 9 - 0
libs/directx/directx.cpp

@@ -115,6 +115,14 @@ HL_PRIM dx_driver *HL_NAME(create)( HWND window, int format, int flags, int rest
 	return d;
 }
 
+HL_PRIM void HL_NAME(dispose_driver)( dx_driver *d ) {
+	d->swapchain->Release();
+	d->device->Release();
+	d->context->Release();
+	if( driver == d )
+		driver = NULL;
+}
+
 HL_PRIM dx_driver *HL_NAME(get_driver)(){
 	return driver;
 }
@@ -429,6 +437,7 @@ HL_PRIM void HL_NAME(debug_print)( vbyte *b ) {
 
 DEFINE_PRIM(_VOID, set_error_handler, _FUN(_VOID, _I32 _I32 _I32));
 DEFINE_PRIM(_DRIVER, create, _ABSTRACT(dx_window) _I32 _I32 _I32);
+DEFINE_PRIM(_VOID, dispose_driver, _DRIVER);
 DEFINE_PRIM(_BOOL, resize, _I32 _I32 _I32);
 DEFINE_PRIM(_RESOURCE, get_back_buffer, _NO_ARG);
 DEFINE_PRIM(_POINTER, create_render_target_view, _RESOURCE _DYN);

+ 4 - 1
libs/directx/dx/Driver.hx

@@ -464,7 +464,7 @@ class ShaderResourceViewDesc {
 class Driver {
 
 	public static var fullScreen(get, set) : Bool;
-	
+
 	/**
 		Setup an error handler instead of getting String exceptions:
 		The first parameter is the DirectX error code
@@ -479,6 +479,9 @@ class Driver {
 		return dxCreate(@:privateAccess win.win, format, flags, restrictLevel);
 	}
 
+	public static function disposeDriver( driver : DriverInstance ) {
+	}
+
 	public static function resize( width : Int, height : Int, format : Format ) : Bool {
 		return false;
 	}