Merge "CCodec: Retain old stop()/release() behavior on HIDL HALs" into main
diff --git a/media/codec2/sfplugin/CCodec.cpp b/media/codec2/sfplugin/CCodec.cpp
index 20b6d7f..a897fa0 100644
--- a/media/codec2/sfplugin/CCodec.cpp
+++ b/media/codec2/sfplugin/CCodec.cpp
@@ -2229,9 +2229,15 @@
// See also b/300350761.
//
// The workaround is no longer needed with fetchGraphicBlock & C2Fence changes.
- // so we are reverting back to the logical sequence of the operations.
+ // so we are reverting back to the logical sequence of the operations when
+ // AIDL HALs are selected.
+ // When the HIDL HALs are selected, we retained workaround(the reversed
+ // order) as default in order to keep legacy behavior.
+ bool stopHalBeforeSurface =
+ Codec2Client::IsAidlSelected() ||
+ property_get_bool("debug.codec2.stop_hal_before_surface", false);
status_t err = C2_OK;
- if (android::media::codec::provider_->stop_hal_before_surface()) {
+ if (stopHalBeforeSurface && android::media::codec::provider_->stop_hal_before_surface()) {
err = comp->stop();
mChannel->stopUseOutputSurface(pushBlankBuffer);
} else {
@@ -2334,8 +2340,14 @@
// See also b/300350761.
//
// The workaround is no longer needed with fetchGraphicBlock & C2Fence changes.
- // so we are reverting back to the logical sequence of the operations.
- if (android::media::codec::provider_->stop_hal_before_surface()) {
+ // so we are reverting back to the logical sequence of the operations when
+ // AIDL HALs are selected.
+ // When the HIDL HALs are selected, we retained workaround(the reversed
+ // order) as default in order to keep legacy behavior.
+ bool stopHalBeforeSurface =
+ Codec2Client::IsAidlSelected() ||
+ property_get_bool("debug.codec2.stop_hal_before_surface", false);
+ if (stopHalBeforeSurface && android::media::codec::provider_->stop_hal_before_surface()) {
comp->release();
mChannel->stopUseOutputSurface(pushBlankBuffer);
} else {