|
@@ -510,27 +510,51 @@ void Bildschirm3D::tick(double tickval)
|
|
|
|
|
|
void Bildschirm3D::doMausEreignis(MausEreignis& me)
|
|
|
{
|
|
|
+ std::unique_lock<std::mutex> lk(mutex);
|
|
|
+ waitingUserInput++;
|
|
|
+ lk.unlock();
|
|
|
lock();
|
|
|
__super::doMausEreignis(me);
|
|
|
for (int i = kameras->getEintragAnzahl() - 1; i >= 0; i--)
|
|
|
kameras->z(i)->doMausEreignis(me);
|
|
|
unlock();
|
|
|
+ lk.lock();
|
|
|
+ waitingUserInput--;
|
|
|
+ if (waitingUserInput == 0)
|
|
|
+ {
|
|
|
+ lk.unlock();
|
|
|
+ waiting.notify_all();
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
void Bildschirm3D::doTastaturEreignis(
|
|
|
TastaturEreignis& te)
|
|
|
{
|
|
|
+ std::unique_lock<std::mutex> lk(mutex);
|
|
|
+ waitingUserInput++;
|
|
|
+ lk.unlock();
|
|
|
lock();
|
|
|
__super::doTastaturEreignis(te);
|
|
|
for (int i = kameras->getEintragAnzahl() - 1; i >= 0; i--)
|
|
|
kameras->z(i)->doTastaturEreignis(te);
|
|
|
unlock();
|
|
|
+ lk.lock();
|
|
|
+ waitingUserInput--;
|
|
|
+ if (waitingUserInput == 0)
|
|
|
+ {
|
|
|
+ lk.unlock();
|
|
|
+ waiting.notify_all();
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
void Bildschirm3D::render()
|
|
|
{
|
|
|
if (!rend && !rend3D && testRend) return;
|
|
|
+ std::unique_lock<std::mutex> lk(mutex);
|
|
|
+ if (waitingUserInput > 0)
|
|
|
+ waiting.wait(lk);
|
|
|
rendering = 1;
|
|
|
+ lk.unlock();
|
|
|
lock();
|
|
|
renderZeit->messungStart();
|
|
|
|