/* Reset the driver using the new global variable settings. If the driver has not been initialized, it will be now. */ static BOOL _mm_reset(CHAR *cmdline) { BOOL wasplaying = 0; if(!initialized) return _mm_init(cmdline); if (isplaying) { wasplaying = 1; md_driver->PlayStop(); } if((!md_driver->Reset)||(md_device != olddevice)) { /* md_driver->Reset was NULL, or md_device was changed, so do a full reset of the driver. */ md_driver->Exit(); if(_mm_init(cmdline)) { MikMod_Exit_internal(); if(_mm_errno) if(_mm_errorhandler) _mm_errorhandler(); return 1; } } else { if(md_driver->Reset()) { MikMod_Exit_internal(); if(_mm_errno) if(_mm_errorhandler) _mm_errorhandler(); return 1; } } if (wasplaying) md_driver->PlayStart(); return 0; }
MIKMODAPI BOOL MikMod_Init(CHAR *cmdline) { BOOL result; MUTEX_LOCK(vars); MUTEX_LOCK(lists); result=_mm_init(cmdline); MUTEX_UNLOCK(lists); MUTEX_UNLOCK(vars); return result; }
/* * @brief memory heap initialization entry * @param none * @return status code */ int32 _mm_heap_init(void) { mmsize_t heap_size = 0; if (__heap_start == NULL || __heap_end == NULL || __heap_end < __heap_start) { lldbg("%s - failed.\n", __func__); return OS_EFAIL; } heap_size = (mmsize_t) (__heap_end - __heap_start); lldbg("%s - 0x%08p ~ 0x%08p (%dKB)\n", __func__, __heap_start, __heap_end, heap_size / 1024); memset(__heap_start, 0, heap_size); return _mm_init(__heap_start, heap_size); }