fix dumpsys Layer name when using multiple displays

Bug: 7288401
Change-Id: I14beeef58fac5270cef3b611e18c163060efe6c3
This commit is contained in:
Mathias Agopian 2012-10-04 15:58:54 -07:00 committed by Android (Google) Code Review
parent 1b3aeb4844
commit cb55857bbd
4 changed files with 16 additions and 5 deletions

View File

@ -901,14 +901,16 @@ HWComposer::LayerListIterator HWComposer::end(int32_t id) {
return getLayerIterator(id, numLayers); return getLayerIterator(id, numLayers);
} }
void HWComposer::dump(String8& result, char* buffer, size_t SIZE, void HWComposer::dump(String8& result, char* buffer, size_t SIZE) const {
const Vector< sp<LayerBase> >& visibleLayersSortedByZ) const {
if (mHwc) { if (mHwc) {
result.appendFormat("Hardware Composer state (version %8x):\n", hwcApiVersion(mHwc)); result.appendFormat("Hardware Composer state (version %8x):\n", hwcApiVersion(mHwc));
result.appendFormat(" mDebugForceFakeVSync=%d\n", mDebugForceFakeVSync); result.appendFormat(" mDebugForceFakeVSync=%d\n", mDebugForceFakeVSync);
for (size_t i=0 ; i<mNumDisplays ; i++) { for (size_t i=0 ; i<mNumDisplays ; i++) {
const DisplayData& disp(mDisplayData[i]); const DisplayData& disp(mDisplayData[i]);
const Vector< sp<LayerBase> >& visibleLayersSortedByZ =
mFlinger->getLayerSortedByZForHwcDisplay(i);
if (disp.connected) { if (disp.connected) {
result.appendFormat( result.appendFormat(
" Display[%d] : %ux%u, xdpi=%f, ydpi=%f, refresh=%lld\n", " Display[%d] : %ux%u, xdpi=%f, ydpi=%f, refresh=%lld\n",
@ -928,6 +930,7 @@ void HWComposer::dump(String8& result, char* buffer, size_t SIZE,
const hwc_layer_1_t&l = disp.list->hwLayers[i]; const hwc_layer_1_t&l = disp.list->hwLayers[i];
int32_t format = -1; int32_t format = -1;
String8 name("unknown"); String8 name("unknown");
if (i < visibleLayersSortedByZ.size()) { if (i < visibleLayersSortedByZ.size()) {
const sp<LayerBase>& layer(visibleLayersSortedByZ[i]); const sp<LayerBase>& layer(visibleLayersSortedByZ[i]);
if (layer->getLayer() != NULL) { if (layer->getLayer() != NULL) {

View File

@ -258,8 +258,7 @@ public:
friend class VSyncThread; friend class VSyncThread;
// for debugging ---------------------------------------------------------- // for debugging ----------------------------------------------------------
void dump(String8& out, char* scratch, size_t SIZE, void dump(String8& out, char* scratch, size_t SIZE) const;
const Vector< sp<LayerBase> >& visibleLayersSortedByZ) const;
private: private:
void loadHwcModule(); void loadHwcModule();

View File

@ -2333,7 +2333,7 @@ void SurfaceFlinger::dumpAllLocked(
hwc.initCheck()==NO_ERROR ? "present" : "not present", hwc.initCheck()==NO_ERROR ? "present" : "not present",
(mDebugDisableHWC || mDebugRegion) ? "disabled" : "enabled"); (mDebugDisableHWC || mDebugRegion) ? "disabled" : "enabled");
result.append(buffer); result.append(buffer);
hwc.dump(result, buffer, SIZE, hw->getVisibleLayersSortedByZ()); hwc.dump(result, buffer, SIZE);
/* /*
* Dump gralloc state * Dump gralloc state
@ -2342,6 +2342,11 @@ void SurfaceFlinger::dumpAllLocked(
alloc.dump(result); alloc.dump(result);
} }
const Vector< sp<LayerBase> >&
SurfaceFlinger::getLayerSortedByZForHwcDisplay(int disp) {
return getDisplayDevice( getBuiltInDisplay(disp) )->getVisibleLayersSortedByZ();
}
bool SurfaceFlinger::startDdmConnection() bool SurfaceFlinger::startDdmConnection()
{ {
void* libddmconnection_dso = void* libddmconnection_dso =

View File

@ -130,6 +130,10 @@ public:
// TODO: this should be made accessible only to MessageQueue // TODO: this should be made accessible only to MessageQueue
void onMessageReceived(int32_t what); void onMessageReceived(int32_t what);
// for debugging only
// TODO: this should be made accessible only to HWComposer
const Vector< sp<LayerBase> >& getLayerSortedByZForHwcDisplay(int disp);
private: private:
friend class Client; friend class Client;
friend class DisplayEventConnection; friend class DisplayEventConnection;