[Verizon Samsung Galaxy S III] TrevE:
Synergy 420 (lol)

Synergy 420 :cool::cool::cool::eek: 4.1.2 updates, Floating keyboards, All new Custom multiwindow code and toggles, PDroid integration fixes, once again read esc's post above for everything, but you should already get this updates huge :D

Ill quickly touch on the new support for floating keyboards in multiwindow, if you use the GS3 keyboard it will always be docked to bottom no matter what. If you use the note2 keyboard it will always be docked as well except in multiwindow it will float. Other keyboards that have floating support will work as well so hopefully Themes&Apps can pickup some cool mods for different floating keyboard apks (Re-size it in floating mode, make 3rd party keyboards float, whatever). I think its opens a few nifty possibilities.

Also about the multiwindow toggle in settings, you must have the multiwindow bar out before you mess with it. If you do not the option will be sort of reversed (you will have a multiwindow bar available but long press will not hide it). Its a bug but we figured some users who want to use multiwindow but retain the old back button functionality can mess with it. This also might open the door to let the themes&app section create a long back to kill, then to use multiwindow you could enable it in settings. Once again well stick to making a ROM and hopefully let themes&app do the rest :)

The big thing I will talk about this version though is our new SynergyRom Optimization. As I hinted before, this is not something you will be interacting with changing settings, its a whole private Toolkit we created that is applied to our entire ROM before we release.

Getting into some geek details - we have found ways to directly optimize dexcode for smaller sizes, better memory consumption, and increased performance. We have reoptimized methods, so code that was

.method private static computeDistanceAndBearing(DDDD[F)V
.locals 87

now becomes

.method private static computeDistanceAndBearing(DDDD[F)V
.locals 55

We also have fully optimized MemberClasses, making direct references to code instead of floating references. This results in less load time searching for classes. For an example:

.annotation system Ldalvik/annotation/MemberClasses;
value = {
Landroid/os/BatteryStats$HistoryPrinter;,
Landroid/os/BatteryStats$BitDescription;,
Landroid/os/BatteryStats$HistoryItem;,
Landroid/os/BatteryStats$Uid;,
Landroid/os/BatteryStats$Timer;,
Landroid/os/BatteryStats$Counter;
}
.end annotation

now has direct references, in proper order for scanning performance, to all the Uid subclasses as follows:

.annotation system Ldalvik/annotation/MemberClasses;
value = {
Landroid/os/BatteryStats$BitDescription;,
Landroid/os/BatteryStats$Counter;,
Landroid/os/BatteryStats$HistoryItem;,
Landroid/os/BatteryStats$HistoryPrinter;,
Landroid/os/BatteryStats$Timer;,
Landroid/os/BatteryStats$Uid;,
Landroid/os/BatteryStats$Uid$Pid;,
Landroid/os/BatteryStats$Uid$Pkg;,
Landroid/os/BatteryStats$Uid$Pkg$Serv;,
Landroid/os/BatteryStats$Uid$Proc;,
Landroid/os/BatteryStats$Uid$Proc$ExcessivePower;,
Landroid/os/BatteryStats$Uid$Sensor;,
Landroid/os/BatteryStats$Uid$Wakelock;
}

we are also able to directly compress the way parms are passed to other methods, such as

invoke-direct/range {p0 .. p0}, Lcom/android/server/PowerManagerService;->shouldDeferScreenOnLocked()Z

now becomes

invoke-direct {p0}, Lcom/android/server/PowerManagerService;->shouldDeferScreenOnLocked()Z

Besides all of the above optimization techniques we are now also able to flag bad code. Using the above shouldDeferScreenOnLocked() method calls are both correct, but there is a 3rd way it could be done and built with no "errors" thrown

invoke-virtural {p0}, Lcom/android/server/PowerManagerService;->shouldDeferScreenOnLocked()Z

This code will still build and work exactly the same as the above two in android, but it is wrong. Every time this code is hit the DalvikVM system will patch it on the fly to the proper invoke-direct call. This results in a performance hit every time that code is touched due to just-in-time corrections. Our code now passes with flying colors. Infact it passes cleaner then a stock deodexed 4.1.2 rom I tested. This could be due to something deodexer does wrong or bad samsung code but either way its pretty impressive :)

In conclusion, This whole optimization toolkit that we have written gives not only gives our code a very unique fingerprint but greatly speeds things up and uses less RAM. You _really_ do not want to restore old system apks using titanium or install themes that are not directly made for the new Synergy 420 framework/apps. If you do they may work but you will effectively be reverting all the optimizations we made to the code.

Enjoy the new build, lots of work went into this and we really think it will show. Happy flashing

--Trev

P.S. If you haven't done so already, go and click on NxtGenCowboy's thanks button. He let me borrow his device for these last few builds and its been a great help. Make sure he knows its appreciated :)

http://xdaforums.com/showpost.php?p=39372503&postcount=19119