bugfix: use existing compositor canvas pointer as the windows pointer

when doing wayland windows (internal dialogs), and in such a case
don't free the window pointer on window hide/destroy.

NB: This fixes the case when running wayland-only and dialogs would
actually show 2 pointers.

Signed-off-by: Chris Michael <cp.michael@samsung.com>
This commit is contained in:
Chris Michael 2014-09-04 15:55:18 -04:00
parent 1f439893f1
commit ffe713d0df
1 changed files with 4 additions and 3 deletions

View File

@ -263,7 +263,8 @@ _e_win_hide(void *obj)
if (cb) cb(win);
if (!e_object_unref(E_OBJECT(win)))
return;
E_FREE_FUNC(win->pointer, e_object_del);
if ((win->pointer) && (win->comp->comp_type != E_PIXMAP_TYPE_WL))
E_FREE_FUNC(win->pointer, e_object_del);
e_canvas_del(win->ecore_evas);
ecore_evas_callback_move_set(win->ecore_evas, NULL);
ecore_evas_callback_resize_set(win->ecore_evas, NULL);
@ -348,7 +349,7 @@ e_win_new(E_Comp *c)
if (c->comp_type == E_PIXMAP_TYPE_X)
win->pointer = e_pointer_window_new(win->evas_win, EINA_TRUE);
else if (c->comp_type == E_PIXMAP_TYPE_WL)
win->pointer = e_pointer_canvas_new(win->ecore_evas, EINA_TRUE);
win->pointer = c->pointer;
return win;
}
@ -716,7 +717,7 @@ e_win_client_icon_key_set(E_Win *win, const char *key)
static void
_e_win_free(E_Win *win)
{
if (win->pointer)
if ((win->pointer) && (win->comp->comp_type != E_PIXMAP_TYPE_WL))
e_object_del(E_OBJECT(win->pointer));
if (win->ecore_evas)