Files
86Box/src/qt/qt_softwarerenderer.hpp
Cacodemon345 c1f9d35de8 qt: Add support for Haiku
* OpenAL backend is enabled by default on Haiku
* bswap include now makes use of builtins if they exist
* Use a local fgetws method for Haiku to avoid crashes
* OpenGL renderers are completely disabled on Haiku (they do not work)
* Software renderer is a widget, not a window on Haiku (fixes blank screen)
* Add option to disable System MIDI at compile time
2022-03-11 12:13:08 +06:00

40 lines
900 B
C++

#ifndef SOFTWARERENDERER_HPP
#define SOFTWARERENDERER_HPP
#include <QWidget>
#include <QRasterWindow>
#include <QPaintDevice>
#include <array>
#include <atomic>
#include "qt_renderercommon.hpp"
class SoftwareRenderer :
#ifdef __HAIKU__
public QWidget,
#else
public QRasterWindow,
#endif
public RendererCommon
{
Q_OBJECT
public:
explicit SoftwareRenderer(QWidget *parent = nullptr);
void paintEvent(QPaintEvent* event) override;
std::vector<std::tuple<uint8_t*, std::atomic_flag*>> getBuffers() override;
public slots:
void onBlit(int buf_idx, int x, int y, int w, int h);
protected:
std::array<std::unique_ptr<QImage>, 2> images;
int cur_image = -1;
void onPaint(QPaintDevice* device);
void resizeEvent(QResizeEvent *event) override;
bool event(QEvent *event) override;
};
#endif // SOFTWARERENDERER_HPP