int mode;
int w, h;
int vsync;
+ int lost_back;
EVGL_Engine *evgl_engine;
};
{
if (re->win->surf) return 1;
eng_window_resurf(re->win);
+ re->lost_back = 1;
if (!re->win->surf)
{
ERR("GL engine can't re-create window surface!");
if (!re->rects)
{
re->rects = evas_common_tilebuf_get_render_rects(re->tb);
- evas_common_tilebuf_clear(re->tb);
if (re->rects)
{
+ if (re->lost_back)
+ {
+ /* if we lost our backbuffer since the last frame redraw all */
+ re->lost_back = 0;
+ evas_common_tilebuf_add_redraw(re->tb, 0, 0, re->win->w, re->win->h);
+ evas_common_tilebuf_free_render_rects(re->rects);
+ re->rects = evas_common_tilebuf_get_render_rects(re->tb);
+ }
/* ensure we get rid of previous rect lists we dont need if mode
* changed/is appropriate */
switch (re->mode)
re->cur_rect = EINA_INLIST_GET(re->rects);
first_rect = EINA_TRUE;
}
+ evas_common_tilebuf_clear(re->tb);
}
if (!re->cur_rect) return NULL;
rect = (Tilebuf_Rect *)re->cur_rect;