diff options
Diffstat (limited to 'src/osd/modules/monitor/monitor_common.h')
-rw-r--r-- | src/osd/modules/monitor/monitor_common.h | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/src/osd/modules/monitor/monitor_common.h b/src/osd/modules/monitor/monitor_common.h new file mode 100644 index 00000000000..c021ebcfcb7 --- /dev/null +++ b/src/osd/modules/monitor/monitor_common.h @@ -0,0 +1,43 @@ +// license:BSD-3-Clause +// copyright-holders:Brad Hughes +/* +* monitor_common.h +* +*/ + +#include "modules/lib/osdobj_common.h" +#include <map> + +//============================================================ +// monitor_module_base +//============================================================ + +class monitor_module_base : public monitor_module +{ +private: + std::map<std::uint64_t, std::shared_ptr<osd_monitor_info>> m_monitor_index; + +protected: + bool m_initialized; + +public: + monitor_module_base(const char* type, const char* name) + : monitor_module(type, name), + m_initialized(false) + { + } + + std::shared_ptr<osd_monitor_info> pick_monitor(osd_options& options, int index) override; + std::shared_ptr<osd_monitor_info> monitor_from_handle(std::uint64_t handle) override; + + int init(const osd_options& options) override; + void exit() override; + +protected: + virtual int init_internal(const osd_options& options) = 0; + void add_monitor(std::shared_ptr<osd_monitor_info> monitor); + +private: + std::shared_ptr<osd_monitor_info> pick_monitor_internal(osd_options& options, int index); + static float get_aspect(const char *defdata, const char *data, int report_error); +}; |