Set render_engine info to new information in eng_setup before we do

comparisons.
Add comment about NULL surface being passed in.

Fix segfault when we close windows...uartie, this one's for you ;)

Signed-off-by: Chris Michael <devilhorns@comcast.net>
This commit is contained in:
Chris Michael 2013-06-06 03:51:57 +01:00
parent 9713353e6c
commit b951b98d47
1 changed files with 21 additions and 19 deletions

View File

@ -679,33 +679,37 @@ eng_setup(Evas *evas, void *info)
re = epd->engine.data.output;
if (_re_wincheck(re))
{
if ((inf->info.display != re->win->disp) ||
(inf->info.surface != re->win->surface) ||
(inf->info.screen != re->win->screen) ||
(inf->info.depth != re->win->depth) ||
(inf->info.rotation != re->win->rot) ||
(inf->info.destination_alpha != re->win->alpha))
re->info = inf;
if ((re->info->info.display != re->win->disp) ||
(re->info->info.surface != re->win->surface) ||
(re->info->info.screen != re->win->screen) ||
(re->info->info.depth != re->win->depth) ||
(re->info->info.rotation != re->win->rot) ||
(re->info->info.destination_alpha != re->win->alpha))
{
Eina_Bool inc = EINA_FALSE;
Evas_GL_Wl_Window *new_win = NULL;
if ((re->win) && (re->win->surface) && (!inf->info.surface))
/* if no surface is passed in, then we are hiding
* or destroying */
if ((re->win) && (re->win->surface) &&
(!re->info->info.surface))
{
eng_window_free(re->win);
gl_wins--;
re->win = NULL;
re->info = inf;
return 1;
free(re);
epd->engine.data.output = NULL;
return 0;
}
new_win = eng_window_new(inf->info.display,
inf->info.surface,
inf->info.screen,
inf->info.depth,
new_win = eng_window_new(re->info->info.display,
re->info->info.surface,
re->info->info.screen,
re->info->info.depth,
epd->output.w, epd->output.h,
inf->indirect,
inf->info.destination_alpha,
inf->info.rotation);
re->info->indirect,
re->info->info.destination_alpha,
re->info->info.rotation);
if (new_win)
{
if (re->win)
@ -725,8 +729,6 @@ eng_setup(Evas *evas, void *info)
if ((re->win) && (inc))
re->win->gl_context->references--;
}
re->info = inf;
}
else if ((re->win->w != epd->output.w) ||
(re->win->h != epd->output.h))