diff options
author | Adnan Begovic <adnan@cyngn.com> | 2015-09-01 14:00:12 -0700 |
---|---|---|
committer | Adnan Begovic <adnan@cyngn.com> | 2015-09-01 14:12:21 -0700 |
commit | 3a502e91b2271c71108f0c8833145373b50bcd01 (patch) | |
tree | 29795b1545761d5d1b9ea6cf2ade56884a8153de /src | |
parent | c5fa7bcf015f7a65ec3cb6f6a78981fdee07efa6 (diff) | |
download | vendor_cmsdk-3a502e91b2271c71108f0c8833145373b50bcd01.zip vendor_cmsdk-3a502e91b2271c71108f0c8833145373b50bcd01.tar.gz vendor_cmsdk-3a502e91b2271c71108f0c8833145373b50bcd01.tar.bz2 |
cmsdk: Change parceling for DisplayMode.
Change-Id: Ied3521e3fb7c3f198c0b17d82638fa21ad5cd69a
Diffstat (limited to 'src')
-rw-r--r-- | src/java/cyanogenmod/hardware/DisplayMode.java | 59 |
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 |