Without knowing the size of the area to be updated (or the board & hence available RAM), I don't know just how practical this would be for you.
But, why not write your own code to do double-buffering?
That is to say, keep some memory set-aside for this area. Assuming 16bit mode, you'll need 2 bytes per pixel. Just initialize the memory with your background colour, then use a (self-written) function that will 'print' the data to the memory buffer, rather than the display.
Once done, just set the update window to be the area of concern, then simply blit the memory buffer.
Assuming you'd like to reserve 1024 bytes, you'll have space for 512 pixels. This would be 23 x 22 pixels, 10 x 51 and any other combination whose product didn't exceed 512.
Of course(?), this approach would be the most suitable for drawing text over animated, complex or calculated backgrounds - drawing text over the top of a plasma, xor-pattern, fractal all come to mind.
If on the other hand, you've got a single solid-colour background, as I suspect you have - then you could just add a new function to the class. If you have a close look at the code, you'll see.
You may find this excerpt of interest:
//Adafruit_GFX.cpp - line 390
void Adafruit_GFX::drawChar(int16_t x, int16_t y, unsigned char c,
uint16_t color, uint16_t bg, uint8_t size) {
if((x >= _width) || // Clip right
(y >= _height) || // Clip bottom
((x + 6 * size - 1) < 0) || // Clip left
((y + 8 * size - 1) < 0)) // Clip top
return;
for (int8_t i=0; i<6; i++ ) {
uint8_t line;
if (i == 5)
line = 0x0;
else
line = pgm_read_byte(font+(c*5)+i);
for (int8_t j = 0; j<8; j++) {
if (line & 0x1) {
if (size == 1) // default size
drawPixel(x+i, y+j, color);
else { // big size
fillRect(x+(i*size), y+(j*size), size, size, color);
}
} else if (bg != color) {
if (size == 1) // default size
drawPixel(x+i, y+j, bg);
else { // big size
fillRect(x+i*size, y+j*size, size, size, bg);
}
}
line >>= 1;
}
}
}
A quick scan of the code suggests to me that the print functions call this one internally.
So, when print is preceded by a call to the below snippet I'd expect to see both the text colour and background set.
// line 439 of Adafruit_GFX.cpp
void Adafruit_GFX::setTextColor(uint16_t c, uint16_t b)
A friend has my screen at the moment, so I'm not in a position to play around. I'd give the setTextColor function a go before print and see what happens.