Ecore_Wayland: Add ecore_wl_window_surface_create() API

On some use cases, it is necessary to create a new wl_surface without
associating it to a wl_shell_surface. This new API makes it possible.

Signed-off-by: Eduardo Lima (Etrunko) <eduardo.lima@intel.com>
This commit is contained in:
Eduardo Lima (Etrunko) 2013-03-26 15:48:41 -03:00
parent 40e7751055
commit 19561c6112
2 changed files with 22 additions and 3 deletions

View File

@ -635,6 +635,16 @@ EAPI Ecore_Wl_Dnd *ecore_wl_dnd_get();
EAPI Eina_Bool ecore_wl_dnd_start_drag();
EAPI Eina_Bool ecore_wl_dnd_selection_has_owner(Ecore_Wl_Dnd *dnd);
/**
* Returns a wl_surface with no association to any wl_shell_surface.
*
* @param win The window which will use this newly created surface.
*
* @ingroup Ecore_Wl_Window_Group
* @since 1.8
*/
EAPI struct wl_surface *ecore_wl_window_surface_create(Ecore_Wl_Window *win);
#ifdef __cplusplus
}
#endif

View File

@ -265,6 +265,17 @@ ecore_wl_window_buffer_attach(Ecore_Wl_Window *win, struct wl_buffer *buffer, in
}
}
EAPI struct wl_surface*
ecore_wl_window_surface_create(Ecore_Wl_Window *win)
{
if (!win) return NULL;
if (win->surface) return NULL;
win->surface = wl_compositor_create_surface(_ecore_wl_disp->wl.compositor);
wl_surface_set_user_data(win->surface, win);
return win->surface;
}
EAPI void
ecore_wl_window_show(Ecore_Wl_Window *win)
{
@ -273,9 +284,7 @@ ecore_wl_window_show(Ecore_Wl_Window *win)
if (!win) return;
if (win->surface) return;
win->surface = wl_compositor_create_surface(_ecore_wl_disp->wl.compositor);
wl_surface_set_user_data(win->surface, win);
/* wl_surface_add_listener(win->surface, &_ecore_wl_surface_listener, win); */
ecore_wl_window_surface_create(win);
win->shell_surface =
wl_shell_get_shell_surface(_ecore_wl_disp->wl.shell, win->surface);