示例#1
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 );
}
示例#2
0
文件: LCUI_Graph.c 项目: fshunj/LCUI
LCUI_API void Graph_Free( LCUI_Graph *pic )
{
	LCUI_Graph *p;

	if( pic && pic->quote ) {
		pic->src = NULL; 
		pic->quote = FALSE;
		return;
	}
	p = Graph_GetQuote( pic );
	if( !Graph_IsValid(p)) {
		return;
	}
	LCUIMutex_Lock( &p->mutex );
	free( p->rgba[0] );
	free( p->rgba[1] );
	free( p->rgba[2] );
	if( p->color_type == COLOR_TYPE_RGBA ) {
		free( p->rgba[3] );
	}
	free( p->rgba );
	p->rgba = NULL;
	p->w = 0;
	p->h = 0;
	LCUIMutex_Unlock( &p->mutex );
	LCUIMutex_Destroy( &pic->mutex );
}
示例#3
0
void FrameControl_Destroy( FrameControl ctx )
{
	LCUIMutex_Unlock( &ctx->mutex );
	LCUICond_Destroy( &ctx->cond );
	LCUIMutex_Destroy( &ctx->mutex );
	free( ctx );
}
示例#4
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 );
}
示例#5
0
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
文件: keyboard.c 项目: aem3372/LCUI
/** 停用键盘输入模块 */
void LCUIModule_Keyboard_End( void )
{
	LinkedList_Destroy( &key_state_record );
	LCUIMutex_Destroy( &record_mutex );
}
示例#8
0
文件: keyboard.c 项目: lc-soft/LCUI
void LCUI_FreeKeyboard(void)
{
	RBTree_Destroy(&self.state_tree);
	LCUIMutex_Destroy(&self.mutex);
}
示例#9
0
文件: keyboard.c 项目: oyjGit/LCUI
/** 停用键盘输入模块 */
int LCUI_ExitKeyboard( void )
{
	LinkedList_Destroy( &key_state_record );
	LCUIMutex_Destroy( &record_mutex );
	return 0;
}
示例#10
0
文件: steptimer.c 项目: spacefan/LCUI
void StepTimer_Destroy( StepTimer timer )
{
	LCUICond_Destroy( &timer->cond );
	LCUIMutex_Destroy( &timer->mutex );
	free( timer );
}