Merge "fix an issue with vsync event delivery"
This commit is contained in:
committed by
Android (Google) Code Review
commit
dcaf1adcb6
@@ -63,7 +63,9 @@ public:
|
||||
public:
|
||||
/*
|
||||
* DisplayEventReceiver creates and registers an event connection with
|
||||
* SurfaceFlinger. Events start being delivered immediately.
|
||||
* SurfaceFlinger. VSync events are disabled by default. Call setVSyncRate
|
||||
* or requestNextVsync to receive them.
|
||||
* Other events start being delivered immediately.
|
||||
*/
|
||||
DisplayEventReceiver();
|
||||
|
||||
|
||||
@@ -151,9 +151,9 @@ bool EventThread::threadLoop() {
|
||||
mLastVSyncTimestamp = timestamp;
|
||||
|
||||
// now see if we still need to report this VSYNC event
|
||||
bool reportVsync = false;
|
||||
size_t count = mDisplayEventConnections.size();
|
||||
const size_t count = mDisplayEventConnections.size();
|
||||
for (size_t i=0 ; i<count ; i++) {
|
||||
bool reportVsync = false;
|
||||
const ConnectionInfo& info(
|
||||
mDisplayEventConnections.valueAt(i));
|
||||
if (info.count >= 1) {
|
||||
@@ -174,11 +174,7 @@ bool EventThread::threadLoop() {
|
||||
displayEventConnections.add(mDisplayEventConnections.keyAt(i));
|
||||
}
|
||||
}
|
||||
|
||||
if (reportVsync) {
|
||||
break;
|
||||
}
|
||||
} while (true);
|
||||
} while (!displayEventConnections.size());
|
||||
|
||||
// dispatch vsync events to listeners...
|
||||
vsync.header.type = DisplayEventReceiver::DISPLAY_EVENT_VSYNC;
|
||||
|
||||
@@ -55,6 +55,8 @@ int main(int argc, char** argv)
|
||||
loop->addFd(myDisplayEvent.getFd(), 0, ALOOPER_EVENT_INPUT, receiver,
|
||||
&myDisplayEvent);
|
||||
|
||||
myDisplayEvent.setVsyncRate(1);
|
||||
|
||||
do {
|
||||
//printf("about to poll...\n");
|
||||
int32_t ret = loop->pollOnce(-1);
|
||||
|
||||
Reference in New Issue
Block a user