summaryrefslogtreecommitdiffstatshomepage
path: root/src/osd/windows/drawd3d.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/osd/windows/drawd3d.c')
-rw-r--r--src/osd/windows/drawd3d.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/src/osd/windows/drawd3d.c b/src/osd/windows/drawd3d.c
index ea99ee2259d..250d7b953db 100644
--- a/src/osd/windows/drawd3d.c
+++ b/src/osd/windows/drawd3d.c
@@ -250,7 +250,7 @@ static void drawd3d_window_destroy(win_window_info *window)
if (d3d == NULL)
return;
- if (d3d->get_shaders()->recording())
+ if (d3d->get_shaders() != NULL && d3d->get_shaders()->recording())
d3d->get_shaders()->window_record();
// free the memory in the window
@@ -1040,11 +1040,14 @@ renderer::~renderer()
void renderer::device_delete()
{
- // free our effects
- m_shaders->delete_resources(false);
+ if (m_shaders != NULL)
+ {
+ // free our effects
+ m_shaders->delete_resources(false);
- // delete the HLSL interface
- global_free(m_shaders);
+ // delete the HLSL interface
+ global_free(m_shaders);
+ }
// free our base resources
device_delete_resources();
@@ -1070,7 +1073,8 @@ void renderer::device_delete()
void renderer::device_delete_resources()
{
- m_texture_manager->delete_resources();
+ if (m_texture_manager != NULL)
+ m_texture_manager->delete_resources();
// free the vertex buffer
if (m_vertexbuf != NULL)
(*d3dintf->vertexbuf.release)(m_vertexbuf);