summaryrefslogtreecommitdiffstats
path: root/libqservice/IQService.cpp
diff options
context:
space:
mode:
authorJeykumar Sankaran <jsanka@codeaurora.org>2013-02-28 10:45:56 -0800
committerGerrit - the friendly Code Review server <code-review@localhost>2013-03-06 10:29:36 -0800
commit9f59a7685da3f605d6cdaed037f1280a2e9cc6b4 (patch)
tree66bca6252cac442b07567b2a27f0f9eda552b799 /libqservice/IQService.cpp
parentdb770e203fa1e721a661d66e6521bc992db3edb8 (diff)
downloadhardware_qcom_display-9f59a7685da3f605d6cdaed037f1280a2e9cc6b4.tar.gz
hardware_qcom_display-9f59a7685da3f605d6cdaed037f1280a2e9cc6b4.tar.bz2
hardware_qcom_display-9f59a7685da3f605d6cdaed037f1280a2e9cc6b4.zip
display: Add hook for triggering screen update
DSI command mode panels do not need to be refreshed on each vsync. Due to one frame latency in CABL LUT calculation, when CABL is enabled for DSI command mode panels, the LUT doesnt get updated for last frame. Triggering an extra update for DSI command mode panels fixes it. Change-Id: I7a22e338609430746dda4d3081ff199109a95035
Diffstat (limited to 'libqservice/IQService.cpp')
-rw-r--r--libqservice/IQService.cpp27
1 files changed, 24 insertions, 3 deletions
diff --git a/libqservice/IQService.cpp b/libqservice/IQService.cpp
index 7a88bdf4a..6c6f7b65e 100644
--- a/libqservice/IQService.cpp
+++ b/libqservice/IQService.cpp
@@ -63,6 +63,14 @@ public:
data.writeStrongBinder(client->asBinder());
remote()->transact(CONNECT, data, &reply);
}
+
+ virtual status_t screenRefresh() {
+ Parcel data, reply;
+ data.writeInterfaceToken(IQService::getInterfaceDescriptor());
+ remote()->transact(SCREEN_REFRESH, data, &reply);
+ status_t result = reply.readInt32();
+ return result;
+ }
};
IMPLEMENT_META_INTERFACE(QService, "android.display.IQService");
@@ -88,7 +96,8 @@ status_t BnQService::onTransact(
switch(code) {
case SECURING: {
if(!permission) {
- ALOGE("display.qservice SECURING access denied: pid=%d uid=%d process=%s",
+ ALOGE("display.qservice SECURING access denied: \
+ pid=%d uid=%d process=%s",
callerPid, callerUid, callingProcName);
return PERMISSION_DENIED;
}
@@ -99,7 +108,8 @@ status_t BnQService::onTransact(
} break;
case UNSECURING: {
if(!permission) {
- ALOGE("display.qservice UNSECURING access denied: pid=%d uid=%d process=%s",
+ ALOGE("display.qservice UNSECURING access denied: \
+ pid=%d uid=%d process=%s",
callerPid, callerUid, callingProcName);
return PERMISSION_DENIED;
}
@@ -111,7 +121,8 @@ status_t BnQService::onTransact(
case CONNECT: {
CHECK_INTERFACE(IQService, data, reply);
if(callerUid != AID_GRAPHICS) {
- ALOGE("display.qservice CONNECT access denied: pid=%d uid=%d process=%s",
+ ALOGE("display.qservice CONNECT access denied: \
+ pid=%d uid=%d process=%s",
callerPid, callerUid, callingProcName);
return PERMISSION_DENIED;
}
@@ -120,6 +131,16 @@ status_t BnQService::onTransact(
connect(client);
return NO_ERROR;
} break;
+ case SCREEN_REFRESH: {
+ CHECK_INTERFACE(IQService, data, reply);
+ if(callerUid != AID_GRAPHICS) {
+ ALOGE("display.qservice SCREEN_REFRESH access denied: \
+ pid=%d uid=%d process=%s",callerPid,
+ callerUid, callingProcName);
+ return PERMISSION_DENIED;
+ }
+ return screenRefresh();
+ } break;
default:
return BBinder::onTransact(code, data, reply, flags);
}