forked from enlightenment/efl
wayland_shm: pass the ecore_wl2_window to surface create
No longer extract this from the engine info.
This commit is contained in:
parent
d1a4f38a96
commit
2b3654c1fd
|
@ -91,9 +91,12 @@ _evas_dmabuf_surface_wait(Dmabuf_Surface *s)
|
||||||
|
|
||||||
if (!best && (eina_list_count(s->buffers) < MAX_BUFFERS))
|
if (!best && (eina_list_count(s->buffers) < MAX_BUFFERS))
|
||||||
{
|
{
|
||||||
Outbuf *ob;
|
Ecore_Wl2_Display *ewd;
|
||||||
ob = s->surface->ob;
|
|
||||||
best = ecore_wl2_buffer_create(ob->ewd, s->w, s->h, s->alpha);
|
ewd = ecore_wl2_window_display_get(s->surface->wl2_win);
|
||||||
|
EINA_SAFETY_ON_NULL_RETURN_VAL(ewd, NULL);
|
||||||
|
|
||||||
|
best = ecore_wl2_buffer_create(ewd, s->w, s->h, s->alpha);
|
||||||
/* Start at -1 so it's age is incremented to 0 for first draw */
|
/* Start at -1 so it's age is incremented to 0 for first draw */
|
||||||
best->age = -1;
|
best->age = -1;
|
||||||
s->buffers = eina_list_append(s->buffers, best);
|
s->buffers = eina_list_append(s->buffers, best);
|
||||||
|
@ -133,7 +136,6 @@ _evas_dmabuf_surface_post(Surface *s, Eina_Rectangle *rects, unsigned int count)
|
||||||
{
|
{
|
||||||
Dmabuf_Surface *surface;
|
Dmabuf_Surface *surface;
|
||||||
Ecore_Wl2_Buffer *b;
|
Ecore_Wl2_Buffer *b;
|
||||||
Ecore_Wl2_Window *win;
|
|
||||||
|
|
||||||
surface = s->dmabuf;
|
surface = s->dmabuf;
|
||||||
b = surface->current;
|
b = surface->current;
|
||||||
|
@ -145,12 +147,10 @@ _evas_dmabuf_surface_post(Surface *s, Eina_Rectangle *rects, unsigned int count)
|
||||||
b->busy = EINA_TRUE;
|
b->busy = EINA_TRUE;
|
||||||
b->age = 0;
|
b->age = 0;
|
||||||
|
|
||||||
win = s->info->info.wl2_win;
|
ecore_wl2_window_buffer_attach(s->wl2_win, b->wl_buffer, 0, 0, EINA_FALSE);
|
||||||
|
ecore_wl2_window_damage(s->wl2_win, rects, count);
|
||||||
|
|
||||||
ecore_wl2_window_buffer_attach(win, b->wl_buffer, 0, 0, EINA_FALSE);
|
ecore_wl2_window_commit(s->wl2_win, EINA_TRUE);
|
||||||
ecore_wl2_window_damage(win, rects, count);
|
|
||||||
|
|
||||||
ecore_wl2_window_commit(win, EINA_TRUE);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -169,7 +169,7 @@ _evas_dmabuf_surface_destroy(Surface *s)
|
||||||
}
|
}
|
||||||
|
|
||||||
Surface *
|
Surface *
|
||||||
_evas_surface_create(Evas_Engine_Info_Wayland *info, Outbuf *ob)
|
_evas_surface_create(Ecore_Wl2_Window *win, Evas_Engine_Info_Wayland *info, Outbuf *ob)
|
||||||
{
|
{
|
||||||
Surface *out = NULL;
|
Surface *out = NULL;
|
||||||
Dmabuf_Surface *surf = NULL;
|
Dmabuf_Surface *surf = NULL;
|
||||||
|
@ -180,8 +180,9 @@ _evas_surface_create(Evas_Engine_Info_Wayland *info, Outbuf *ob)
|
||||||
if (!out) return NULL;
|
if (!out) return NULL;
|
||||||
out->info = info;
|
out->info = info;
|
||||||
out->ob = ob;
|
out->ob = ob;
|
||||||
|
out->wl2_win = win;
|
||||||
|
|
||||||
ewd = ecore_wl2_window_display_get(info->info.wl2_win);
|
ewd = ecore_wl2_window_display_get(win);
|
||||||
if (ecore_wl2_display_shm_get(ewd))
|
if (ecore_wl2_display_shm_get(ewd))
|
||||||
types |= ECORE_WL2_BUFFER_SHM;
|
types |= ECORE_WL2_BUFFER_SHM;
|
||||||
if (ecore_wl2_display_dmabuf_get(ewd))
|
if (ecore_wl2_display_dmabuf_get(ewd))
|
||||||
|
|
|
@ -78,6 +78,7 @@ typedef struct _Surface Surface;
|
||||||
struct _Surface
|
struct _Surface
|
||||||
{
|
{
|
||||||
Outbuf *ob;
|
Outbuf *ob;
|
||||||
|
Ecore_Wl2_Window *wl2_win;
|
||||||
Dmabuf_Surface *dmabuf;
|
Dmabuf_Surface *dmabuf;
|
||||||
Evas_Engine_Info_Wayland *info;
|
Evas_Engine_Info_Wayland *info;
|
||||||
struct
|
struct
|
||||||
|
@ -124,7 +125,7 @@ struct _Outbuf
|
||||||
Eina_Bool dirty : 1;
|
Eina_Bool dirty : 1;
|
||||||
};
|
};
|
||||||
|
|
||||||
Surface *_evas_surface_create(Evas_Engine_Info_Wayland *info, Outbuf *ob);
|
Surface *_evas_surface_create(Ecore_Wl2_Window *win, Evas_Engine_Info_Wayland *info, Outbuf *ob);
|
||||||
|
|
||||||
Outbuf *_evas_outbuf_setup(int w, int h, Evas_Engine_Info_Wayland *info);
|
Outbuf *_evas_outbuf_setup(int w, int h, Evas_Engine_Info_Wayland *info);
|
||||||
void _evas_outbuf_free(Outbuf *ob);
|
void _evas_outbuf_free(Outbuf *ob);
|
||||||
|
|
|
@ -28,7 +28,7 @@ _evas_outbuf_setup(int w, int h, Evas_Engine_Info_Wayland *info)
|
||||||
ob->priv.destination_alpha = info->info.destination_alpha;
|
ob->priv.destination_alpha = info->info.destination_alpha;
|
||||||
ob->ewd = ecore_wl2_window_display_get(info->info.wl2_win);
|
ob->ewd = ecore_wl2_window_display_get(info->info.wl2_win);
|
||||||
|
|
||||||
ob->surface = _evas_surface_create(info, ob);
|
ob->surface = _evas_surface_create(info->info.wl2_win, info, ob);
|
||||||
if (!ob->surface) goto surf_err;
|
if (!ob->surface) goto surf_err;
|
||||||
|
|
||||||
eina_array_step_set(&ob->priv.onebuf_regions, sizeof(Eina_Array), 8);
|
eina_array_step_set(&ob->priv.onebuf_regions, sizeof(Eina_Array), 8);
|
||||||
|
|
Loading…
Reference in New Issue