#pragma once #include #include #include #include #include #include #include #include #include #include "qt_renderercomon.hpp" #ifdef WAYLAND #include "wl_mouse.hpp" #endif class HardwareRenderer : public QOpenGLWindow, protected QOpenGLFunctions, public RendererCommon { Q_OBJECT private: bool wayland = false; public: void resizeGL(int w, int h) override; void initializeGL() override; void paintGL() override; void paintUnderGL() override; HardwareRenderer(QWindow* parent = nullptr) : QOpenGLWindow(QOpenGLWindow::PartialUpdateBlend, parent), QOpenGLFunctions() { setMinimumSize(QSize(16, 16)); setFlags(Qt::FramelessWindowHint); } ~HardwareRenderer() { makeCurrent(); } enum class RenderType { OpenGL, OpenGLES, }; void setRenderType(RenderType type); public slots: void onBlit(const QImage& img, int, int, int, int, std::atomic_flag* in_use); protected: void resizeEvent(QResizeEvent *event) override; };