diff options
Diffstat (limited to 'src/osd/modules/render/bgfx/targetmanager.cpp')
-rw-r--r-- | src/osd/modules/render/bgfx/targetmanager.cpp | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/src/osd/modules/render/bgfx/targetmanager.cpp b/src/osd/modules/render/bgfx/targetmanager.cpp index 6350829a4ed..e17b0e6915a 100644 --- a/src/osd/modules/render/bgfx/targetmanager.cpp +++ b/src/osd/modules/render/bgfx/targetmanager.cpp @@ -48,14 +48,26 @@ target_manager::~target_manager() bgfx_target* target_manager::create_target(std::string name, bgfx::TextureFormat::Enum format, uint16_t width, uint16_t height, uint32_t style, bool double_buffer, bool filter, uint16_t scale, uint32_t screen) { bgfx_target* target = new bgfx_target(name, format, width, height, style, double_buffer, filter, scale, screen); + std::string full_name = name + std::to_string(screen); - m_targets[name + std::to_string(screen)] = target; + m_targets[full_name] = target; - m_textures.add_provider(name + std::to_string(screen), target); + m_textures.add_provider(full_name, target); return target; } +void target_manager::destroy_target(std::string name, uint32_t screen) +{ + std::string full_name = name + std::to_string(screen); + if (m_targets[full_name] != nullptr) + { + delete m_targets[full_name]; + m_targets[full_name] = nullptr; + m_textures.remove_provider(full_name); + } +} + bgfx_target* target_manager::create_backbuffer(void *handle, uint16_t width, uint16_t height) { bgfx_target* target = new bgfx_target(handle, width, height); @@ -161,3 +173,15 @@ void target_manager::create_target_if_nonexistent(uint32_t screen, std::string n create_target(name, bgfx::TextureFormat::RGBA8, width, height, style, double_buffered, filter, 1, screen); } + +uint16_t target_manager::width(uint32_t style, uint32_t screen) +{ + std::vector<osd_dim>& sizes = style == TARGET_STYLE_GUEST ? m_guest_dims : m_native_dims; + return screen < sizes.size() ? sizes[screen].width() : 0; +} + +uint16_t target_manager::height(uint32_t style, uint32_t screen) +{ + std::vector<osd_dim>& sizes = style == TARGET_STYLE_GUEST ? m_guest_dims : m_native_dims; + return screen < sizes.size() ? sizes[screen].height() : 0; +} |