diff options
Diffstat (limited to 'src/osd/modules/render/drawbgfx.cpp')
-rw-r--r-- | src/osd/modules/render/drawbgfx.cpp | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/src/osd/modules/render/drawbgfx.cpp b/src/osd/modules/render/drawbgfx.cpp index f2d58f4e4d5..e359de4624a 100644 --- a/src/osd/modules/render/drawbgfx.cpp +++ b/src/osd/modules/render/drawbgfx.cpp @@ -62,6 +62,7 @@ // TYPES //============================================================ +bool renderer_bgfx::s_window_set = false; //============================================================ // renderer_bgfx::create @@ -100,6 +101,18 @@ int renderer_bgfx::create() m_height[window().m_index] = wdim.height(); if (window().m_index == 0) { + if (!s_window_set) + { + s_window_set = true; + ScreenVertex::init(); + } + else + { + bgfx::shutdown(); + bgfx::PlatformData blank_pd; + memset(&blank_pd, 0, sizeof(bgfx::PlatformData)); + bgfx::setPlatformData(blank_pd); + } #ifdef OSD_WINDOWS bgfx::winSetHwnd(window().m_hwnd); #else @@ -110,8 +123,6 @@ int renderer_bgfx::create() // Enable debug text. bgfx::setDebug(BGFX_DEBUG_TEXT); //BGFX_DEBUG_STATS m_dimensions = osd_dim(m_width[0], m_height[0]); - - ScreenVertex::init(); } m_textures = new texture_manager(); @@ -160,11 +171,14 @@ renderer_bgfx::~renderer_bgfx() delete m_textures; delete m_effects; delete m_shaders; +} +void renderer_bgfx::exit() +{ bgfx::shutdown(); + s_window_set = false; } - //============================================================ // drawsdl_xy_to_render_target //============================================================ |