Works also on my GxGDEH029A1.
The new updateWindow (also) does not consider rotation?
Is the doubled _writeData block with the two delay(300) deliberate?
Funnily I had uncommited local code which also got rid of the numerous _wakeUp calls. :-)
As an idea for improvement (for me) I also thought of an automatic tracking of one or two update windows. So a library user could just invoke an "updateMyLatetestChanges" without actually knowing which window this would be.
By design, rotation is handled on drawing only, in method drawPixel, not on update to display, and not on direct drawing of bitmaps.
Edit: now I see the point: parameters of updateWindow should be logical points, not physical, should be transformed to physical address. I will fix this.
I think of adding a drawBitmap to buffer method with mirroring, for the bitorder of the demo bitmaps.
The doubled write seems required for subsequent partial updates, same as in demo code, I did not check about the delay.
I still consider my GxEPD library as an example, a starting point for users. I am open for modification suggestions, but major extensions are best handled by cloning it.