diff options
Diffstat (limited to 'src/gfx.c')
-rw-r--r-- | src/gfx.c | 58 |
1 files changed, 53 insertions, 5 deletions
@@ -15,47 +15,57 @@ #include "gfx.h" -void DEPRECATED("Use gfxInit() instead") gdispInit() { gfxInit(); } +static bool_t initDone = FALSE; /* These init functions are defined by each module but not published */ extern void _gosInit(void); +extern void _gosDeinit(void); #if GFX_USE_GDISP extern void _gdispInit(void); + extern void _gdispDeinit(void); #endif #if GFX_USE_GWIN extern void _gwinInit(void); + extern void _gwinDeinit(void); #endif #if GFX_USE_GEVENT extern void _geventInit(void); + extern void _geventDeinit(void); #endif #if GFX_USE_GTIMER extern void _gtimerInit(void); + extern void _gtimerDeinit(void); #endif #if GFX_USE_GINPUT extern void _ginputInit(void); + extern void _ginputDeinit(void); #endif #if GFX_USE_GADC extern void _gadcInit(void); + extern void _gadcDeinit(void); #endif #if GFX_USE_GAUDIN extern void _gaudinInit(void); + extern void _gaudinDeinit(void); #endif #if GFX_USE_GAUDOUT extern void _gaudoutInit(void); + extern void _gaudoutDeinit(void); #endif #if GFX_USE_GMISC extern void _gmiscInit(void); + extern void _gmiscDeinit(void); #endif -void gfxInit(void) { - static bool_t initDone = FALSE; - +void gfxInit(void) +{ /* Ensure we only initialise once */ if (initDone) return; initDone = TRUE; - /* These must be initialised in the order of their dependancies */ + // These must be initialised in the order of their dependancies + _gosInit(); #if GFX_USE_GMISC _gmiscInit(); @@ -85,3 +95,41 @@ void gfxInit(void) { _gaudoutInit(); #endif } + +void gfxDeinit(void) +{ + if (!initDone) + return; + initDone = FALSE; + + // We deinitialise the opposite way as we initialised + #if GFX_USE_GAUDOUT + _gaudoutDeinit(); + #endif + #if GFX_USE_GAUDIN + _gaoudinDeinit(); + #endif + #if GFX_USE_GADC + _gadcDeinit(); + #endif + #if GFX_USE_GINPUT + _ginputDeinit(); + #endif + #if GFX_USE_GWIN + _gwinDeinit(); + #endif + #if GFX_USE_GDISP + _gdispDeinit(); + #endif + #if GFX_USE_GTIMER + _gtimerDeinit(); + #endif + #if GFX_USE_GEVENT + _geventDeinit(); + #endif + #if GFX_USE_GMISC + _gmiscInit(); + #endif + _gosDeinit(); +} + |