aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdnan Begovic <adnan@cyngn.com>2015-09-01 14:00:12 -0700
committerAdnan Begovic <adnan@cyngn.com>2015-09-01 14:12:21 -0700
commit3a502e91b2271c71108f0c8833145373b50bcd01 (patch)
tree29795b1545761d5d1b9ea6cf2ade56884a8153de
parentc5fa7bcf015f7a65ec3cb6f6a78981fdee07efa6 (diff)
downloadvendor_cmsdk-3a502e91b2271c71108f0c8833145373b50bcd01.zip
vendor_cmsdk-3a502e91b2271c71108f0c8833145373b50bcd01.tar.gz
vendor_cmsdk-3a502e91b2271c71108f0c8833145373b50bcd01.tar.bz2
cmsdk: Change parceling for DisplayMode.
Change-Id: Ied3521e3fb7c3f198c0b17d82638fa21ad5cd69a
-rw-r--r--src/java/cyanogenmod/hardware/DisplayMode.java59
1 files changed, 54 insertions, 5 deletions
diff --git a/src/java/cyanogenmod/hardware/DisplayMode.java b/src/java/cyanogenmod/hardware/DisplayMode.java
index 1384595..908d428 100644
--- a/src/java/cyanogenmod/hardware/DisplayMode.java
+++ b/src/java/cyanogenmod/hardware/DisplayMode.java
@@ -19,7 +19,9 @@ package cyanogenmod.hardware;
import android.os.Parcel;
import android.os.Parcelable;
-/*
+import cyanogenmod.os.Build;
+
+/**
* Display Modes API
*
* A device may implement a list of preset display modes for different
@@ -36,12 +38,36 @@ import android.os.Parcelable;
public class DisplayMode implements Parcelable {
public final int id;
public final String name;
-
+
public DisplayMode(int id, String name) {
this.id = id;
this.name = name;
}
+ private DisplayMode(Parcel parcel) {
+ // Read parcelable version, make sure to define explicit changes
+ // within {@link Build.PARCELABLE_VERSION);
+ int parcelableVersion = parcel.readInt();
+ int parcelableSize = parcel.readInt();
+ int startPosition = parcel.dataPosition();
+
+ // temp vars
+ int tmpId = -1;
+ String tmpName = null;
+
+ if (parcelableVersion >= Build.CM_VERSION_CODES.BOYSENBERRY) {
+ tmpId = parcel.readInt();
+ if (parcel.readInt() != 0) {
+ tmpName = parcel.readString();
+ }
+ }
+
+ // set temps
+ this.id = tmpId;
+ this.name = tmpName;
+ parcel.setDataPosition(startPosition + parcelableSize);
+ }
+
@Override
public int describeContents() {
return 0;
@@ -49,14 +75,37 @@ public class DisplayMode implements Parcelable {
@Override
public void writeToParcel(Parcel out, int flags) {
+ // Write parcelable version, make sure to define explicit changes
+ // within {@link Build.PARCELABLE_VERSION);
+ out.writeInt(Build.PARCELABLE_VERSION);
+
+ // Inject a placeholder that will store the parcel size from this point on
+ // (not including the size itself).
+ int sizePosition = out.dataPosition();
+ out.writeInt(0);
+ int startPosition = out.dataPosition();
+
+ // ==== BOYSENBERRY =====
out.writeInt(id);
- out.writeString(name);
+ if (name != null) {
+ out.writeInt(1);
+ out.writeString(name);
+ } else {
+ out.writeInt(0);
+ }
+
+ // Go back and write size
+ int parcelableSize = out.dataPosition() - startPosition;
+ out.setDataPosition(sizePosition);
+ out.writeInt(parcelableSize);
+ out.setDataPosition(startPosition + parcelableSize);
}
/** @hide */
- public static final Parcelable.Creator<DisplayMode> CREATOR = new Parcelable.Creator<DisplayMode>() {
+ public static final Parcelable.Creator<DisplayMode> CREATOR =
+ new Parcelable.Creator<DisplayMode>() {
public DisplayMode createFromParcel(Parcel in) {
- return new DisplayMode(in.readInt(), in.readString());
+ return new DisplayMode(in);
}
@Override