overlay: Reset pipes on config failure
There can be frequent failures in pipe config on certain targets
owing to scare SMP blocks. In such cases, reset usage of all pipes;
forcibly configure them next time, even if params haven't changed;
Change-Id: I769513fc3513e292d9d9b7f126735841a7a8f493
diff --git a/liboverlay/overlay.cpp b/liboverlay/overlay.cpp
index 9b91760..a15d0a8 100644
--- a/liboverlay/overlay.cpp
+++ b/liboverlay/overlay.cpp
@@ -143,11 +143,15 @@
ret = true;
PipeBook::setUse((int)dest);
} else {
- PipeBook::resetUse((int)dest);
int dpy = mPipeBook[index].mDisplay;
for(int i = 0; i < PipeBook::NUM_PIPES; i++)
- if (mPipeBook[i].mDisplay == dpy)
+ if (mPipeBook[i].mDisplay == dpy) {
PipeBook::resetAllocation(i);
+ PipeBook::resetUse(i);
+ if(mPipeBook[i].valid()) {
+ mPipeBook[i].mPipe->forceSet();
+ }
+ }
}
return ret;
}
@@ -317,6 +321,9 @@
// Mark as available for this round
PipeBook::resetUse(i);
PipeBook::resetAllocation(i);
+ if(mPipeBook[i].valid()) {
+ mPipeBook[i].mPipe->forceSet();
+ }
}
}
}