aboutsummaryrefslogtreecommitdiff
path: root/Src/devices/component.cpp
diff options
context:
space:
mode:
authorJef <jef@targetspot.com>2024-09-24 08:54:57 -0400
committerJef <jef@targetspot.com>2024-09-24 08:54:57 -0400
commit20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (patch)
tree12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/devices/component.cpp
parent537bcbc86291b32fc04ae4133ce4d7cac8ebe9a7 (diff)
downloadwinamp-20d28e80a5c861a9d5f449ea911ab75b4f37ad0d.tar.gz
Initial community commit
Diffstat (limited to 'Src/devices/component.cpp')
-rw-r--r--Src/devices/component.cpp84
1 files changed, 84 insertions, 0 deletions
diff --git a/Src/devices/component.cpp b/Src/devices/component.cpp
new file mode 100644
index 00000000..3f4bd8fe
--- /dev/null
+++ b/Src/devices/component.cpp
@@ -0,0 +1,84 @@
+#include "main.h"
+#include "./component.h"
+#include "./deviceManagerFactory.h"
+
+static DeviceManagerFactory deviceManagerFactory;
+
+DevicesComponent::DevicesComponent()
+{
+ InitializeCriticalSection(&lock);
+}
+
+DevicesComponent::~DevicesComponent()
+{
+ EnterCriticalSection(&lock);
+
+ ReleaseServices();
+
+ LeaveCriticalSection(&lock);
+
+ DeleteCriticalSection(&lock);
+}
+
+size_t DevicesComponent::AddRef()
+{
+ return 1;
+}
+
+size_t DevicesComponent::Release()
+{
+ return 1;
+}
+
+int DevicesComponent::QueryInterface(GUID interface_guid, void **object)
+{
+ if (NULL == object)
+ return E_POINTER;
+
+ *object = NULL;
+ return E_NOINTERFACE;
+}
+
+void DevicesComponent::RegisterServices(api_service *service)
+{
+ EnterCriticalSection(&lock);
+
+ deviceManagerFactory.Register(service);
+
+ LeaveCriticalSection(&lock);
+
+ aTRACE_LINE("Devices Service Registered");
+}
+
+int DevicesComponent::RegisterServicesSafeModeOk()
+{
+ return 1;
+}
+
+void DevicesComponent::DeregisterServices(api_service *service)
+{
+ EnterCriticalSection(&lock);
+
+ deviceManagerFactory.Unregister(service);
+
+ ReleaseServices();
+
+ LeaveCriticalSection(&lock);
+
+ aTRACE_LINE("Devices Service Unregistered");
+}
+
+void DevicesComponent::ReleaseServices()
+{
+}
+
+#define CBCLASS DevicesComponent
+START_DISPATCH;
+CB(ADDREF, AddRef)
+CB(RELEASE, Release)
+CB(QUERYINTERFACE, QueryInterface)
+VCB(API_WA5COMPONENT_REGISTERSERVICES, RegisterServices)
+CB(15, RegisterServicesSafeModeOk)
+VCB(API_WA5COMPONENT_DEREEGISTERSERVICES, DeregisterServices)
+END_DISPATCH;
+#undef CBCLASS \ No newline at end of file