示例#1
0
文件: mdriver.c 项目: sypherce/dslua
/* 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;
}
示例#2
0
文件: mdriver.c 项目: sypherce/dslua
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;
}
示例#3
0
文件: sys_mm.c 项目: LeafGrass/ousia
/*
 * @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);
}