BMediaEventLooper: Continue code improvements.
This commit is contained in:
@@ -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;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user