summaryrefslogtreecommitdiffstatshomepage
path: root/src/osd/modules/osdwindow.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/osd/modules/osdwindow.h')
-rw-r--r--src/osd/modules/osdwindow.h50
1 files changed, 5 insertions, 45 deletions
diff --git a/src/osd/modules/osdwindow.h b/src/osd/modules/osdwindow.h
index 3fa62babfbf..ca6ddbd375e 100644
--- a/src/osd/modules/osdwindow.h
+++ b/src/osd/modules/osdwindow.h
@@ -41,7 +41,7 @@ enum
VIDEO_MODE_NONE = 0,
VIDEO_MODE_GDI,
VIDEO_MODE_BGFX,
-#if (USE_OPENGL)
+#if defined(USE_OPENGL) && USE_OPENGL
VIDEO_MODE_OPENGL,
#endif
VIDEO_MODE_SDL2ACCEL,
@@ -51,46 +51,6 @@ enum
VIDEO_MODE_COUNT
};
-class osd_monitor_info
-{
-public:
- osd_monitor_info(void *handle, const char *monitor_device, float aspect)
- : m_is_primary(false), m_name(monitor_device), m_handle(handle), m_aspect(aspect)
- {
- }
-
- virtual ~osd_monitor_info() { }
-
- virtual void refresh() = 0;
-
- const void *oshandle() const { return m_handle; }
-
- const osd_rect &position_size() const { return m_pos_size; }
- const osd_rect &usuable_position_size() const { return m_usuable_pos_size; }
-
- const char *devicename() const { return m_name.length() ? m_name.c_str() : "UNKNOWN"; }
-
- float aspect() const { return m_aspect; }
- float pixel_aspect() const { return m_aspect / ((float)m_pos_size.width() / (float)m_pos_size.height()); }
-
- void update_resolution(const int new_width, const int new_height) const { m_pos_size.resize(new_width, new_height); }
- void set_aspect(const float a) { m_aspect = a; }
- bool is_primary() const { return m_is_primary; }
-
- static std::shared_ptr<osd_monitor_info> pick_monitor(osd_options &options, int index);
-
- static std::list<std::shared_ptr<osd_monitor_info>> list;
-
-protected:
- osd_rect m_pos_size;
- osd_rect m_usuable_pos_size;
- bool m_is_primary;
- std::string m_name;
-private:
- void * m_handle; // handle to the monitor
- float m_aspect; // computed/configured aspect ratio of the physical device
-};
-
class osd_window_config
{
public:
@@ -104,6 +64,7 @@ public:
};
class osd_renderer;
+class osd_monitor_info;
class osd_window : public std::enable_shared_from_this<osd_window>
{
@@ -126,15 +87,17 @@ public:
virtual int fullscreen() const = 0;
virtual running_machine &machine() const = 0;
+ bool has_renderer() const { return m_renderer != nullptr; }
osd_renderer &renderer() const { return *m_renderer; }
void set_renderer(std::unique_ptr<osd_renderer> renderer)
{
m_renderer = std::move(renderer);
}
+ void renderer_reset() { m_renderer.reset(); }
int prescale() const { return m_prescale; };
- float pixel_aspect() const { return monitor()->pixel_aspect(); }
+ float pixel_aspect() const;
bool swap_xy()
{
@@ -173,11 +136,8 @@ public:
virtual void update() = 0;
virtual void destroy() = 0;
- void renderer_reset() { m_renderer.reset(); }
#ifndef OSD_SDL
virtual bool win_has_menu() = 0;
- // FIXME: cann we replace winwindow_video_window_monitor(nullptr) with monitor() ?
- virtual std::shared_ptr<osd_monitor_info> winwindow_video_window_monitor(const osd_rect *proposed) = 0;
HDC m_dc; // only used by GDI renderer!