Ejemplo n.º 1
0
void AnimePlayer::run() {
    vector<IImageProvider*>::iterator i;
    IImageProvider* provider;
    ISurface* surface;

    if (anime != NULL) {
        while (running) {
            i = anime->begin();
            while (i != anime->end()) {
                provider = *i;
                surface = prepareSurface(provider);
                if (win != NULL) {
                    win->renderFrom(surface);
                }
                delete surface;
                surface = NULL;
                ::usleep(dur);
                ++i;
                if (!running) {
                    unlockConditionSatisfied();
                    return;
                }
            }
        }
    }
    unlockConditionSatisfied();
}
Ejemplo n.º 2
0
	void NominalEventMonitor::stopMonitor() {
		stopped = true;
		if (running) {
			running = false;
			if (isInfinity(expectedSleepTime) || paused) {
				unlockConditionSatisfied();
			} else {
				wakeUp();
			}
		}
	}
Ejemplo n.º 3
0
	NominalEventMonitor::~NominalEventMonitor() {
		deleting = true;
		running = false;
		stopped = true;
		wakeUp();
		unlockConditionSatisfied();

		lock();
		this->player = NULL;
		this->executionObject = NULL;
		unlock();
	}
Ejemplo n.º 4
0
	void NominalEventMonitor::stopMonitor() {
		stopped = true;

		if (timeBaseProvider != NULL) {
			timeBaseProvider->removeTimeListener(timeBaseId, this);
			timeBaseProvider->removeIdListener(this);
		}

		if (running) {
			running = false;
			if (isInfinity(expectedSleepTime) || paused) {
				unlockConditionSatisfied();
			} else {
				wakeUp();
			}
		}
	}
Ejemplo n.º 5
0
	Thread::~Thread() {
		wakeUp();
		pthread_cond_signal(&threadFlagConditionVariable);
		pthread_cond_destroy(&threadFlagConditionVariable);

		unlockConditionSatisfied();
		pthread_cond_signal(&threadFlagCVLockUntilSignal);
		pthread_cond_destroy(&threadFlagCVLockUntilSignal);

		pthread_mutex_unlock(&threadMutex);
		pthread_mutex_destroy(&threadMutex);

		pthread_mutex_unlock(&threadFlagMutex);
		pthread_mutex_destroy(&threadFlagMutex);

		pthread_mutex_unlock(&threadFlagMutexLockUntilSignal);
		pthread_mutex_destroy(&threadFlagMutexLockUntilSignal);

		pthread_attr_destroy(&tattr);
	}
Ejemplo n.º 6
0
	void NominalEventMonitor::resumeMonitor() {
		if (!isInfinity(expectedSleepTime) && paused) {
			paused = false;
			unlockConditionSatisfied();
		}
	}