BMediaEventLooper: Continue code improvements.

This commit is contained in:
Dario Casalinuovo
2015-08-26 17:22:10 +02:00
parent d9971ae7aa
commit dfe056fd6a
+11 -18
View File
@@ -215,7 +215,6 @@ BMediaEventLooper::ControlLoop()
status_t err;
bigtime_t waitUntil = B_INFINITE_TIMEOUT;
bigtime_t tempLateness = 0;
bool hasRealtime = false;
bool hasEvent = false;
@@ -237,11 +236,11 @@ BMediaEventLooper::ControlLoop()
err = fRealTimeQueue.RemoveFirstEvent(&event);
if (err == B_OK) {
tempLateness -= TimeSource()->RealTime();
if (tempLateness < 0)
tempLateness = 0;
bigtime_t lateness = waitUntil - TimeSource()->RealTime();
if (lateness < 0)
lateness = 0;
DispatchEvent(&event, tempLateness, hasRealtime);
DispatchEvent(&event, lateness, hasRealtime);
}
} else if (err != B_OK)
return;
@@ -255,29 +254,23 @@ BMediaEventLooper::ControlLoop()
if (hasEvent) {
waitUntil = TimeSource()->RealTimeFor(
fEventQueue.FirstEvent()->event_time,
fEventQueue.FirstEventTime(),
fEventLatency + fSchedulingLatency);
} else if (!hasRealtime) {
waitUntil = B_INFINITE_TIMEOUT;
continue;
}
if (hasEvent && hasRealtime) {
if (fRealTimeQueue.FirstEventTime()
- fSchedulingLatency <= waitUntil) {
if (hasRealtime) {
bigtime_t realtimeWait = fRealTimeQueue.FirstEventTime()
- fSchedulingLatency;
if (!hasEvent || realtimeWait <= waitUntil) {
waitUntil = realtimeWait;
hasEvent = false;
} else
hasRealtime = false;
}
if (hasRealtime) {
waitUntil = fRealTimeQueue.FirstEventTime()
- fSchedulingLatency;
}
tempLateness = waitUntil;
if (waitUntil < TimeSource()->RealTime())
waitUntil = 0;
}
}