I would actually be quite surprised if outsideClassRotation() actuallyworked. My guess is that it does not work as is. Maybe it did work atsome point, but then you made some subtle changes to your code and didnot check that it is still working.
Here is the deal: there are two setRotation() methods:Adafruit_GFX::setRotation(unsigned char) does very little besidesstoring the rotation angle... which is not used anyway.Adafruit_ILI9341::setRotation(unsigned char) actually sends commandsto the LCD asking it to apply the rotation; this is the method youwant.
The problem is that these methods are not virtual, which means thatwhen you call them through a pointer, as insome_pointer->setRotation(the_angle);, you get the methodcorresponding to the type of the pointer, not the type of the actualobject. For example:tft->setRotation(the_angle); // calls Adafruit_ILI9341::setRotation()ptrTft->setRotation(the_angle); // calls Adafruit_GFX::setRotation()passed->setRotation(the_angle); // calls Adafruit_GFX::setRotation()
I checked this by uncommenting your call to outsideClassRotation() anddisassembling the compiled binary: both times you are callingAdafruit_GFX::setRotation().
Solution: change your Adafruit_GFX * pointers to be oftype Adafruit_ILI9341 *, or patch Adafruit_GFX.h to makesetRotation() virtual.