mirror of
https://github.com/holub/mame
synced 2025-06-02 19:06:43 +03:00
Fix crash on fatalerror from winwindow_video_window_create()
This commit is contained in:
parent
b3e46ea37d
commit
d7b7853943
@ -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);
|
||||||
|
@ -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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user