Exemple #1
0
void FrameControl_Pause( FrameControl ctx, LCUI_BOOL need_pause )
{
	if( ctx->state == STATE_RUN && need_pause ) {
		LCUIMutex_Lock( &ctx->mutex );
		ctx->state = STATE_PAUSE;
		LCUICond_Signal( &ctx->cond );
		LCUIMutex_Unlock( &ctx->mutex );
	} else if( ctx->state == STATE_PAUSE && !need_pause ) {
		LCUIMutex_Lock( &ctx->mutex );
		ctx->state = STATE_RUN;
		LCUICond_Signal( &ctx->cond );
		LCUIMutex_Unlock( &ctx->mutex );
	}
}
Exemple #2
0
void StepTimer_Pause( StepTimer timer, LCUI_BOOL need_pause )
{
	if( timer->state == STATE_RUN && need_pause ) {
		LCUIMutex_Lock( &timer->mutex );
		timer->state = STATE_PAUSE;
		LCUICond_Signal( &timer->cond );
		LCUIMutex_Unlock( &timer->mutex );
	} else if( timer->state == STATE_PAUSE && !need_pause ) {
		LCUIMutex_Lock( &timer->mutex );
		timer->state = STATE_RUN;
		LCUICond_Signal( &timer->cond );
		LCUIMutex_Unlock( &timer->mutex );
	}
}
Exemple #3
0
/** 暂停数据帧的更新 */
void FrameControl_Pause( FrameCtrlCtx ctx, LCUI_BOOL need_pause )
{
	if( ctx->state == FRAME_CTRL_STATE_RUN && need_pause ) {
		LCUIMutex_Lock( &ctx->mutex );
		ctx->state = FRAME_CTRL_STATE_PAUSE;
		LCUICond_Signal( &ctx->wait_pause );
		LCUIMutex_Unlock( &ctx->mutex );
	}
	else if( ctx->state == FRAME_CTRL_STATE_PAUSE && !need_pause ){
		LCUIMutex_Lock( &ctx->mutex );
		ctx->state = FRAME_CTRL_STATE_RUN;
		LCUICond_Signal( &ctx->wait_continue );
		LCUIMutex_Unlock( &ctx->mutex );
	}
}
Exemple #4
0
static void TestWorker_Send( TestWorker worker, const char *data )
{
	LCUIMutex_Lock( &worker->mutex );
	strcpy( worker->data, data );
	LCUICond_Signal( &worker->cond );
	LCUIMutex_Unlock( &worker->mutex );
}
Exemple #5
0
void LCUIWorker_PostTask( LCUI_Worker worker, LCUI_Task task )
{
	LCUI_Task newtask;
	newtask = NEW( LCUI_TaskRec, 1 );
	*newtask = *task;
	LCUIMutex_Lock( &worker->mutex );
	LinkedList_Append( &worker->tasks, newtask );
	LCUICond_Signal( &worker->cond );
	LCUIMutex_Unlock( &worker->mutex );
}
Exemple #6
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 );
}
Exemple #7
0
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 );
}