mirror of
https://github.com/86Box/86Box.git
synced 2026-02-24 20:35:32 -07:00
Software renderer no longer uses QRasterWindow
This commit is contained in:
@@ -21,6 +21,7 @@
|
||||
#include "qt_softwarerenderer.hpp"
|
||||
#include <QApplication>
|
||||
#include <QPainter>
|
||||
#include <QResizeEvent>
|
||||
|
||||
extern "C" {
|
||||
#include <86box/86box.h>
|
||||
@@ -31,7 +32,7 @@ SoftwareRenderer::SoftwareRenderer(QWidget *parent)
|
||||
#ifdef __HAIKU__
|
||||
: QWidget(parent)
|
||||
#else
|
||||
: QRasterWindow(parent->windowHandle())
|
||||
: QWindow(parent->windowHandle()), m_backingStore(new QBackingStore(this))
|
||||
#endif
|
||||
{
|
||||
RendererCommon::parentWidget = parent;
|
||||
@@ -47,12 +48,30 @@ SoftwareRenderer::SoftwareRenderer(QWidget *parent)
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef __HAIKU__
|
||||
void
|
||||
SoftwareRenderer::paintEvent(QPaintEvent *event)
|
||||
{
|
||||
(void) event;
|
||||
onPaint(this);
|
||||
}
|
||||
#endif
|
||||
|
||||
void
|
||||
SoftwareRenderer::render()
|
||||
{
|
||||
if (!isExposed())
|
||||
return;
|
||||
|
||||
QRect rect(0, 0, width(), height());
|
||||
m_backingStore->beginPaint(rect);
|
||||
|
||||
QPaintDevice *device = m_backingStore->paintDevice();
|
||||
onPaint(device);
|
||||
|
||||
m_backingStore->endPaint();
|
||||
m_backingStore->flush(rect);
|
||||
}
|
||||
|
||||
void
|
||||
SoftwareRenderer::onBlit(int buf_idx, int x, int y, int w, int h)
|
||||
@@ -70,7 +89,11 @@ SoftwareRenderer::onBlit(int buf_idx, int x, int y, int w, int h)
|
||||
|
||||
if (source != origSource)
|
||||
onResize(this->width(), this->height());
|
||||
#ifdef __HAIKU__
|
||||
update();
|
||||
#else
|
||||
render();
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
@@ -80,7 +103,8 @@ SoftwareRenderer::resizeEvent(QResizeEvent *event)
|
||||
#ifdef __HAIKU__
|
||||
QWidget::resizeEvent(event);
|
||||
#else
|
||||
QRasterWindow::resizeEvent(event);
|
||||
QWindow::resizeEvent(event);
|
||||
m_backingStore->resize(event->size());
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -92,7 +116,7 @@ SoftwareRenderer::event(QEvent *event)
|
||||
#ifdef __HAIKU__
|
||||
return QWidget::event(event);
|
||||
#else
|
||||
return QRasterWindow::event(event);
|
||||
return QWindow::event(event);
|
||||
#endif
|
||||
return res;
|
||||
}
|
||||
@@ -112,6 +136,9 @@ SoftwareRenderer::onPaint(QPaintDevice *device)
|
||||
#endif
|
||||
painter.setCompositionMode(QPainter::CompositionMode_Plus);
|
||||
painter.drawImage(destination, *images[cur_image], source);
|
||||
#ifndef __HAIKU__
|
||||
painter.end();
|
||||
#endif
|
||||
}
|
||||
|
||||
std::vector<std::tuple<uint8_t *, std::atomic_flag *>>
|
||||
|
||||
Reference in New Issue
Block a user