aboutsummaryrefslogtreecommitdiff
path: root/Src/devices/component.cpp
diff options
context:
space:
mode:
authorJean-Francois Mauguit <jfmauguit@mac.com>2024-09-24 09:03:25 -0400
committerGitHub <noreply@github.com>2024-09-24 09:03:25 -0400
commitbab614c421ed7ae329d26bf028c4a3b1d2450f5a (patch)
tree12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/devices/component.cpp
parent4bde6044fddf053f31795b9eaccdd2a5a527d21f (diff)
parent20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (diff)
downloadwinamp-bab614c421ed7ae329d26bf028c4a3b1d2450f5a.tar.gz
Merge pull request #5 from WinampDesktop/community
Merge to main
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