display: Add BufferMirrorMode support for External
- In Buffer mirror mode, the output on the external should be rotated
based on the primary orientation.
- this is used for the side sync feature.
- buffermirrormode has higher precedence over external orientation
- Add binder interface to enable/disable buffermirror mode
Change-Id: Ibea0af9627d69b4d42453adc868b113d82613437
diff --git a/libqservice/IQService.cpp b/libqservice/IQService.cpp
index a3ff150..e45f42e 100644
--- a/libqservice/IQService.cpp
+++ b/libqservice/IQService.cpp
@@ -78,6 +78,13 @@
data.writeInt32(orientation);
remote()->transact(EXTERNAL_ORIENTATION, data, &reply);
}
+
+ virtual void setBufferMirrorMode(uint32_t enable) {
+ Parcel data, reply;
+ data.writeInterfaceToken(IQService::getInterfaceDescriptor());
+ data.writeInt32(enable);
+ remote()->transact(BUFFER_MIRRORMODE, data, &reply);
+ }
};
IMPLEMENT_META_INTERFACE(QService, "android.display.IQService");
@@ -160,6 +167,18 @@
setExtOrientation(orientation);
return NO_ERROR;
} break;
+ case BUFFER_MIRRORMODE: {
+ CHECK_INTERFACE(IQService, data, reply);
+ if(callerUid != AID_SYSTEM) {
+ ALOGE("display.qservice BUFFER_MIRRORMODE access denied: \
+ pid=%d uid=%d process=%s",callerPid,
+ callerUid, callingProcName);
+ return PERMISSION_DENIED;
+ }
+ uint32_t enable = data.readInt32();
+ setBufferMirrorMode(enable);
+ return NO_ERROR;
+ } break;
default:
return BBinder::onTransact(code, data, reply, flags);
}