diff options
author | Jef <jef@targetspot.com> | 2024-09-24 08:54:57 -0400 |
---|---|---|
committer | Jef <jef@targetspot.com> | 2024-09-24 08:54:57 -0400 |
commit | 20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (patch) | |
tree | 12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/devices/component.cpp | |
parent | 537bcbc86291b32fc04ae4133ce4d7cac8ebe9a7 (diff) | |
download | winamp-20d28e80a5c861a9d5f449ea911ab75b4f37ad0d.tar.gz |
Initial community commit
Diffstat (limited to 'Src/devices/component.cpp')
-rw-r--r-- | Src/devices/component.cpp | 84 |
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 |