aboutsummaryrefslogtreecommitdiff
path: root/Src/Winamp/LazyServiceFactory.h
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/Winamp/LazyServiceFactory.h
parent537bcbc86291b32fc04ae4133ce4d7cac8ebe9a7 (diff)
downloadwinamp-20d28e80a5c861a9d5f449ea911ab75b4f37ad0d.tar.gz
Initial community commit
Diffstat (limited to 'Src/Winamp/LazyServiceFactory.h')
-rw-r--r--Src/Winamp/LazyServiceFactory.h30
1 files changed, 30 insertions, 0 deletions
diff --git a/Src/Winamp/LazyServiceFactory.h b/Src/Winamp/LazyServiceFactory.h
new file mode 100644
index 00000000..6894b6b2
--- /dev/null
+++ b/Src/Winamp/LazyServiceFactory.h
@@ -0,0 +1,30 @@
+#pragma once
+
+#include <api/service/waservicefactory.h>
+#include <bfc/multipatch.h>
+#include <api/syscb/callbacks/svccb.h>
+enum {ServiceFactoryPatch, SysCallbackPatch };
+class LazyServiceFactory : public MultiPatch<ServiceFactoryPatch, waServiceFactory>, public MultiPatch<SysCallbackPatch, SysCallback>
+{
+public:
+ LazyServiceFactory(FOURCC _service_type, GUID _service_guid, char *_service_name, char *_service_test_string, const wchar_t *_service_filename);
+ ~LazyServiceFactory();
+ FOURCC GetServiceType();
+ const char *GetServiceName();
+ GUID GetGUID();
+ void *GetInterface(int global_lock);
+ int SupportNonLockingInterface();
+ int ReleaseInterface(void *ifc);
+ const char *GetTestString();
+ int ServiceNotify(int msg, intptr_t param1, intptr_t param2);
+ FOURCC GetEventType() { return SysCallback::SERVICE; }
+ int Notify(int msg, intptr_t param1, intptr_t param2);
+protected:
+ RECVS_MULTIPATCH;
+
+ FOURCC service_type;
+ char *service_name;
+ GUID service_guid;
+ wchar_t service_filename[MAX_PATH];
+ char *service_test_string;
+}; \ No newline at end of file