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; status_t err;
bigtime_t waitUntil = B_INFINITE_TIMEOUT; bigtime_t waitUntil = B_INFINITE_TIMEOUT;
bigtime_t tempLateness = 0;
bool hasRealtime = false; bool hasRealtime = false;
bool hasEvent = false; bool hasEvent = false;
@@ -237,11 +236,11 @@ BMediaEventLooper::ControlLoop()
err = fRealTimeQueue.RemoveFirstEvent(&event); err = fRealTimeQueue.RemoveFirstEvent(&event);
if (err == B_OK) { if (err == B_OK) {
tempLateness -= TimeSource()->RealTime(); bigtime_t lateness = waitUntil - TimeSource()->RealTime();
if (tempLateness < 0) if (lateness < 0)
tempLateness = 0; lateness = 0;
DispatchEvent(&event, tempLateness, hasRealtime); DispatchEvent(&event, lateness, hasRealtime);
} }
} else if (err != B_OK) } else if (err != B_OK)
return; return;
@@ -255,29 +254,23 @@ BMediaEventLooper::ControlLoop()
if (hasEvent) { if (hasEvent) {
waitUntil = TimeSource()->RealTimeFor( waitUntil = TimeSource()->RealTimeFor(
fEventQueue.FirstEvent()->event_time, fEventQueue.FirstEventTime(),
fEventLatency + fSchedulingLatency); fEventLatency + fSchedulingLatency);
} else if (!hasRealtime) { } else if (!hasRealtime) {
waitUntil = B_INFINITE_TIMEOUT; waitUntil = B_INFINITE_TIMEOUT;
continue; continue;
} }
if (hasEvent && hasRealtime) { if (hasRealtime) {
if (fRealTimeQueue.FirstEventTime() bigtime_t realtimeWait = fRealTimeQueue.FirstEventTime()
- fSchedulingLatency <= waitUntil) { - fSchedulingLatency;
if (!hasEvent || realtimeWait <= waitUntil) {
waitUntil = realtimeWait;
hasEvent = false; hasEvent = false;
} else } else
hasRealtime = false; hasRealtime = false;
} }
if (hasRealtime) {
waitUntil = fRealTimeQueue.FirstEventTime()
- fSchedulingLatency;
}
tempLateness = waitUntil;
if (waitUntil < TimeSource()->RealTime())
waitUntil = 0;
} }
} }