How to change the screen faster?

Hello Everyone. I have a problem related to changing the screen. I have a button and I want when I press it the whole screen will turn into another screen. To do that, I cleaned the screen and then I redraw the screen. But the problem is this process is quite slow and I want it change immediately. I’m using STM32L476RG and ST7565 for my display. This is my disp_flush I used for my application. Please show me some ways to speed up LVGL, I really need help.
Thanks,
Best regards,

Code to reproduce

Add a code snippet which can run in the simulator. It should contain only the relevant code that compiles without errors when separated from your main code base.

The code block(s) should be formatted like:

static void disp_flush(lv_disp_drv_t * disp_drv, const lv_area_t * area, lv_color_t * color_p)
{
    /*The most simple case (but also the slowest) to put all pixels to the screen one-by-one
    * IMPORTANT!!!
    * Inform the graphics library that you are ready with the flushing*/
#if(0)
	LREP("\r\n(%d,%d) (%d,%d)",(long)(area->x1), (long)(area->y1), (long)(area->x2), (long)(area->y2));
	LcdFillRect(area->x1, area->y1, abs(area->x2 - area->x1 +1) , abs(area->y2 - area->y1), color_p->full);
#endif
    if(area->x2 < 0) return;
    if(area->y2 < 0) return;
    if(area->x1 > 128 - 1) return;
    if(area->y1 > 64 - 1) return;

    /*Truncate the area to the screen*/
    int32_t act_x1 = area->x1 < 0 ? 0 : area->x1;
    int32_t act_y1 = area->y1 < 0 ? 0 : area->y1;
    int32_t act_x2 = area->x2 > (128 - 1) ? 128 - 1 : area->x2;
    int32_t act_y2 = area->y2 > (64 - 1) ? 64 - 1 : area->y2;

    int32_t x, y;
    /*Set the first row in */

    /*Refresh frame buffer*/
    for(y = act_y1; y <= act_y2; y++) {
        for(x = act_x1; x <= act_x2; x++) {
            if(lv_color_to1(*color_p) != 0) {
            	st7565_buffer[x + (y / 8)*128] &= ~(1 << ((y % 8)));
            } else {
            	st7565_buffer[x + (y / 8)*128] |= (1 << ((y % 8)));
            }
            color_p ++;
        }
        color_p += area->x2 - act_x2; /*Next row*/
    }

	LcdSetBufferPixel(st7565_buffer);
//	color_p->full++;
    lv_disp_flush_ready(disp_drv);
}