Loading services/surfaceflinger/DisplayHardware/HWComposer.cpp +12 −3 Original line number Diff line number Diff line Loading @@ -865,9 +865,18 @@ void HWComposer::dump(String8& result, char* buffer, size_t SIZE, result.appendFormat(" mDebugForceFakeVSync=%d\n", mDebugForceFakeVSync); for (size_t i=0 ; i<mNumDisplays ; i++) { const DisplayData& disp(mDisplayData[i]); if (disp.list) { result.appendFormat(" id=%d, numHwLayers=%u, flags=%08x\n", i, disp.list->numHwLayers, disp.list->flags); if (disp.connected) { result.appendFormat( " Display[%d] : %ux%u, xdpi=%f, ydpi=%f, refresh=%lld\n", i, disp.width, disp.height, disp.xdpi, disp.ydpi, disp.refresh); } if (disp.list && disp.connected) { result.appendFormat( " numHwLayers=%u, flags=%08x\n", disp.list->numHwLayers, disp.list->flags); result.append( " type | handle | hints | flags | tr | blend | format | source crop | frame name \n" "------------+----------+----------+----------+----+-------+----------+---------------------------+--------------------------------\n"); Loading services/surfaceflinger/EventThread.cpp +19 −12 Original line number Diff line number Diff line Loading @@ -125,22 +125,24 @@ void EventThread::onHotplugReceived(int type, bool connected) { } bool EventThread::threadLoop() { DisplayEventReceiver::Event vsync; DisplayEventReceiver::Event event; Vector< sp<EventThread::Connection> > signalConnections; signalConnections = waitForEvent(&vsync); signalConnections = waitForEvent(&event); // dispatch events to listeners... const size_t count = signalConnections.size(); for (size_t i=0 ; i<count ; i++) { const sp<Connection>& conn(signalConnections[i]); // now see if we still need to report this VSYNC event status_t err = conn->postEvent(vsync); // now see if we still need to report this event status_t err = conn->postEvent(event); if (err == -EAGAIN || err == -EWOULDBLOCK) { // The destination doesn't accept events anymore, it's probably // full. For now, we just drop the events on the floor. // Note that some events cannot be dropped and would have to be // re-sent later. Right-now we don't have the ability to do // this, but it doesn't matter for VSYNC. // FIXME: Note that some events cannot be dropped and would have // to be re-sent later. // Right-now we don't have the ability to do this. ALOGW("EventThread: dropping event (%08x) for connection %p", event.header.type, conn.get()); } else if (err < 0) { // handle any other error on the pipe as fatal. the only // reasonable thing to do is to clean-up this connection. Loading Loading @@ -185,6 +187,7 @@ Vector< sp<EventThread::Connection> > EventThread::waitForEvent( for (size_t i=0 ; i<count ; i++) { sp<Connection> connection(mDisplayEventConnections[i].promote()); if (connection != NULL) { bool added = false; if (connection->count >= 0) { // we need vsync events because at least // one connection is waiting for it Loading @@ -196,18 +199,22 @@ Vector< sp<EventThread::Connection> > EventThread::waitForEvent( // fired this time around connection->count = -1; signalConnections.add(connection); added = true; } else if (connection->count == 1 || (vsyncCount % connection->count) == 0) { // continuous event, and time to report it signalConnections.add(connection); added = true; } } } } else if (eventPending) { if (eventPending && !timestamp && !added) { // we don't have a vsync event to process // (timestamp==0), but we have some pending // messages. signalConnections.add(connection); } } } else { // we couldn't promote this reference, the connection has // died, so clean-up! Loading Loading
services/surfaceflinger/DisplayHardware/HWComposer.cpp +12 −3 Original line number Diff line number Diff line Loading @@ -865,9 +865,18 @@ void HWComposer::dump(String8& result, char* buffer, size_t SIZE, result.appendFormat(" mDebugForceFakeVSync=%d\n", mDebugForceFakeVSync); for (size_t i=0 ; i<mNumDisplays ; i++) { const DisplayData& disp(mDisplayData[i]); if (disp.list) { result.appendFormat(" id=%d, numHwLayers=%u, flags=%08x\n", i, disp.list->numHwLayers, disp.list->flags); if (disp.connected) { result.appendFormat( " Display[%d] : %ux%u, xdpi=%f, ydpi=%f, refresh=%lld\n", i, disp.width, disp.height, disp.xdpi, disp.ydpi, disp.refresh); } if (disp.list && disp.connected) { result.appendFormat( " numHwLayers=%u, flags=%08x\n", disp.list->numHwLayers, disp.list->flags); result.append( " type | handle | hints | flags | tr | blend | format | source crop | frame name \n" "------------+----------+----------+----------+----+-------+----------+---------------------------+--------------------------------\n"); Loading
services/surfaceflinger/EventThread.cpp +19 −12 Original line number Diff line number Diff line Loading @@ -125,22 +125,24 @@ void EventThread::onHotplugReceived(int type, bool connected) { } bool EventThread::threadLoop() { DisplayEventReceiver::Event vsync; DisplayEventReceiver::Event event; Vector< sp<EventThread::Connection> > signalConnections; signalConnections = waitForEvent(&vsync); signalConnections = waitForEvent(&event); // dispatch events to listeners... const size_t count = signalConnections.size(); for (size_t i=0 ; i<count ; i++) { const sp<Connection>& conn(signalConnections[i]); // now see if we still need to report this VSYNC event status_t err = conn->postEvent(vsync); // now see if we still need to report this event status_t err = conn->postEvent(event); if (err == -EAGAIN || err == -EWOULDBLOCK) { // The destination doesn't accept events anymore, it's probably // full. For now, we just drop the events on the floor. // Note that some events cannot be dropped and would have to be // re-sent later. Right-now we don't have the ability to do // this, but it doesn't matter for VSYNC. // FIXME: Note that some events cannot be dropped and would have // to be re-sent later. // Right-now we don't have the ability to do this. ALOGW("EventThread: dropping event (%08x) for connection %p", event.header.type, conn.get()); } else if (err < 0) { // handle any other error on the pipe as fatal. the only // reasonable thing to do is to clean-up this connection. Loading Loading @@ -185,6 +187,7 @@ Vector< sp<EventThread::Connection> > EventThread::waitForEvent( for (size_t i=0 ; i<count ; i++) { sp<Connection> connection(mDisplayEventConnections[i].promote()); if (connection != NULL) { bool added = false; if (connection->count >= 0) { // we need vsync events because at least // one connection is waiting for it Loading @@ -196,18 +199,22 @@ Vector< sp<EventThread::Connection> > EventThread::waitForEvent( // fired this time around connection->count = -1; signalConnections.add(connection); added = true; } else if (connection->count == 1 || (vsyncCount % connection->count) == 0) { // continuous event, and time to report it signalConnections.add(connection); added = true; } } } } else if (eventPending) { if (eventPending && !timestamp && !added) { // we don't have a vsync event to process // (timestamp==0), but we have some pending // messages. signalConnections.add(connection); } } } else { // we couldn't promote this reference, the connection has // died, so clean-up! Loading