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
This commit is contained in:
@@ -28,9 +28,13 @@ extern "C" {
|
||||
}
|
||||
|
||||
SoftwareRenderer::SoftwareRenderer(QWidget *parent)
|
||||
#ifdef __HAIKU__
|
||||
: QWidget(parent)
|
||||
#else
|
||||
: QRasterWindow(parent->windowHandle())
|
||||
#endif
|
||||
{
|
||||
parentWidget = parent;
|
||||
RendererCommon::parentWidget = parent;
|
||||
|
||||
images[0] = std::make_unique<QImage>(QSize(2048, 2048), QImage::Format_RGB32);
|
||||
images[1] = std::make_unique<QImage>(QSize(2048, 2048), QImage::Format_RGB32);
|
||||
@@ -38,6 +42,9 @@ SoftwareRenderer::SoftwareRenderer(QWidget *parent)
|
||||
buf_usage = std::vector<std::atomic_flag>(2);
|
||||
buf_usage[0].clear();
|
||||
buf_usage[1].clear();
|
||||
#ifdef __HAIKU__
|
||||
this->setMouseTracking(true);
|
||||
#endif
|
||||
}
|
||||
|
||||
void SoftwareRenderer::paintEvent(QPaintEvent* event) {
|
||||
@@ -60,13 +67,22 @@ void SoftwareRenderer::onBlit(int buf_idx, int x, int y, int w, int h) {
|
||||
|
||||
void SoftwareRenderer::resizeEvent(QResizeEvent *event) {
|
||||
onResize(width(), height());
|
||||
#ifdef __HAIKU__
|
||||
QWidget::resizeEvent(event);
|
||||
#else
|
||||
QRasterWindow::resizeEvent(event);
|
||||
#endif
|
||||
}
|
||||
|
||||
bool SoftwareRenderer::event(QEvent *event)
|
||||
{
|
||||
bool res = false;
|
||||
if (!eventDelegate(event, res)) return QRasterWindow::event(event);
|
||||
if (!eventDelegate(event, res))
|
||||
#ifdef __HAIKU__
|
||||
return QWidget::event(event);
|
||||
#else
|
||||
return QRasterWindow::event(event);
|
||||
#endif
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user