mirror of
https://github.com/wiiu-env/SDHotSwapModule.git
synced 2024-11-16 00:25:13 +01:00
Add SDUtilsAddCleanUpHandlesHandler and SDUtilsRemoveCleanUpHandlesHandler
This commit is contained in:
parent
9cc06a1130
commit
6e2b4fa800
@ -6,6 +6,8 @@
|
|||||||
#define MAX_HANDLERS 16
|
#define MAX_HANDLERS 16
|
||||||
static SDAttachHandlerFn sHandlers[MAX_HANDLERS] = {nullptr};
|
static SDAttachHandlerFn sHandlers[MAX_HANDLERS] = {nullptr};
|
||||||
|
|
||||||
|
static SDCleanUpHandlesHandlerFn sCleanupHandlesHandlers[MAX_HANDLERS] = {nullptr};
|
||||||
|
|
||||||
void callAttachCallbacks(SDUtilsAttachStatus status) {
|
void callAttachCallbacks(SDUtilsAttachStatus status) {
|
||||||
int i;
|
int i;
|
||||||
for (i = 0; i < MAX_HANDLERS; ++i) {
|
for (i = 0; i < MAX_HANDLERS; ++i) {
|
||||||
@ -15,10 +17,23 @@ void callAttachCallbacks(SDUtilsAttachStatus status) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void callCleanUpHandlesCallbacks() {
|
||||||
|
int i;
|
||||||
|
for (i = 0; i < MAX_HANDLERS; ++i) {
|
||||||
|
if (sCleanupHandlesHandlers[i]) {
|
||||||
|
sCleanupHandlesHandlers[i]();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void cleanUpAttachCallbacks() {
|
void cleanUpAttachCallbacks() {
|
||||||
memset(sHandlers, 0, sizeof(sHandlers));
|
memset(sHandlers, 0, sizeof(sHandlers));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void cleanUpCleanUpHandlesCallbacks() {
|
||||||
|
memset(sCleanupHandlesHandlers, 0, sizeof(sCleanupHandlesHandlers));
|
||||||
|
}
|
||||||
|
|
||||||
bool SDUtilsAddAttachHandler(SDAttachHandlerFn fn) {
|
bool SDUtilsAddAttachHandler(SDAttachHandlerFn fn) {
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
@ -48,6 +63,35 @@ bool SDUtilsRemoveAttachHandler(SDAttachHandlerFn fn) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool SDUtilsAddCleanUpHandlesHandler(SDCleanUpHandlesHandlerFn fn) {
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (i = 0; i < MAX_HANDLERS; ++i) {
|
||||||
|
if (sCleanupHandlesHandlers[i] == fn) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (!sCleanupHandlesHandlers[i]) {
|
||||||
|
sCleanupHandlesHandlers[i] = fn;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool SDUtilsRemoveCleanUpHandlesHandler(SDCleanUpHandlesHandlerFn fn) {
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (i = 0; i < MAX_HANDLERS; ++i) {
|
||||||
|
if (sCleanupHandlesHandlers[i] == fn) {
|
||||||
|
sCleanupHandlesHandlers[i] = nullptr;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
SDUtilsVersion SDUtilsGetVersion() {
|
SDUtilsVersion SDUtilsGetVersion() {
|
||||||
return SDUTILS_MODULE_VERSION;
|
return SDUTILS_MODULE_VERSION;
|
||||||
}
|
}
|
||||||
@ -56,3 +100,6 @@ WUMS_EXPORT_FUNCTION(SDUtilsGetVersion);
|
|||||||
|
|
||||||
WUMS_EXPORT_FUNCTION(SDUtilsAddAttachHandler);
|
WUMS_EXPORT_FUNCTION(SDUtilsAddAttachHandler);
|
||||||
WUMS_EXPORT_FUNCTION(SDUtilsRemoveAttachHandler);
|
WUMS_EXPORT_FUNCTION(SDUtilsRemoveAttachHandler);
|
||||||
|
|
||||||
|
WUMS_EXPORT_FUNCTION(SDUtilsAddCleanUpHandlesHandler);
|
||||||
|
WUMS_EXPORT_FUNCTION(SDUtilsRemoveCleanUpHandlesHandler);
|
@ -2,5 +2,7 @@
|
|||||||
#include <sdutils/sdutils.h>
|
#include <sdutils/sdutils.h>
|
||||||
|
|
||||||
void callAttachCallbacks(SDUtilsAttachStatus status);
|
void callAttachCallbacks(SDUtilsAttachStatus status);
|
||||||
|
|
||||||
void cleanUpAttachCallbacks();
|
void cleanUpAttachCallbacks();
|
||||||
|
|
||||||
|
void callCleanUpHandlesCallbacks();
|
||||||
|
void cleanUpCleanUpHandlesCallbacks();
|
@ -40,6 +40,7 @@ void DeInitSDCheck() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
cleanUpAttachCallbacks();
|
cleanUpAttachCallbacks();
|
||||||
|
cleanUpCleanUpHandlesCallbacks();
|
||||||
|
|
||||||
OSMemoryBarrier();
|
OSMemoryBarrier();
|
||||||
}
|
}
|
||||||
@ -85,6 +86,7 @@ int UnmountSDCard() {
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
std::lock_guard<std::mutex> lk(*mutex);
|
std::lock_guard<std::mutex> lk(*mutex);
|
||||||
|
callCleanUpHandlesCallbacks();
|
||||||
FSCmdBlock fsCmd;
|
FSCmdBlock fsCmd;
|
||||||
FSInitCmdBlock(&fsCmd);
|
FSInitCmdBlock(&fsCmd);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user