www.pudn.com > uCGUI3.24-MemDev-for-3.90a.rar > GUIDEV_Usage.c
/*! @file GUIDEV_Usage.c * Implementation of memory devices * * @author hiber modified * @author Copyleft (C) 1981-2006, All Rights Givenup * @date 04/18/2006 * @version * * @note * @attention * @warning * @bug * * @todo * @example* @see */ #include #include "GUI_Protected.h" #include "GUIDebug.h" #if GUI_SUPPORT_MEMDEV extern void * _GUI_ALLOC_h2p_Lock(GUI_HMEM hMem); #define GUI_ALLOC_H2P(h) _GUI_ALLOC_h2p_Lock(h) #define GUI_ALLOC_FREE(handle) GUI_ALLOC_Free(handle) #define GUI_ALLOC_LOCK(handle) _GUI_ALLOC_h2p_Lock(handle) #define GUI_ALLOC_UNLOCK(handle) #ifdef GUI_USAGE_H2P #undef GUI_USAGE_H2P #define GUI_USAGE_H2P(h) ((GUI_USAGE*)_GUI_ALLOC_h2p_Lock(h)) #endif #ifdef GUI_MEMDEV_H2P #undef GUI_MEMDEV_H2P #define GUI_MEMDEV_H2P _GUI_ALLOC_h2p_Lock #endif ////////////////////////////////////////////////////////////////////////// //! Selects a usage object into the active memory device. void GUI_USAGE_Select(GUI_USAGE_Handle hUsage) { GUI_MEMDEV * pDev; GUI_LOCK(); pDev = GUI_MEMDEV_H2P(GUI_Context.hDevData); pDev->hUsage = hUsage; GUI_UNLOCK(); } //! Decrements the usage count and deletes the usage object if the counter reaches 0. void GUI_USAGE_DecUseCnt(GUI_USAGE_Handle hUsage) { GUI_USAGE* pThis; GUI_LOCK(); pThis = GUI_USAGE_H2P(hUsage); if (--pThis->UseCnt == 0) { GUI_ALLOC_FREE(hUsage); } GUI_UNLOCK(); } #else void GUIDEV_Usage(void) { /* avoid empty object files */ } #endif /* GUI_SUPPORT_MEMDEV */