7d886474734623fd2565ff40215ffe497e10b4cc |
|
15-Jun-2012 |
Mathias Agopian <mathias@google.com> |
SF could get stuck waiting for vsync when turning the screen off When turning the screen off we could have 2 waiters on the vsync condition: The main vsync waiter as well as one in onScreenReleased(). We were only signaling the condition though, so it it would be possible to wake onScreenReleased() without waking the main vsync thread which would then be stuck in .wait(). We fix this by just using broadcast() when receiving a vsync event. We also add a broadcast() to signal when the state of mUseSoftwareVSync changes. This is important particularly for the transition from hardware to software vsync because the main vsync waiter might have observed mUseSoftwareVSync == false and decided to block indefinitely pending a hardware vsync signal that will never arrive. Removed a potentially deadlocking wait for a signal in onScreenReleased(). The function was trying to wait for the last vsync event from the hardware to be delivered to clients but there was no guarantee that another thread would signal it to wake up again afterwards. (As far as I can tell, the only other other thread that might wake it up at this point would be a client application issuing a vsync request.) We don't really need to wait here anyhow. It's enough to set the mUseSoftwareVSync flag, wake up the thread loop and go. If there was a pending vsync timestamp from the hardware, then the thread loop will grab it and use it then start software vsync on the next iteration. Bug: 6672102 Change-Id: I7c6abc23bb021d1dfc94f101bd3ce18e3a81a73e
/frameworks/native/services/surfaceflinger/EventThread.cpp
|
03e407270c7ad76632f982c886d0776bed9e9b4c |
|
27-Apr-2012 |
Mathias Agopian <mathias@google.com> |
set vsync power hint Change-Id: I28c2faf9ff584df3e74392712971cbcf75eb9e98
/frameworks/native/services/surfaceflinger/EventThread.cpp
|
fca660cf730161f823e770ad1693fab441477edd |
|
13-Apr-2012 |
Mathias Agopian <mathias@google.com> |
don't wake-up eventthread every 16ms if there are no vsync requests Bug: 6332534 Change-Id: Idf79ad913770c6180969f6c95a9b125fff580231
/frameworks/native/services/surfaceflinger/EventThread.cpp
|
22ffb117b0c2a906bd04aef9738a52223cdd1dce |
|
11-Apr-2012 |
Mathias Agopian <mathias@google.com> |
make sure to disable VSYNC while screen is off Change-Id: If1894c43b0a39a2851e1280a35ae77bccd6d9abd
/frameworks/native/services/surfaceflinger/EventThread.cpp
|
e2c4f4ec23b735dd2a03f4ea8b08b288a1bb04e8 |
|
11-Apr-2012 |
Mathias Agopian <mathias@google.com> |
Added vsync debugging information in dumpsys log Change-Id: I20ef05a73d89caaf6a70dc9ca25ada6e6a1f6ff9
/frameworks/native/services/surfaceflinger/EventThread.cpp
|
2965b26022f95051f65b09d7eac47cbe923855c9 |
|
09-Apr-2012 |
Mathias Agopian <mathias@google.com> |
VSYNC handling cleanup Change-Id: I1376bf864c4e03c11fb6d1333a8b7cfdda08c9e4
/frameworks/native/services/surfaceflinger/EventThread.cpp
|
d94d3b890ac3d5731bd0397874d32aa4bc74bd61 |
|
09-Apr-2012 |
Mathias Agopian <mathias@google.com> |
avoid turning vsync off/on at each frame always keep vsync active for an extra frame before deciding if it should be turned off. Change-Id: I55b03265b7851b33a595e46a013f2ab55e66c964
/frameworks/native/services/surfaceflinger/EventThread.cpp
|
3eb38cb33e41ce40dd1094bdec850f0fca9f8a53 |
|
04-Apr-2012 |
Mathias Agopian <mathias@google.com> |
SurfaceFlinger now uses the new VSYNC HAL API. If h/w composer doesn't support vsync (version < 0.3) we "fake" it with a timer. Change-Id: I1e3be79f43c9631d1293ad7d6cf52f9bfc42d65b
/frameworks/native/services/surfaceflinger/EventThread.cpp
|
cb9732a951d20cacb7ebe2dab132b5738226b1b6 |
|
04-Apr-2012 |
Mathias Agopian <mathias@google.com> |
refactor / simplify EventThread Change-Id: I3981c6fba93b7b985174b2a7045e24db2c0b4428
/frameworks/native/services/surfaceflinger/EventThread.cpp
|
841cde55549cea7a344a1705b18d57a0c6c8ec45 |
|
02-Mar-2012 |
Mathias Agopian <mathias@google.com> |
add more ATRACE Change-Id: I6cc5759fb0a05427680488fd12ae797e77644f3d
/frameworks/native/services/surfaceflinger/EventThread.cpp
|
3cf199aef6250552555344944c3e3a6e4ab05f92 |
|
01-Feb-2012 |
Mathias Agopian <mathias@google.com> |
fix an issue with vsync event delivery vsync events were sometimes delivered to connected client who didn't request them. this happened if another client requested the delivery and that client was first in the client list. also fix the vsync test which didn't request any events as well as DisplayEventReveiver documentation which was misleading about the necessity to request vsync events. Change-Id: Ie990fda3f337f8f0042745c4b2cde67936c45686
/frameworks/native/services/surfaceflinger/EventThread.cpp
|
8aedd4737d6ce8548d2fd5def65b1e1737283821 |
|
25-Jan-2012 |
Mathias Agopian <mathias@google.com> |
SF now synchronizes to VSYNC Change-Id: Ic5e4f2ea9927ce133eef9499c03161325e9d02c5
/frameworks/native/services/surfaceflinger/EventThread.cpp
|
82d7ab6c7e0cf971e515134ccf072682dd1a2cdb |
|
20-Jan-2012 |
Mathias Agopian <mathias@google.com> |
improve SurfaceFlinger dumpsys It is now possible to say: dumpsys SurfaceFlinger --latency to print latency information about all windows dumpsys SurfaceFlinger --latency window-name to print the latency stats of the specified window for instance: dumpsys SurfaceFlinger --latency SurfaceView The data consists of one line containing global stats, followed by 128 lines of tab separated timestamps in nanosecond. The first line currently contains the refresh period in nanosecond. Each 128 following line contains 3 timestamps, of respectively the app draw time, the vsync timestamp just prior the call to set and the timestamp of the call to set. Change-Id: Ib6b6da1d7e2e6ba49c282bdbc0b56a7dc203343a
/frameworks/native/services/surfaceflinger/EventThread.cpp
|
616c0cdf2c9e9a86e54f727640a6673bd99fda8e |
|
13-Jan-2012 |
Mathias Agopian <mathias@google.com> |
fix a bug with vsync management this bug was introduced recently. we were signaling *all* clients regardless of the vsync rate. Change-Id: I2ae8a6c820a390f602382596ba75e8ed737fb2ef
/frameworks/native/services/surfaceflinger/EventThread.cpp
|
a72d0db29213c407278a1d0257baa60db28c8471 |
|
10-Jan-2012 |
Mathias Agopian <mathias@google.com> |
Fix an issue with VSYNC one-shot VSYNC listeners could miss a VSYNC event if scheduled while in waitForVsync(). Change-Id: I720485784aecfea6cc7a23c77081d7af3c9c71db
/frameworks/native/services/surfaceflinger/EventThread.cpp
|
a19954ab377b46dbcb9cbe8a6ab6d458f2e32bca |
|
04-Jan-2012 |
Steve Block <steveblock@google.com> |
Rename (IF_)LOGI(_IF) to (IF_)ALOGI(_IF) DO NOT MERGE See https://android-git.corp.google.com/g/156801 Bug: 5449033 Change-Id: Ib08fe86d23db91ee153e9f91a99a35c42b9208ea
/frameworks/native/services/surfaceflinger/EventThread.cpp
|
478ae5eb5a0047e1b2988c896cff6363b455ee50 |
|
07-Dec-2011 |
Mathias Agopian <mathias@google.com> |
Improve the VSYNC api a bit. - add the ability to set the vsync delivery rate, when the rate is set to N>1 (ie: receive every N vsync), SF process' is woken up for all of vsync, but clients only see the every N events. - add the concept of one-shot vsync events, with a call-back to request the next one. currently the call-back is a binder IPC. Change-Id: I09f71df0b0ba0d88ed997645e2e2497d553c9a1b
/frameworks/native/services/surfaceflinger/EventThread.cpp
|
23748668d33ac850e64d87e25ac4cc78679c9384 |
|
05-Dec-2011 |
Mathias Agopian <mathias@google.com> |
fix a deadlock when removing a DisplayEventConnection the deadlock would happen when the pipe became invalid and SF trying to remove the connection from its list. we know make sure to process events without holding a lock. Change-Id: I39927ed8824fc7811e16db3c7608a2ebc72d9642
/frameworks/native/services/surfaceflinger/EventThread.cpp
|
d0566bc26fcf6ca396118701fa11900b627f2c09 |
|
18-Nov-2011 |
Mathias Agopian <mathias@google.com> |
Add support for sending VSYNC events to the framework use gui/DisplayEvent to receive the events. Events are dispatched through a unix pipe, so the API is compatible with utils/Looper. see gui/DisplayEvent.h for more info. Bug: 1475048 Change-Id: Ia720f64d1b950328b47b22c6a86042e481d35f09
/frameworks/native/services/surfaceflinger/EventThread.cpp
|