{
Render_Engine *re = NULL;
+ LOGFN(__FILE__, __LINE__, __FUNCTION__);
+
/* try to allocate a new render engine */
if (!(re = calloc(1, sizeof(Render_Engine))))
return NULL;
{
Tilebuf_Rect *r, *rects;
+ LOGFN(__FILE__, __LINE__, __FUNCTION__);
+
if (r1)
{
EINA_INLIST_FOREACH(EINA_INLIST_GET(r1), r)
Evas_Public_Data *epd;
Render_Engine *re = NULL;
+ LOGFN(__FILE__, __LINE__, __FUNCTION__);
+
/* try to cast the engine info to our engine info */
if (!(info = (Evas_Engine_Info_Wayland_Shm *)einfo))
return 0;
{
Render_Engine *re;
+ LOGFN(__FILE__, __LINE__, __FUNCTION__);
+
if ((re = data))
{
re->outbuf_free(re->ob);
{
Render_Engine *re;
+ LOGFN(__FILE__, __LINE__, __FUNCTION__);
+
if (!(re = (Render_Engine *)data)) return;
re->outbuf_reconfigure(re->ob, w, h,
re->ob->rotation, re->ob->depth,
Tilebuf_Rect *rect;
Eina_Bool first_rect = EINA_FALSE;
+ LOGFN(__FILE__, __LINE__, __FUNCTION__);
+
#define CLEAR_PREV_RECTS(x) \
do { \
if (re->prev_rects[x]) \
{
Render_Engine *re;
+ LOGFN(__FILE__, __LINE__, __FUNCTION__);
+
if (render_mode == EVAS_RENDER_MODE_ASYNC_INIT) return;
if (!(re = (Render_Engine *)data)) return;
{
Render_Engine *re;
+ LOGFN(__FILE__, __LINE__, __FUNCTION__);
+
if (render_mode == EVAS_RENDER_MODE_ASYNC_INIT) return;
if (!(re = (Render_Engine *)data)) return;
{
Render_Engine *re;
+ LOGFN(__FILE__, __LINE__, __FUNCTION__);
+
if (!(re = (Render_Engine *)data)) return;
re->outbuf_idle_flush(re->ob);
}
{
Outbuf *ob = NULL;
+ LOGFN(__FILE__, __LINE__, __FUNCTION__);
+
/* try to allocate a new Outbuf */
if (!(ob = calloc(1, sizeof(Outbuf))))
return NULL;
void
evas_swapbuf_free(Outbuf *ob)
{
+ LOGFN(__FILE__, __LINE__, __FUNCTION__);
+
/* check for valid output buffer */
if (!ob) return;
evas_swapbuf_idle_flush(ob);
eina_array_flush(&ob->priv.onebuf_regions);
- /* destroy the wayland shm pool */
- /* _evas_swapbuf_pool_destroy(ob); */
-
/* free the allocated structure */
free(ob);
}
void
evas_swapbuf_reconfigure(Outbuf *ob, int w, int h, unsigned int rotation, Outbuf_Depth depth, Eina_Bool alpha)
{
+ LOGFN(__FILE__, __LINE__, __FUNCTION__);
+
/* check for valid output buffer */
if (!ob) return;
RGBA_Image *img;
Eina_Rectangle *rect;
+ LOGFN(__FILE__, __LINE__, __FUNCTION__);
+
RECTS_CLIP_TO_RECT(x, y, w, h, 0, 0, ob->w, ob->h);
if ((w <= 0) || (h <= 0)) return NULL;
DATA8 *dst;
int depth = 32, bpp = 0, bpl = 0, wid = 0;
+ LOGFN(__FILE__, __LINE__, __FUNCTION__);
+
/* check for valid output buffer */
if (!ob) return;
func =
evas_common_convert_func_get(0, w, h, depth,
RED_MASK, GREEN_MASK, BLUE_MASK,
- PAL_MODE_NONE, ob->rotation);
+ PAL_MODE_RGB332, ob->rotation);
}
else if ((ob->rotation == 90) || (ob->rotation == 270))
{
func =
evas_common_convert_func_get(0, h, w, depth,
RED_MASK, GREEN_MASK, BLUE_MASK,
- PAL_MODE_NONE, ob->rotation);
+ PAL_MODE_RGB332, ob->rotation);
}
/* make sure we have a valid convert function */
RGBA_Image *img;
unsigned int n = 0, i = 0;
+ LOGFN(__FILE__, __LINE__, __FUNCTION__);
+
/* check for valid output buffer */
if (!ob) return;
void
evas_swapbuf_idle_flush(Outbuf *ob)
{
+ LOGFN(__FILE__, __LINE__, __FUNCTION__);
+
/* check for valid output buffer */
if (!ob) return;
{
int mode = 0;
+ LOGFN(__FILE__, __LINE__, __FUNCTION__);
+
if (!ob->priv.swapper) return MODE_FULL;
mode = evas_swapper_buffer_state_get(ob->priv.swapper);
return mode;
int i = 0;
char *num_buffers;
+ LOGFN(__FILE__, __LINE__, __FUNCTION__);
+
/* try to allocate a new swapper */
if (!(ws = calloc(1, sizeof(Wl_Swapper))))
return NULL;
{
int n = 0;
+ LOGFN(__FILE__, __LINE__, __FUNCTION__);
+
/* check for valid swapper */
if (!ws) return;
{
int i = 0;
+ LOGFN(__FILE__, __LINE__, __FUNCTION__);
+
/* check for valid swapper */
if (!ws) return;
void *
evas_swapper_buffer_map(Wl_Swapper *ws)
{
+ LOGFN(__FILE__, __LINE__, __FUNCTION__);
+
/* check for valid swapper */
if (!ws) return NULL;
void
evas_swapper_buffer_unmap(Wl_Swapper *ws)
{
+ LOGFN(__FILE__, __LINE__, __FUNCTION__);
+
/* check for valid swapper */
if (!ws) return;
{
int i = 0, n = 0, count = 0;
+ LOGFN(__FILE__, __LINE__, __FUNCTION__);
+
for (i = 0; i < ws->buff_num; i++)
{
n = (ws->buff_num + ws->buff_cur - (i)) % ws->buff_num;
{
int i = 0;
+ LOGFN(__FILE__, __LINE__, __FUNCTION__);
+
/* check for valid swapper */
if (!ws) return;
size_t size;
int fd = 0;
+ LOGFN(__FILE__, __LINE__, __FUNCTION__);
+
/* make sure swapper has a shm */
if (!ws->shm) return EINA_FALSE;
static void
_evas_swapper_shm_pool_free(Wl_Swapper *ws)
{
+ LOGFN(__FILE__, __LINE__, __FUNCTION__);
+
/* check for valid swapper */
if (!ws) return;
unsigned int format = WL_SHM_FORMAT_XRGB8888;
size_t size;
+ LOGFN(__FILE__, __LINE__, __FUNCTION__);
+
/* make sure swapper has a shm */
if (!ws->shm) return EINA_FALSE;
static void
_evas_swapper_buffer_free(Wl_Buffer *wb)
{
+ LOGFN(__FILE__, __LINE__, __FUNCTION__);
+
/* check for valid buffer */
if (!wb) return;
_evas_swapper_buffer_put(Wl_Swapper *ws, Wl_Buffer *wb, Eina_Rectangle *rects, unsigned int count)
{
Eina_Rectangle *rect;
+ static struct wl_buffer *sent;
+
+ LOGFN(__FILE__, __LINE__, __FUNCTION__);
/* check for valid swapper */
if (!ws) return;
if ((!wb->data) || (!wb->buffer))
{
/* call function to mmap buffer data */
- if (!_evas_swapper_buffer_new(ws, wb))
- return;
+ /* if (!_evas_swapper_buffer_new(ws, wb)) */
+ return;
}
+ if ((!rects) || (count == 0)) return;
+
rect = eina_rectangle_new(0, 0, 0, 0);
if (rects)
{
}
/* surface attach */
- wl_surface_attach(ws->surface, wb->buffer, 0, 0);
+ if (sent != wb->buffer)
+ {
+ wl_surface_attach(ws->surface, wb->buffer, 0, 0);
+ sent = wb->buffer;
+ }
/* surface damage */
/* printf("Damage Surface: %d %d %d %d\n", rect->x, rect->y, rect->w, rect->h); */
/* surface commit */
wl_surface_commit(ws->surface);
- wb->valid = EINA_TRUE;
+ /* wb->valid = EINA_FALSE; */
}
static void
{
Wl_Buffer *wb = NULL;
+ LOGFN(__FILE__, __LINE__, __FUNCTION__);
+
/* try to get out Wl_Buffer struct */
if (!(wb = data)) return;