Esempio n. 1
0
File: gevent.c Progetto: bigzed/uGFX
void geventDetachSource(GListener *pl, GSourceHandle gsh) {
	if (pl) {
		gfxMutexEnter(&geventMutex);
		deleteAssignments(pl, gsh);
		if (!gsh)
			doExitEvent(pl);
		gfxMutexExit(&geventMutex);
	}
}
Esempio n. 2
0
void geventDetachSource(GListener *pl, GSourceHandle gsh) {
	if (pl) {
		chMtxLock(&geventMutex);
		deleteAssignments(pl, gsh);
		if (!gsh && chSemGetCounterI(&pl->waitqueue) < 0) {
			chBSemWait(&pl->eventlock);				// Obtain the buffer lock
			pl->event.type = GEVENT_EXIT;			// Set up the EXIT event
			chSemSignal(&pl->waitqueue);			// Wake up the listener
			chBSemSignal(&pl->eventlock);			// Release the buffer lock
		}
		chMtxUnlock();
	}
}
Esempio n. 3
0
void geventDetachSource(GListener *pl, GSourceHandle gsh) {
	if (pl) {
		gfxMutexEnter(&geventMutex);
		deleteAssignments(pl, gsh);
		if (!gsh && gfxSemCounter(&pl->waitqueue) < 0) {
			gfxSemWait(&pl->eventlock, TIME_INFINITE);		// Obtain the buffer lock
			pl->event.type = GEVENT_EXIT;					// Set up the EXIT event
			gfxSemSignal(&pl->waitqueue);					// Wake up the listener
			gfxSemSignal(&pl->eventlock);					// Release the buffer lock
		}
		gfxMutexExit(&geventMutex);
	}
}
Esempio n. 4
0
void geventDetachSourceListeners(GSourceHandle gsh) {
	chMtxLock(&geventMutex);
	deleteAssignments(0, gsh);
	chMtxUnlock();
}
Esempio n. 5
0
void geventDetachSourceListeners(GSourceHandle gsh) {
	gfxMutexEnter(&geventMutex);
	deleteAssignments(0, gsh);
	gfxMutexExit(&geventMutex);
}