⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 glutblocker.cpp

📁 mesa-6.5-minigui源码
💻 CPP
字号:
/*********************************************************** *	Copyright (C) 1997, Be Inc.  Copyright (C) 1999, Jake Hamby. * * This program is freely distributable without licensing fees * and is provided without guarantee or warrantee expressed or * implied. This program is -not- in the public domain. * *  FILE:	glutBlocker.cpp * *	DESCRIPTION:	helper class for GLUT event loop. *		if a window receives an event, wake up the event loop. ***********************************************************//*********************************************************** *	Headers ***********************************************************/#include "glutBlocker.h"/*********************************************************** *	Global variable ***********************************************************/GlutBlocker gBlock;/*********************************************************** *	Member functions ***********************************************************/GlutBlocker::GlutBlocker() {	gSem = create_sem(1, "gSem");	eSem = create_sem(0, "eSem");	events = false;	sleeping = false;}GlutBlocker::~GlutBlocker() {	delete_sem(eSem);	delete_sem(gSem);}void GlutBlocker::WaitEvent() {	acquire_sem(gSem);	if(!events) {			// wait for new event		sleeping = true;		release_sem(gSem);		acquire_sem(eSem);	// next event will release eSem	} else {		release_sem(gSem);	}}void GlutBlocker::WaitEvent(bigtime_t usecs) {	acquire_sem(gSem);	if(!events) {			// wait for new event		sleeping = true;		release_sem(gSem);		acquire_sem_etc(eSem, 1, B_TIMEOUT, usecs);	// wait for next event or timeout	} else {		release_sem(gSem);	}}void GlutBlocker::NewEvent() {	acquire_sem(gSem);	events = true;		// next call to WaitEvent returns immediately	if(sleeping) {		sleeping = false;		release_sem(eSem);	// if event loop is blocking, wake it up	}	release_sem(gSem);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -