qt: Refactor renderers buffer ownership
Invert the way buffers are created; make renderer create buffers for renderer stack. Use QImage bits as the buffer for software renderer.
This commit is contained in:
@@ -3,6 +3,8 @@
|
||||
|
||||
#include <QWidget>
|
||||
#include <QRasterWindow>
|
||||
#include <QPaintDevice>
|
||||
#include <array>
|
||||
#include <atomic>
|
||||
#include "qt_renderercomon.hpp"
|
||||
|
||||
@@ -12,11 +14,18 @@ class SoftwareRenderer : public QRasterWindow, public RendererCommon
|
||||
public:
|
||||
explicit SoftwareRenderer(QWidget *parent = nullptr);
|
||||
|
||||
void paintEvent(QPaintEvent *event) override;
|
||||
void paintEvent(QPaintEvent* event) override;
|
||||
|
||||
std::vector<std::tuple<uint8_t*, std::atomic_flag*>> getBuffers() override;
|
||||
|
||||
public slots:
|
||||
void onBlit(const std::unique_ptr<uint8_t>* img, int, int, int, int, std::atomic_flag* in_use);
|
||||
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;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user