34a1da07 |
1 | |
2 | project frameworks/base/ |
3 | diff --git a/frameworks/base/libs/ui/InputReader.cpp b/frameworks/base/libs/ui/InputReader.cpp |
4 | index 79cb87a..d8cd717 100644 |
5 | --- a/frameworks/base/libs/ui/InputReader.cpp |
6 | +++ b/frameworks/base/libs/ui/InputReader.cpp |
7 | @@ -1668,12 +1668,36 @@ bool TouchInputMapper::configureSurfaceLocked() { |
8 | |
9 | // Configure X and Y factors. |
10 | if (mRawAxes.x.valid && mRawAxes.y.valid) { |
11 | - mLocked.xOrigin = mRawAxes.x.minValue; |
12 | - mLocked.yOrigin = mRawAxes.y.minValue; |
13 | - mLocked.xScale = float(width) / mRawAxes.x.getRange(); |
14 | - mLocked.yScale = float(height) / mRawAxes.y.getRange(); |
15 | - mLocked.xPrecision = 1.0f / mLocked.xScale; |
16 | - mLocked.yPrecision = 1.0f / mLocked.yScale; |
17 | + int a[7], have_pointercal = 0; |
18 | + const char *fname = "/vendor/pointercal"; |
19 | + FILE *f = fopen(fname, "r"); |
20 | + int ret; |
21 | + if (f) { |
22 | + ret = fscanf(f, "%d %d %d %d %d %d %d", |
23 | + &a[0], &a[1], &a[2], &a[3], &a[4], &a[5], &a[6]); |
24 | + if (ret == 7) |
25 | + have_pointercal = 1; |
26 | + else |
27 | + LOGW("Failed to parse %s", fname); |
28 | + fclose(f); |
29 | + } |
30 | + else |
31 | + LOGW("Failed to open %s", fname); |
32 | + |
33 | + if (have_pointercal) { |
34 | + mLocked.xScale = float(a[0]) / float(a[6]); |
35 | + mLocked.yScale = float(a[4]) / float(a[6]); |
36 | + // a[2] / mLocked.xScale / a[6] |
37 | + mLocked.xOrigin = -a[2] / a[0]; |
38 | + mLocked.yOrigin = -a[5] / a[4]; |
39 | + } else { |
40 | + mLocked.xOrigin = mRawAxes.x.minValue; |
41 | + mLocked.yOrigin = mRawAxes.y.minValue; |
42 | + mLocked.xScale = float(width) / mRawAxes.x.getRange(); |
43 | + mLocked.yScale = float(height) / mRawAxes.y.getRange(); |
44 | + } |
45 | + mLocked.xPrecision = fabsf(1.0f / mLocked.xScale); |
46 | + mLocked.yPrecision = fabsf(1.0f / mLocked.yScale); |
47 | |
48 | configureVirtualKeysLocked(); |
49 | } else { |
50 | @@ -1689,7 +1713,7 @@ bool TouchInputMapper::configureSurfaceLocked() { |
51 | // Scale factor for terms that are not oriented in a particular axis. |
52 | // If the pixels are square then xScale == yScale otherwise we fake it |
53 | // by choosing an average. |
54 | - mLocked.geometricScale = avg(mLocked.xScale, mLocked.yScale); |
55 | + mLocked.geometricScale = avg(fabsf(mLocked.xScale), fabsf(mLocked.yScale)); |
56 | |
57 | // Size of diagonal axis. |
58 | float diagonalSize = pythag(width, height); |
59 | |
60 | project hardware/libhardware/ |
61 | diff --git a/hardware/libhardware/modules/gralloc/framebuffer.cpp b/hardware/libhardware/modules/gralloc/framebuffer.cpp |
62 | index fe57a8a..b5465e4 100644 |
63 | --- a/hardware/libhardware/modules/gralloc/framebuffer.cpp |
64 | +++ b/hardware/libhardware/modules/gralloc/framebuffer.cpp |
65 | @@ -109,6 +109,12 @@ static int fb_post(struct framebuffer_device_t* dev, buffer_handle_t buffer) |
66 | } |
67 | m->currentBuffer = buffer; |
68 | |
69 | +#ifndef FBIO_WAITFORVSYNC |
70 | +#define FBIO_WAITFORVSYNC _IOW ('F', 32, unsigned int) |
71 | +#endif |
72 | + int mode = 0; |
73 | + ioctl(m->framebuffer->fd, FBIO_WAITFORVSYNC, &mode); |
74 | + |
75 | } else { |
76 | // If we can't do the page_flip, just copy the buffer to the front |
77 | // FIXME: use copybit HAL instead of memcpy |
78 | |
79 | project system/core/ |
80 | diff --git a/system/core/libsysutils/src/NetlinkListener.cpp b/system/core/libsysutils/src/NetlinkListener.cpp |
81 | index fb088e1..f99227c 100644 |
82 | --- a/system/core/libsysutils/src/NetlinkListener.cpp |
83 | +++ b/system/core/libsysutils/src/NetlinkListener.cpp |
84 | @@ -45,21 +45,21 @@ bool NetlinkListener::onDataAvailable(SocketClient *cli) |
85 | } |
86 | |
87 | if ((snl.nl_groups != 1) || (snl.nl_pid != 0)) { |
88 | - SLOGE("ignoring non-kernel netlink multicast message"); |
89 | - return false; |
90 | + //SLOGE("ignoring non-kernel netlink multicast message"); |
91 | + return true; |
92 | } |
93 | |
94 | struct cmsghdr * cmsg = CMSG_FIRSTHDR(&hdr); |
95 | |
96 | if (cmsg == NULL || cmsg->cmsg_type != SCM_CREDENTIALS) { |
97 | SLOGE("ignoring message with no sender credentials"); |
98 | - return false; |
99 | + return true; |
100 | } |
101 | |
102 | struct ucred * cred = (struct ucred *)CMSG_DATA(cmsg); |
103 | if (cred->uid != 0) { |
104 | SLOGE("ignoring message from non-root UID %d", cred->uid); |
105 | - return false; |
106 | + return true; |
107 | } |
108 | |
109 | NetlinkEvent *evt = new NetlinkEvent(); |
110 | |
111 | project system/extras/ |
112 | diff --git a/system/extras/su/su.c b/system/extras/su/su.c |
113 | index b87cece..bddc37d 100644 |
114 | --- a/system/extras/su/su.c |
115 | +++ b/system/extras/su/su.c |
116 | @@ -59,10 +59,12 @@ int main(int argc, char **argv) |
117 | |
118 | /* Until we have something better, only root and the shell can use su. */ |
119 | myuid = getuid(); |
120 | +#if 0 |
121 | if (myuid != AID_ROOT && myuid != AID_SHELL) { |
122 | fprintf(stderr,"su: uid %d not allowed to su\n", myuid); |
123 | return 1; |
124 | } |
125 | +#endif |
126 | |
127 | if(setgid(gid) || setuid(uid)) { |
128 | fprintf(stderr,"su: permission denied\n"); |