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:
Cacodemon345
2022-03-11 12:03:54 +06:00
parent 1791ccdeb6
commit c1f9d35de8
17 changed files with 337 additions and 33 deletions

View File

@@ -13,12 +13,15 @@
* Copyright 2021 Cacodemon345.
* Copyright 2021 Miran Grca.
*/
#if defined __has_include
# if __has_include (<RtMidi.h>)
# include <RtMidi.h>
# endif
# if __has_include (<rtmidi/RtMidi.h>)
# include <rtmidi/RtMidi.h>
#ifdef SYSTEM_MIDI
# if defined __has_include
# if __has_include (<RtMidi.h>)
# include <RtMidi.h>
# endif
# if __has_include (<rtmidi/RtMidi.h>)
# include <rtmidi/RtMidi.h>
# endif
# endif
#endif
@@ -35,9 +38,10 @@ extern "C"
#include <86box/midi_rtmidi.h>
#include <86box/config.h>
#ifdef SYSTEM_MIDI
static RtMidiOut * midiout = nullptr;
static RtMidiIn * midiin = nullptr;
#endif
static int midi_out_id = 0, midi_in_id = 0;
static const int midi_lengths[8] = {3, 3, 3, 3, 2, 2, 3, 1};
@@ -49,6 +53,7 @@ rtmidi_write(uint8_t val)
}
#ifdef SYSTEM_MIDI
void
rtmidi_play_msg(uint8_t *msg)
{
@@ -231,6 +236,76 @@ rtmidi_in_get_dev_name(int num, char *s)
{
strcpy(s, midiin->getPortName(num).c_str());
}
#else /* !SYSTEM_MIDI */
void
rtmidi_play_msg(uint8_t *msg)
{
}
void
rtmidi_play_sysex(uint8_t *sysex, unsigned int len)
{
}
void*
rtmidi_init(const device_t *info)
{
return nullptr;
}
void
rtmidi_close(void *p)
{
}
int
rtmidi_get_num_devs(void)
{
return 0;
}
void
rtmidi_get_dev_name(int num, char *s)
{
}
void*
rtmidi_input_init(const device_t *info)
{
return nullptr;
}
void
rtmidi_input_close(void* p)
{
}
int
rtmidi_in_get_num_devs(void)
{
return 0;
}
void
rtmidi_in_get_dev_name(int num, char *s)
{
}
#endif
static const device_config_t system_midi_config[] =
{