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); diff --git a/src/osd/windows/input.c b/src/osd/windows/input.c index 60937104b2a..13df338d4af 100644 --- a/src/osd/windows/input.c +++ b/src/osd/windows/input.c @@ -506,12 +506,15 @@ void windows_osd_interface::input_resume() void windows_osd_interface::input_exit() { // acquire the lock and turn off input (this ensures everyone is done) - osd_lock_acquire(input_lock); - input_enabled = false; - osd_lock_release(input_lock); + if (input_lock != NULL) + { + osd_lock_acquire(input_lock); + input_enabled = false; + osd_lock_release(input_lock); - // free the lock - osd_lock_free(input_lock); + // free the lock + osd_lock_free(input_lock); + } }