aboutsummaryrefslogtreecommitdiffstats
path: root/Alc
diff options
context:
space:
mode:
Diffstat (limited to 'Alc')
-rw-r--r--Alc/alc.cpp8
-rw-r--r--Alc/backends/solaris.cpp45
-rw-r--r--Alc/backends/solaris.h20
3 files changed, 37 insertions, 36 deletions
diff --git a/Alc/alc.cpp b/Alc/alc.cpp
index 63f60e80..89385888 100644
--- a/Alc/alc.cpp
+++ b/Alc/alc.cpp
@@ -77,6 +77,9 @@
#ifdef HAVE_OPENSL
#include "backends/opensl.h"
#endif
+#ifdef HAVE_SOLARIS
+#include "backends/solaris.h"
+#endif
#ifdef HAVE_SDL2
#include "backends/sdl2.h"
#endif
@@ -114,13 +117,14 @@ struct BackendInfo BackendList[] = {
#ifdef HAVE_OPENSL
{ "opensl", OSLBackendFactory::getFactory },
#endif
+#ifdef HAVE_SOLARIS
+ { "solaris", SolarisBackendFactory::getFactory },
+#endif
#if 0
- { "solaris", ALCsolarisBackendFactory_getFactory },
{ "sndio", SndioBackendFactory_getFactory },
{ "oss", ALCossBackendFactory_getFactory },
{ "qsa", ALCqsaBackendFactory_getFactory },
- { "wasapi", ALCwasapiBackendFactory_getFactory },
{ "dsound", ALCdsoundBackendFactory_getFactory },
{ "winmm", ALCwinmmBackendFactory_getFactory },
{ "port", ALCportBackendFactory_getFactory },
diff --git a/Alc/backends/solaris.cpp b/Alc/backends/solaris.cpp
index 20dda617..029ef1a5 100644
--- a/Alc/backends/solaris.cpp
+++ b/Alc/backends/solaris.cpp
@@ -20,6 +20,8 @@
#include "config.h"
+#include "backends/solaris.h"
+
#include <sys/ioctl.h>
#include <sys/types.h>
#include <sys/time.h>
@@ -38,8 +40,6 @@
#include "threads.h"
#include "compat.h"
-#include "backends/base.h"
-
#include <sys/audioio.h>
@@ -293,45 +293,22 @@ static void ALCsolarisBackend_stop(ALCsolarisBackend *self)
}
-struct ALCsolarisBackendFactory final : public ALCbackendFactory {
- ALCsolarisBackendFactory() noexcept;
-};
-
-ALCbackendFactory *ALCsolarisBackendFactory_getFactory(void);
-
-static ALCboolean ALCsolarisBackendFactory_init(ALCsolarisBackendFactory *self);
-static DECLARE_FORWARD(ALCsolarisBackendFactory, ALCbackendFactory, void, deinit)
-static ALCboolean ALCsolarisBackendFactory_querySupport(ALCsolarisBackendFactory *self, ALCbackend_Type type);
-static void ALCsolarisBackendFactory_probe(ALCsolarisBackendFactory *self, enum DevProbe type, std::string *outnames);
-static ALCbackend* ALCsolarisBackendFactory_createBackend(ALCsolarisBackendFactory *self, ALCdevice *device, ALCbackend_Type type);
-DEFINE_ALCBACKENDFACTORY_VTABLE(ALCsolarisBackendFactory);
-
-
-ALCsolarisBackendFactory::ALCsolarisBackendFactory() noexcept
- : ALCbackendFactory{GET_VTABLE2(ALCsolarisBackendFactory, ALCbackendFactory)}
-{ }
-
-ALCbackendFactory *ALCsolarisBackendFactory_getFactory(void)
+BackendFactory &SolarisBackendFactory::getFactory()
{
- static ALCsolarisBackendFactory factory{};
- return STATIC_CAST(ALCbackendFactory, &factory);
+ static SolarisBackendFactory factory{};
+ return factory;
}
-
-static ALCboolean ALCsolarisBackendFactory_init(ALCsolarisBackendFactory* UNUSED(self))
+bool SolarisBackendFactory::init()
{
ConfigValueStr(nullptr, "solaris", "device", &solaris_driver);
- return ALC_TRUE;
+ return true;
}
-static ALCboolean ALCsolarisBackendFactory_querySupport(ALCsolarisBackendFactory* UNUSED(self), ALCbackend_Type type)
-{
- if(type == ALCbackend_Playback)
- return ALC_TRUE;
- return ALC_FALSE;
-}
+bool SolarisBackendFactory::querySupport(ALCbackend_Type type)
+{ return (type == ALCbackend_Playback); }
-static void ALCsolarisBackendFactory_probe(ALCsolarisBackendFactory* UNUSED(self), enum DevProbe type, std::string *outnames)
+void SolarisBackendFactory::probe(enum DevProbe type, std::string *outnames)
{
switch(type)
{
@@ -350,7 +327,7 @@ static void ALCsolarisBackendFactory_probe(ALCsolarisBackendFactory* UNUSED(self
}
}
-ALCbackend* ALCsolarisBackendFactory_createBackend(ALCsolarisBackendFactory* UNUSED(self), ALCdevice *device, ALCbackend_Type type)
+ALCbackend *SolarisBackendFactory::createBackend(ALCdevice *device, ALCbackend_Type type)
{
if(type == ALCbackend_Playback)
{
diff --git a/Alc/backends/solaris.h b/Alc/backends/solaris.h
new file mode 100644
index 00000000..dcb34570
--- /dev/null
+++ b/Alc/backends/solaris.h
@@ -0,0 +1,20 @@
+#ifndef BACKENDS_SOLARIS_H
+#define BACKENDS_SOLARIS_H
+
+#include "backends/base.h"
+
+struct SolarisBackendFactory final : public BackendFactory {
+public:
+ bool init() override;
+ /*void deinit() override;*/
+
+ bool querySupport(ALCbackend_Type type) override;
+
+ void probe(enum DevProbe type, std::string *outnames) override;
+
+ ALCbackend *createBackend(ALCdevice *device, ALCbackend_Type type) override;
+
+ static BackendFactory &getFactory();
+};
+
+#endif /* BACKENDS_SOLARIS_H */