| 1 | |
| 2 | project build/ |
| 3 | diff --git a/build/core/product_config.mk b/build/core/product_config.mk |
| 4 | index fd8feb7..ee2be34 100644 |
| 5 | --- a/build/core/product_config.mk |
| 6 | +++ b/build/core/product_config.mk |
| 7 | @@ -193,7 +193,8 @@ else |
| 8 | # |
| 9 | #TODO: when we start allowing direct pointers to product files, |
| 10 | # guarantee that they're in this list. |
| 11 | - $(call import-products, $(get-all-product-makefiles)) |
| 12 | + #$(call import-products, $(get-all-product-makefiles)) |
| 13 | + $(call import-products, device/openpandora/pandora/pandora.mk) |
| 14 | endif # TARGET_BUILD_APPS |
| 15 | $(check-all-products) |
| 16 | #$(dump-products) |
| 17 | |
| 18 | project external/hostap/ |
| 19 | diff --git a/external/hostap/Android.mk b/external/hostap/Android.mk |
| 20 | index 77d72ea..5c6b589 100644 |
| 21 | --- a/external/hostap/Android.mk |
| 22 | +++ b/external/hostap/Android.mk |
| 23 | @@ -1,3 +1,5 @@ |
| 24 | ifeq ($(WPA_SUPPLICANT_VERSION),VER_0_8_X) |
| 25 | - include $(call all-subdir-makefiles) |
| 26 | + #include $(call all-subdir-makefiles) |
| 27 | + LOCAL_PATH := $(call my-dir) |
| 28 | + include $(LOCAL_PATH)/wpa_supplicant/Android.mk |
| 29 | endif |
| 30 | diff --git a/external/hostap/wpa_supplicant/config-android b/external/hostap/wpa_supplicant/config-android |
| 31 | index c71056c..2532ccd 100644 |
| 32 | --- a/external/hostap/wpa_supplicant/config-android |
| 33 | +++ b/external/hostap/wpa_supplicant/config-android |
| 34 | @@ -81,7 +81,7 @@ |
| 35 | CONFIG_DRIVER_WEXT=y |
| 36 | |
| 37 | # Driver interface for Linux drivers using the nl80211 kernel interface |
| 38 | -CONFIG_DRIVER_NL80211=y |
| 39 | +#CONFIG_DRIVER_NL80211=y |
| 40 | |
| 41 | # Driver interface for FreeBSD net80211 layer (e.g., Atheros driver) |
| 42 | #CONFIG_DRIVER_BSD=y |
| 43 | |
| 44 | project external/openssl/ |
| 45 | diff --git a/external/openssl/crypto/Android.mk b/external/openssl/crypto/Android.mk |
| 46 | index 222bc96..f2361a5 100644 |
| 47 | --- a/external/openssl/crypto/Android.mk |
| 48 | +++ b/external/openssl/crypto/Android.mk |
| 49 | @@ -155,6 +155,7 @@ local_src_files := \ |
| 50 | bn/bn_sqr.c \ |
| 51 | bn/bn_sqrt.c \ |
| 52 | bn/bn_word.c \ |
| 53 | + bn/bn_const.c \ |
| 54 | buffer/buf_err.c \ |
| 55 | buffer/buffer.c \ |
| 56 | comp/c_rle.c \ |
| 57 | |
| 58 | project frameworks/base/ |
| 59 | diff --git a/frameworks/base/libs/ui/InputReader.cpp b/frameworks/base/libs/ui/InputReader.cpp |
| 60 | index 7626b15..16e17b3 100644 |
| 61 | --- a/frameworks/base/libs/ui/InputReader.cpp |
| 62 | +++ b/frameworks/base/libs/ui/InputReader.cpp |
| 63 | @@ -1468,12 +1468,36 @@ bool TouchInputMapper::configureSurfaceLocked() { |
| 64 | |
| 65 | // Configure X and Y factors. |
| 66 | if (mRawAxes.x.valid && mRawAxes.y.valid) { |
| 67 | - mLocked.xOrigin = mRawAxes.x.minValue; |
| 68 | - mLocked.yOrigin = mRawAxes.y.minValue; |
| 69 | - mLocked.xScale = float(width) / mRawAxes.x.getRange(); |
| 70 | - mLocked.yScale = float(height) / mRawAxes.y.getRange(); |
| 71 | - mLocked.xPrecision = 1.0f / mLocked.xScale; |
| 72 | - mLocked.yPrecision = 1.0f / mLocked.yScale; |
| 73 | + int a[7], have_pointercal = 0; |
| 74 | + const char *fname = "/vendor/pointercal"; |
| 75 | + FILE *f = fopen(fname, "r"); |
| 76 | + int ret; |
| 77 | + if (f) { |
| 78 | + ret = fscanf(f, "%d %d %d %d %d %d %d", |
| 79 | + &a[0], &a[1], &a[2], &a[3], &a[4], &a[5], &a[6]); |
| 80 | + if (ret == 7) |
| 81 | + have_pointercal = 1; |
| 82 | + else |
| 83 | + LOGW("Failed to parse %s", fname); |
| 84 | + fclose(f); |
| 85 | + } |
| 86 | + else |
| 87 | + LOGW("Failed to open %s", fname); |
| 88 | + |
| 89 | + if (have_pointercal) { |
| 90 | + mLocked.xScale = float(a[0]) / float(a[6]); |
| 91 | + mLocked.yScale = float(a[4]) / float(a[6]); |
| 92 | + // a[2] / mLocked.xScale / a[6] |
| 93 | + mLocked.xOrigin = -a[2] / a[0]; |
| 94 | + mLocked.yOrigin = -a[5] / a[4]; |
| 95 | + } else { |
| 96 | + mLocked.xOrigin = mRawAxes.x.minValue; |
| 97 | + mLocked.yOrigin = mRawAxes.y.minValue; |
| 98 | + mLocked.xScale = float(width) / mRawAxes.x.getRange(); |
| 99 | + mLocked.yScale = float(height) / mRawAxes.y.getRange(); |
| 100 | + } |
| 101 | + mLocked.xPrecision = fabsf(1.0f / mLocked.xScale); |
| 102 | + mLocked.yPrecision = fabsf(1.0f / mLocked.yScale); |
| 103 | |
| 104 | configureVirtualKeysLocked(); |
| 105 | } else { |
| 106 | @@ -1489,7 +1513,7 @@ bool TouchInputMapper::configureSurfaceLocked() { |
| 107 | // Scale factor for terms that are not oriented in a particular axis. |
| 108 | // If the pixels are square then xScale == yScale otherwise we fake it |
| 109 | // by choosing an average. |
| 110 | - mLocked.geometricScale = avg(mLocked.xScale, mLocked.yScale); |
| 111 | + mLocked.geometricScale = avg(fabsf(mLocked.xScale), fabsf(mLocked.yScale)); |
| 112 | |
| 113 | // Size of diagonal axis. |
| 114 | float diagonalSize = pythag(width, height); |
| 115 | diff --git a/frameworks/base/services/java/com/android/server/PowerManagerService.java b/frameworks/base/services/java/com/android/server/PowerManagerService.java |
| 116 | index 44eb228..9444fad 100644 |
| 117 | --- a/frameworks/base/services/java/com/android/server/PowerManagerService.java |
| 118 | +++ b/frameworks/base/services/java/com/android/server/PowerManagerService.java |
| 119 | @@ -766,7 +766,8 @@ class PowerManagerService extends IPowerManager.Stub |
| 120 | } |
| 121 | |
| 122 | private void updateWakeLockLocked() { |
| 123 | - if (mStayOnConditions != 0 && mBatteryService.isPowered(mStayOnConditions)) { |
| 124 | + /* pandora hack: screenoff breakage workaround */ |
| 125 | + if (true || mStayOnConditions != 0 && mBatteryService.isPowered(mStayOnConditions)) { |
| 126 | // keep the device on if we're plugged in and mStayOnWhilePluggedIn is set. |
| 127 | mStayOnWhilePluggedInScreenDimLock.acquire(); |
| 128 | mStayOnWhilePluggedInPartialLock.acquire(); |
| 129 | |
| 130 | project hardware/libhardware/ |
| 131 | diff --git a/hardware/libhardware/modules/gralloc/framebuffer.cpp b/hardware/libhardware/modules/gralloc/framebuffer.cpp |
| 132 | index fe57a8a..b5465e4 100644 |
| 133 | --- a/hardware/libhardware/modules/gralloc/framebuffer.cpp |
| 134 | +++ b/hardware/libhardware/modules/gralloc/framebuffer.cpp |
| 135 | @@ -109,6 +109,12 @@ static int fb_post(struct framebuffer_device_t* dev, buffer_handle_t buffer) |
| 136 | } |
| 137 | m->currentBuffer = buffer; |
| 138 | |
| 139 | +#ifndef FBIO_WAITFORVSYNC |
| 140 | +#define FBIO_WAITFORVSYNC _IOW ('F', 32, unsigned int) |
| 141 | +#endif |
| 142 | + int mode = 0; |
| 143 | + ioctl(m->framebuffer->fd, FBIO_WAITFORVSYNC, &mode); |
| 144 | + |
| 145 | } else { |
| 146 | // If we can't do the page_flip, just copy the buffer to the front |
| 147 | // FIXME: use copybit HAL instead of memcpy |
| 148 | |
| 149 | project hardware/libhardware_legacy/ |
| 150 | diff --git a/hardware/libhardware_legacy/power/power.c b/hardware/libhardware_legacy/power/power.c |
| 151 | index bca52fc..2ffadfa 100644 |
| 152 | --- a/hardware/libhardware_legacy/power/power.c |
| 153 | +++ b/hardware/libhardware_legacy/power/power.c |
| 154 | @@ -254,6 +254,9 @@ set_screen_state(int on) |
| 155 | //LOGI("go_to_sleep eventTime=%lld now=%lld g_error=%s\n", eventTime, |
| 156 | // systemTime(), strerror(g_error)); |
| 157 | |
| 158 | + // pandora hack |
| 159 | + return 0; |
| 160 | + |
| 161 | if (g_error) return g_error; |
| 162 | |
| 163 | char buf[32]; |
| 164 | diff --git a/hardware/libhardware_legacy/wifi/wifi.c b/hardware/libhardware_legacy/wifi/wifi.c |
| 165 | index 167402b..4e03740 100644 |
| 166 | --- a/hardware/libhardware_legacy/wifi/wifi.c |
| 167 | +++ b/hardware/libhardware_legacy/wifi/wifi.c |
| 168 | @@ -695,17 +695,40 @@ int wifi_connect_to_supplicant() |
| 169 | return 0; |
| 170 | } |
| 171 | |
| 172 | +#include <sys/types.h> |
| 173 | +#include <sys/socket.h> |
| 174 | +#include <unistd.h> |
| 175 | +#include <sys/ioctl.h> |
| 176 | +#include <net/if.h> |
| 177 | + |
| 178 | int wifi_send_command(struct wpa_ctrl *ctrl, const char *cmd, char *reply, size_t *reply_len) |
| 179 | { |
| 180 | int ret; |
| 181 | |
| 182 | + int sock = socket(AF_INET, SOCK_DGRAM, 0); |
| 183 | + if (sock != -1) { |
| 184 | + struct ifreq ifr; |
| 185 | + memset(&ifr, 0, sizeof(ifr)); |
| 186 | + strcpy(ifr.ifr_name, "wlan0"); |
| 187 | + |
| 188 | + if (ioctl(sock, SIOCGIFFLAGS, &ifr) == 0) { |
| 189 | + if (!(ifr.ifr_flags & IFF_UP)) { |
| 190 | + LOGE("wlan0 is down - attempting to bring up..\n"); |
| 191 | + ifr.ifr_flags |= IFF_UP; |
| 192 | + if (ioctl(sock, SIOCSIFFLAGS, &ifr) == 0) |
| 193 | + LOGE("wlan0 brought up\n"); |
| 194 | + } |
| 195 | + } |
| 196 | + close(sock); |
| 197 | + } |
| 198 | + |
| 199 | if (ctrl_conn == NULL) { |
| 200 | - LOGV("Not connected to wpa_supplicant - \"%s\" command dropped.\n", cmd); |
| 201 | + LOGE("Not connected to wpa_supplicant - \"%s\" command dropped.\n", cmd); |
| 202 | return -1; |
| 203 | } |
| 204 | ret = wpa_ctrl_request(ctrl, cmd, strlen(cmd), reply, reply_len, NULL); |
| 205 | if (ret == -2) { |
| 206 | - LOGD("'%s' command timed out.\n", cmd); |
| 207 | + LOGE("'%s' command timed out.\n", cmd); |
| 208 | return -2; |
| 209 | } else if (ret < 0 || strncmp(reply, "FAIL", 4) == 0) { |
| 210 | return -1; |
| 211 | |
| 212 | project hardware/ti/omap3/ |
| 213 | diff --git a/hardware/ti/omap3/Android.mk b/hardware/ti/omap3/Android.mk |
| 214 | index d2171bf..059ea3e 100644 |
| 215 | --- a/hardware/ti/omap3/Android.mk |
| 216 | +++ b/hardware/ti/omap3/Android.mk |
| 217 | @@ -1,4 +1,7 @@ |
| 218 | # make sure the omap3 HAL code doesn't get picked up by non-omap boards |
| 219 | ifeq ($(OMAP_ENHANCEMENT),true) |
| 220 | include $(call first-makefiles-under,$(call my-dir)) |
| 221 | +else |
| 222 | + LOCAL_PATH := $(call my-dir) |
| 223 | + include $(LOCAL_PATH)/modules/alsa/Android.mk |
| 224 | endif |
| 225 | |
| 226 | project packages/providers/MediaProvider/ |
| 227 | diff --git a/packages/providers/MediaProvider/src/com/android/providers/media/MediaProvider.java b/packages/providers/MediaProvider/src/com/android/providers/media/MediaProvider.java |
| 228 | index 146966f..3938841 100644 |
| 229 | --- a/packages/providers/MediaProvider/src/com/android/providers/media/MediaProvider.java |
| 230 | +++ b/packages/providers/MediaProvider/src/com/android/providers/media/MediaProvider.java |
| 231 | @@ -3317,8 +3317,9 @@ public class MediaProvider extends ContentProvider { |
| 232 | Log.i(TAG, "External storage is not (yet) mounted, cannot attach volume."); |
| 233 | } |
| 234 | |
| 235 | - throw new IllegalArgumentException("Unable to obtain external storage volume ID for " + |
| 236 | - volume + " volume."); |
| 237 | + // pandora hack: ignore for now, like older Android did |
| 238 | + //throw new IllegalArgumentException("Unable to obtain external storage volume ID for " + |
| 239 | + // volume + " volume."); |
| 240 | } |
| 241 | |
| 242 | // generate database name based on volume ID |
| 243 | |
| 244 | project system/core/ |
| 245 | diff --git a/system/core/init/devices.c b/system/core/init/devices.c |
| 246 | index 04f2caf..5affc06 100644 |
| 247 | --- a/system/core/init/devices.c |
| 248 | +++ b/system/core/init/devices.c |
| 249 | @@ -572,6 +572,9 @@ static void handle_firmware_event(struct uevent *uevent) |
| 250 | int status; |
| 251 | int ret; |
| 252 | |
| 253 | + // pandora hack: udev is handling this for us |
| 254 | + return; |
| 255 | + |
| 256 | if(strcmp(uevent->subsystem, "firmware")) |
| 257 | return; |
| 258 | |
| 259 | diff --git a/system/core/libsysutils/src/NetlinkListener.cpp b/system/core/libsysutils/src/NetlinkListener.cpp |
| 260 | index fb088e1..f99227c 100644 |
| 261 | --- a/system/core/libsysutils/src/NetlinkListener.cpp |
| 262 | +++ b/system/core/libsysutils/src/NetlinkListener.cpp |
| 263 | @@ -45,21 +45,21 @@ bool NetlinkListener::onDataAvailable(SocketClient *cli) |
| 264 | } |
| 265 | |
| 266 | if ((snl.nl_groups != 1) || (snl.nl_pid != 0)) { |
| 267 | - SLOGE("ignoring non-kernel netlink multicast message"); |
| 268 | - return false; |
| 269 | + //SLOGE("ignoring non-kernel netlink multicast message"); |
| 270 | + return true; |
| 271 | } |
| 272 | |
| 273 | struct cmsghdr * cmsg = CMSG_FIRSTHDR(&hdr); |
| 274 | |
| 275 | if (cmsg == NULL || cmsg->cmsg_type != SCM_CREDENTIALS) { |
| 276 | SLOGE("ignoring message with no sender credentials"); |
| 277 | - return false; |
| 278 | + return true; |
| 279 | } |
| 280 | |
| 281 | struct ucred * cred = (struct ucred *)CMSG_DATA(cmsg); |
| 282 | if (cred->uid != 0) { |
| 283 | SLOGE("ignoring message from non-root UID %d", cred->uid); |
| 284 | - return false; |
| 285 | + return true; |
| 286 | } |
| 287 | |
| 288 | NetlinkEvent *evt = new NetlinkEvent(); |
| 289 | |
| 290 | project vendor/cyanogen/ |
| 291 | diff --git a/vendor/cyanogen/products/common.mk b/vendor/cyanogen/products/common.mk |
| 292 | index 195bc57..0477688 100644 |
| 293 | --- a/vendor/cyanogen/products/common.mk |
| 294 | +++ b/vendor/cyanogen/products/common.mk |
| 295 | @@ -87,7 +87,7 @@ PRODUCT_COPY_FILES += \ |
| 296 | # vendor/cyanogen/prebuilt/common/etc/init.d/10apps2sd:system/etc/init.d/10apps2sd |
| 297 | |
| 298 | PRODUCT_COPY_FILES += \ |
| 299 | - vendor/cyanogen/proprietary/RomManager.apk:system/app/RomManager.apk \ |
| 300 | +# vendor/cyanogen/proprietary/RomManager.apk:system/app/RomManager.apk \ |
| 301 | |
| 302 | # Enable SIP+VoIP on all targets |
| 303 | PRODUCT_COPY_FILES += \ |