Fix crash on fatalerror from winwindow_video_window_create()

This commit is contained in:
Ramiro Polla 2014-12-15 01:01:42 +01:00
parent b3e46ea37d
commit d7b7853943
2 changed files with 18 additions and 11 deletions

View File

@ -250,7 +250,7 @@ static void drawd3d_window_destroy(win_window_info *window)
if (d3d == NULL) if (d3d == NULL)
return; return;
if (d3d->get_shaders()->recording()) if (d3d->get_shaders() != NULL && d3d->get_shaders()->recording())
d3d->get_shaders()->window_record(); d3d->get_shaders()->window_record();
// free the memory in the window // free the memory in the window
@ -1040,11 +1040,14 @@ renderer::~renderer()
void renderer::device_delete() void renderer::device_delete()
{ {
// free our effects if (m_shaders != NULL)
m_shaders->delete_resources(false); {
// free our effects
m_shaders->delete_resources(false);
// delete the HLSL interface // delete the HLSL interface
global_free(m_shaders); global_free(m_shaders);
}
// free our base resources // free our base resources
device_delete_resources(); device_delete_resources();
@ -1070,7 +1073,8 @@ void renderer::device_delete()
void renderer::device_delete_resources() void renderer::device_delete_resources()
{ {
m_texture_manager->delete_resources(); if (m_texture_manager != NULL)
m_texture_manager->delete_resources();
// free the vertex buffer // free the vertex buffer
if (m_vertexbuf != NULL) if (m_vertexbuf != NULL)
(*d3dintf->vertexbuf.release)(m_vertexbuf); (*d3dintf->vertexbuf.release)(m_vertexbuf);

View File

@ -506,12 +506,15 @@ void windows_osd_interface::input_resume()
void windows_osd_interface::input_exit() void windows_osd_interface::input_exit()
{ {
// acquire the lock and turn off input (this ensures everyone is done) // acquire the lock and turn off input (this ensures everyone is done)
osd_lock_acquire(input_lock); if (input_lock != NULL)
input_enabled = false; {
osd_lock_release(input_lock); osd_lock_acquire(input_lock);
input_enabled = false;
osd_lock_release(input_lock);
// free the lock // free the lock
osd_lock_free(input_lock); osd_lock_free(input_lock);
}
} }