1
0
mirror of https://github.com/gryf/wmaker.git synced 2025-12-18 12:00:31 +01:00

WINGs: Add functions to release application memory

This commit is contained in:
David Maciejak
2014-04-06 01:52:50 +02:00
committed by Carlos R. Mafra
parent 36c3f7edf4
commit 588e04dda7
4 changed files with 35 additions and 1 deletions

View File

@@ -642,9 +642,11 @@ WMRect wmkrect(int x, int y, unsigned int width, unsigned int height);
/* ---[ WINGs/wapplication.c ]-------------------------------------------- */
void WMInitializeApplication(const char *applicationName, int *argc, char **argv);
/* You're supposed to call this funtion before exiting so WINGs can terminate properly */
void WMReleaseApplication(void);
void WMSetResourcePath(const char *path);
/* don't free the returned string */

View File

@@ -365,6 +365,8 @@ Bool W_HandleInputEvents(Bool waitForInput, int inputfd);
void W_InitNotificationCenter(void);
void W_ReleaseNotificationCenter(void);
void W_FlushASAPNotificationQueue(void);
void W_FlushIdleNotificationQueue(void);

View File

@@ -94,6 +94,21 @@ void W_InitNotificationCenter(void)
notificationCenter->observerTable = WMCreateHashTable(WMIntHashCallbacks);
}
void W_ReleaseNotificationCenter(void)
{
if (notificationCenter) {
if (notificationCenter->nameTable)
WMFreeHashTable(notificationCenter->nameTable);
if (notificationCenter->objectTable)
WMFreeHashTable(notificationCenter->objectTable);
if (notificationCenter->observerTable)
WMFreeHashTable(notificationCenter->observerTable);
wfree(notificationCenter);
notificationCenter = NULL;
}
}
void
WMAddNotificationObserver(WMNotificationObserverAction * observerAction,
void *observer, const char *name, void *object)

View File

@@ -48,6 +48,21 @@ void WMInitializeApplication(const char *applicationName, int *argc, char **argv
W_InitNotificationCenter();
}
void WMReleaseApplication(void) {
int i;
W_ReleaseNotificationCenter();
if (WMApplication.applicationName)
wfree(WMApplication.applicationName);
for (i = 0; i < WMApplication.argc; i++)
wfree(WMApplication.argv[i]);
if (WMApplication.argv)
wfree(WMApplication.argv);
}
void WMSetResourcePath(const char *path)
{
if (WMApplication.resourcePath)