예제 #1
0
파일: framectrl.c 프로젝트: add0/LCUI
/** 销毁帧数控制相关资源 */
void FrameControl_Destroy( FrameCtrlCtx ctx )
{
	LCUIMutex_Unlock( &ctx->mutex );
	LCUICond_Destroy( &ctx->wait_continue );
	LCUICond_Destroy( &ctx->wait_pause );
	LCUIMutex_Destroy( &ctx->mutex );
	free( ctx );
}
예제 #2
0
파일: main.c 프로젝트: WhatDream/LCUI
/* 销毁程序占用的资源 */
static void LCUIApp_Destroy(void)
{
	if( LinkedList_GetTotal(&MainApp.loop_list) > 0 ) {
		/* 等待其它线程上的主循环都完全退出 */
		LCUICond_Wait( &MainApp.loop_list_empty );
	}
	/* 开始清理 */
	LCUICond_Destroy( &MainApp.loop_list_empty );
	LCUICond_Destroy( &MainApp.loop_cond );
	LCUIMutex_Destroy( &MainApp.loop_mutex );
	LCUIMutex_Destroy( &MainApp.loop_changed );
	LCUIMutex_Destroy( &MainApp.task_run_mutex );
	LCUIMutex_Destroy( &MainApp.task_list_mutex );
	LinkedList_Destroy( &MainApp.loop_list );
}
예제 #3
0
void FrameControl_Destroy( FrameControl ctx )
{
	LCUIMutex_Unlock( &ctx->mutex );
	LCUICond_Destroy( &ctx->cond );
	LCUIMutex_Destroy( &ctx->mutex );
	free( ctx );
}
예제 #4
0
파일: main.c 프로젝트: WhatDream/LCUI
/** 停用事件模块并进行清理 */
static void LCUI_ExitEvent(void)
{
	System.event.is_running = FALSE;
	LCUICond_Broadcast( &System.event.cond );
	LCUIThread_Join( System.event.tid, NULL );
	LCUICond_Destroy( &System.event.cond );
	LCUIEventBox_Destroy( System.event.box );
	System.event.box = NULL;
}
예제 #5
0
파일: test_thread.c 프로젝트: lc-soft/LCUI
static void TestWorker_Destroy( TestWorker worker )
{
	LCUIMutex_Lock( &worker->mutex );
	worker->active = FALSE;
	LCUICond_Signal( &worker->cond );
	LCUIMutex_Unlock( &worker->mutex );
	LCUIThread_Join( worker->thread, NULL );
	LCUIMutex_Destroy( &worker->mutex );
	LCUICond_Destroy( &worker->cond );
}
예제 #6
0
파일: worker.c 프로젝트: spacefan/LCUI
void LCUIWorker_Destroy( LCUI_Worker worker )
{
	if( worker->thread != 0 ) {
		LOG( "[worker] worker %u is stopping...\n", worker->thread );
		LCUIMutex_Lock( &worker->mutex );
		worker->active = FALSE;
		LCUICond_Signal( &worker->cond );
		LCUIMutex_Unlock( &worker->mutex );
		LCUIThread_Join( worker->thread, NULL );
		LOG( "[worker] worker %u has stopped\n", worker->thread );
		worker->thread = 0;
	}
	LCUIMutex_Destroy( &worker->mutex );
	LCUICond_Destroy( &worker->cond );
	LinkedList_Clear( &worker->tasks, OnDeleteTask );
	free( worker );
}
예제 #7
0
파일: steptimer.c 프로젝트: spacefan/LCUI
void StepTimer_Destroy( StepTimer timer )
{
	LCUICond_Destroy( &timer->cond );
	LCUIMutex_Destroy( &timer->mutex );
	free( timer );
}