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 */