summaryrefslogtreecommitdiffstatshomepage
path: root/src/osd/windows/window.cpp
diff options
context:
space:
mode:
author therealmogminer@gmail.com <therealmogminer@gmail.com>2016-02-22 17:30:21 +0100
committer therealmogminer@gmail.com <therealmogminer@gmail.com>2016-02-22 17:30:35 +0100
commit53994092de00f0f705c56ae24ef813c01474cae1 (patch)
tree44695c9e7d5e362887544195ca43f6428b4a3a7b /src/osd/windows/window.cpp
parente4c5cf650b02062e4c28fbf4b93670be94f7cdd3 (diff)
Fix D3D and BGFX fullscreen toggle issues, nw
Diffstat (limited to 'src/osd/windows/window.cpp')
-rw-r--r--src/osd/windows/window.cpp35
1 files changed, 29 insertions, 6 deletions
diff --git a/src/osd/windows/window.cpp b/src/osd/windows/window.cpp
index ee78e574a67..bb81f0b9de5 100644
--- a/src/osd/windows/window.cpp
+++ b/src/osd/windows/window.cpp
@@ -325,6 +325,29 @@ void windows_osd_interface::window_exit()
global_free(temp);
}
+ switch(video_config.mode)
+ {
+ case VIDEO_MODE_NONE:
+ renderer_none::exit();
+ break;
+ case VIDEO_MODE_GDI:
+ renderer_gdi::exit();
+ break;
+ case VIDEO_MODE_BGFX:
+ renderer_bgfx::exit();
+ break;
+#if (USE_OPENGL)
+ case VIDEO_MODE_OPENGL:
+ renderer_ogl::exit();
+ break;
+#endif
+ case VIDEO_MODE_D3D:
+ renderer_d3d9::exit();
+ break;
+ default:
+ break;
+ }
+
// if we're multithreaded, clean up the window thread
if (multithreading_enabled)
{
@@ -375,6 +398,10 @@ win_window_info::win_window_info(running_machine &machine)
win_window_info::~win_window_info()
{
+ if (m_renderer != nullptr)
+ {
+ delete m_renderer;
+ }
}
@@ -1283,7 +1310,7 @@ int win_window_info::complete_create()
// finish off by trying to initialize DirectX; if we fail, ignore it
if (m_renderer != nullptr)
{
- global_free(m_renderer);
+ delete m_renderer;
}
m_renderer = osd_renderer::make_for_type(video_config.mode, reinterpret_cast<osd_window *>(this));
if (m_renderer->create())
@@ -1938,7 +1965,7 @@ void win_window_info::set_fullscreen(int fullscreen)
m_fullscreen = fullscreen;
// kill off the drawers
- global_free(m_renderer);
+ delete m_renderer;
m_renderer = nullptr;
// hide ourself
@@ -1996,10 +2023,6 @@ void win_window_info::set_fullscreen(int fullscreen)
if (video_config.mode != VIDEO_MODE_NONE)
ShowWindow(m_hwnd, SW_SHOW);
- if (m_renderer != nullptr)
- {
- delete m_renderer;
- }
m_renderer = reinterpret_cast<osd_renderer *>(osd_renderer::make_for_type(video_config.mode, reinterpret_cast<osd_window *>(this)));
if (m_renderer->create())
exit(1);