forked from enlightenment/efl
Evas: Support cserve2 for xcb engine.
SVN revision: 73033
This commit is contained in:
parent
725a3ed4db
commit
0d1c4661ab
|
@ -35,6 +35,7 @@ AM_CPPFLAGS = \
|
||||||
-I. \
|
-I. \
|
||||||
-I$(top_srcdir)/src/lib \
|
-I$(top_srcdir)/src/lib \
|
||||||
-I$(top_srcdir)/src/lib/include \
|
-I$(top_srcdir)/src/lib/include \
|
||||||
|
-I$(top_srcdir)/src/lib/cserve2 \
|
||||||
-I$(top_srcdir)/src/modules/engines \
|
-I$(top_srcdir)/src/modules/engines \
|
||||||
@FREETYPE_CFLAGS@ \
|
@FREETYPE_CFLAGS@ \
|
||||||
@PIXMAN_CFLAGS@ \
|
@PIXMAN_CFLAGS@ \
|
||||||
|
|
|
@ -1,9 +1,17 @@
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
# include <config.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <pixman.h>
|
||||||
|
|
||||||
|
#ifdef EVAS_CSERVE2
|
||||||
|
# include "evas_cs2_private.h"
|
||||||
|
#endif
|
||||||
#include "evas_common.h"
|
#include "evas_common.h"
|
||||||
#include "evas_macros.h"
|
#include "evas_macros.h"
|
||||||
#include "evas_xcb_outbuf.h"
|
#include "evas_xcb_outbuf.h"
|
||||||
#include "evas_xcb_buffer.h"
|
#include "evas_xcb_buffer.h"
|
||||||
#include "evas_xcb_color.h"
|
#include "evas_xcb_color.h"
|
||||||
#include <pixman.h>
|
|
||||||
|
|
||||||
/* local structures */
|
/* local structures */
|
||||||
typedef struct _Outbuf_Region Outbuf_Region;
|
typedef struct _Outbuf_Region Outbuf_Region;
|
||||||
|
@ -46,7 +54,13 @@ evas_software_xcb_outbuf_free(Outbuf *buf)
|
||||||
eina_list_remove_list(buf->priv.pending_writes,
|
eina_list_remove_list(buf->priv.pending_writes,
|
||||||
buf->priv.pending_writes);
|
buf->priv.pending_writes);
|
||||||
obr = im->extended_info;
|
obr = im->extended_info;
|
||||||
evas_cache_image_drop(&im->cache_entry);
|
#ifdef EVAS_CSERVE2
|
||||||
|
if (evas_cserve2_use_get())
|
||||||
|
evas_cache2_image_close(&im->cache_entry);
|
||||||
|
else
|
||||||
|
#endif
|
||||||
|
evas_cache_image_drop(&im->cache_entry);
|
||||||
|
|
||||||
if (obr->xcbob) _unfind_xcbob(obr->xcbob, EINA_FALSE);
|
if (obr->xcbob) _unfind_xcbob(obr->xcbob, EINA_FALSE);
|
||||||
if (obr->mask) _unfind_xcbob(obr->mask, EINA_FALSE);
|
if (obr->mask) _unfind_xcbob(obr->mask, EINA_FALSE);
|
||||||
free(obr);
|
free(obr);
|
||||||
|
@ -281,11 +295,25 @@ evas_software_xcb_outbuf_new_region_for_update(Outbuf *buf, int x, int y, int w,
|
||||||
free(obr);
|
free(obr);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
im =
|
#ifdef EVAS_CSERVE2
|
||||||
(RGBA_Image *)evas_cache_image_data(evas_common_image_cache_get(),
|
if (evas_cserve2_use_get())
|
||||||
buf->w, buf->h,
|
{
|
||||||
(DATA32 *)evas_software_xcb_output_buffer_data(obr->xcbob, &bpl),
|
im =
|
||||||
alpha, EVAS_COLORSPACE_ARGB8888);
|
(RGBA_Image *)evas_cache2_image_data(evas_common_image_cache2_get(),
|
||||||
|
buf->w, buf->h,
|
||||||
|
(DATA32 *)evas_software_xcb_output_buffer_data(obr->xcbob, &bpl),
|
||||||
|
alpha, EVAS_COLORSPACE_ARGB8888);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
im =
|
||||||
|
(RGBA_Image *)evas_cache_image_data(evas_common_image_cache_get(),
|
||||||
|
buf->w, buf->h,
|
||||||
|
(DATA32 *)evas_software_xcb_output_buffer_data(obr->xcbob, &bpl),
|
||||||
|
alpha, EVAS_COLORSPACE_ARGB8888);
|
||||||
|
}
|
||||||
|
|
||||||
if (!im)
|
if (!im)
|
||||||
{
|
{
|
||||||
evas_software_xcb_output_buffer_free(obr->xcbob, EINA_FALSE);
|
evas_software_xcb_output_buffer_free(obr->xcbob, EINA_FALSE);
|
||||||
|
@ -306,15 +334,32 @@ evas_software_xcb_outbuf_new_region_for_update(Outbuf *buf, int x, int y, int w,
|
||||||
{
|
{
|
||||||
int bw = 0, bh = 0;
|
int bw = 0, bh = 0;
|
||||||
|
|
||||||
im =
|
#ifdef EVAS_CSERVE2
|
||||||
(RGBA_Image *)evas_cache_image_empty(evas_common_image_cache_get());
|
if (evas_cserve2_use_get())
|
||||||
|
{
|
||||||
|
im =
|
||||||
|
(RGBA_Image *)evas_cache2_image_empty(evas_common_image_cache2_get());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
im =
|
||||||
|
(RGBA_Image *)evas_cache_image_empty(evas_common_image_cache_get());
|
||||||
|
}
|
||||||
|
|
||||||
if (!im)
|
if (!im)
|
||||||
{
|
{
|
||||||
free(obr);
|
free(obr);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
im->cache_entry.flags.alpha |= (alpha ? 1 : 0);
|
im->cache_entry.flags.alpha |= (alpha ? 1 : 0);
|
||||||
evas_cache_image_surface_alloc(&im->cache_entry, buf->w, buf->h);
|
#ifdef EVAS_CSERVE2
|
||||||
|
if (evas_cserve2_use_get())
|
||||||
|
evas_cache2_image_surface_alloc(&im->cache_entry, buf->w, buf->h);
|
||||||
|
else
|
||||||
|
#endif
|
||||||
|
evas_cache_image_surface_alloc(&im->cache_entry, buf->w, buf->h);
|
||||||
|
|
||||||
im->extended_info = obr;
|
im->extended_info = obr;
|
||||||
if ((buf->rot == 0) || (buf->rot == 180))
|
if ((buf->rot == 0) || (buf->rot == 180))
|
||||||
{
|
{
|
||||||
|
@ -333,7 +378,13 @@ evas_software_xcb_outbuf_new_region_for_update(Outbuf *buf, int x, int y, int w,
|
||||||
bw, bh, use_shm, NULL);
|
bw, bh, use_shm, NULL);
|
||||||
if (!obr->xcbob)
|
if (!obr->xcbob)
|
||||||
{
|
{
|
||||||
evas_cache_image_drop(&im->cache_entry);
|
#ifdef EVAS_CSERVE2
|
||||||
|
if (evas_cserve2_use_get())
|
||||||
|
evas_cache2_image_close(&im->cache_entry);
|
||||||
|
else
|
||||||
|
#endif
|
||||||
|
evas_cache_image_drop(&im->cache_entry);
|
||||||
|
|
||||||
free(obr);
|
free(obr);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -381,11 +432,25 @@ evas_software_xcb_outbuf_new_region_for_update(Outbuf *buf, int x, int y, int w,
|
||||||
free(obr);
|
free(obr);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
im =
|
#ifdef EVAS_CSERVE2
|
||||||
(RGBA_Image *)evas_cache_image_data(evas_common_image_cache_get(),
|
if (evas_cserve2_use_get())
|
||||||
w, h,
|
{
|
||||||
(DATA32 *)evas_software_xcb_output_buffer_data(obr->xcbob, &bpl),
|
im =
|
||||||
alpha, EVAS_COLORSPACE_ARGB8888);
|
(RGBA_Image *)evas_cache2_image_data(evas_common_image_cache2_get(),
|
||||||
|
w, h,
|
||||||
|
(DATA32 *)evas_software_xcb_output_buffer_data(obr->xcbob, &bpl),
|
||||||
|
alpha, EVAS_COLORSPACE_ARGB8888);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
im =
|
||||||
|
(RGBA_Image *)evas_cache_image_data(evas_common_image_cache_get(),
|
||||||
|
w, h,
|
||||||
|
(DATA32 *)evas_software_xcb_output_buffer_data(obr->xcbob, &bpl),
|
||||||
|
alpha, EVAS_COLORSPACE_ARGB8888);
|
||||||
|
}
|
||||||
|
|
||||||
if (!im)
|
if (!im)
|
||||||
{
|
{
|
||||||
_unfind_xcbob(obr->xcbob, EINA_FALSE);
|
_unfind_xcbob(obr->xcbob, EINA_FALSE);
|
||||||
|
@ -404,15 +469,32 @@ evas_software_xcb_outbuf_new_region_for_update(Outbuf *buf, int x, int y, int w,
|
||||||
{
|
{
|
||||||
int bw = 0, bh = 0;
|
int bw = 0, bh = 0;
|
||||||
|
|
||||||
im =
|
#ifdef EVAS_CSERVE2
|
||||||
(RGBA_Image *)evas_cache_image_empty(evas_common_image_cache_get());
|
if (evas_cserve2_use_get())
|
||||||
|
{
|
||||||
|
im =
|
||||||
|
(RGBA_Image *)evas_cache2_image_empty(evas_common_image_cache2_get());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
im =
|
||||||
|
(RGBA_Image *)evas_cache_image_empty(evas_common_image_cache_get());
|
||||||
|
}
|
||||||
|
|
||||||
if (!im)
|
if (!im)
|
||||||
{
|
{
|
||||||
free(obr);
|
free(obr);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
im->cache_entry.flags.alpha |= (alpha ? 1 : 0);
|
im->cache_entry.flags.alpha |= (alpha ? 1 : 0);
|
||||||
evas_cache_image_surface_alloc(&im->cache_entry, w, h);
|
#ifdef EVAS_CSERVE2
|
||||||
|
if (evas_cserve2_use_get())
|
||||||
|
evas_cache2_image_surface_alloc(&im->cache_entry, w, h);
|
||||||
|
else
|
||||||
|
#endif
|
||||||
|
evas_cache_image_surface_alloc(&im->cache_entry, w, h);
|
||||||
|
|
||||||
im->extended_info = obr;
|
im->extended_info = obr;
|
||||||
if ((buf->rot == 0) || (buf->rot == 180))
|
if ((buf->rot == 0) || (buf->rot == 180))
|
||||||
{
|
{
|
||||||
|
@ -429,7 +511,12 @@ evas_software_xcb_outbuf_new_region_for_update(Outbuf *buf, int x, int y, int w,
|
||||||
buf->priv.x11.xcb.depth, bw, bh, use_shm, NULL);
|
buf->priv.x11.xcb.depth, bw, bh, use_shm, NULL);
|
||||||
if (!obr->xcbob)
|
if (!obr->xcbob)
|
||||||
{
|
{
|
||||||
evas_cache_image_drop(&im->cache_entry);
|
#ifdef EVAS_CSERVE2
|
||||||
|
if (evas_cserve2_use_get())
|
||||||
|
evas_cache2_image_close(&im->cache_entry);
|
||||||
|
else
|
||||||
|
#endif
|
||||||
|
evas_cache_image_drop(&im->cache_entry);
|
||||||
free(obr);
|
free(obr);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -567,7 +654,13 @@ evas_software_xcb_outbuf_flush(Outbuf *buf)
|
||||||
eina_list_remove_list(buf->priv.prev_pending_writes,
|
eina_list_remove_list(buf->priv.prev_pending_writes,
|
||||||
buf->priv.prev_pending_writes);
|
buf->priv.prev_pending_writes);
|
||||||
obr = im->extended_info;
|
obr = im->extended_info;
|
||||||
evas_cache_image_drop(&im->cache_entry);
|
# ifdef EVAS_CSERVE2
|
||||||
|
if (evas_cserve2_use_get())
|
||||||
|
evas_cache2_image_close(&im->cache_entry);
|
||||||
|
else
|
||||||
|
# endif
|
||||||
|
evas_cache_image_drop(&im->cache_entry);
|
||||||
|
|
||||||
if (obr->xcbob) _unfind_xcbob(obr->xcbob, EINA_FALSE);
|
if (obr->xcbob) _unfind_xcbob(obr->xcbob, EINA_FALSE);
|
||||||
if (obr->mask) _unfind_xcbob(obr->mask, EINA_FALSE);
|
if (obr->mask) _unfind_xcbob(obr->mask, EINA_FALSE);
|
||||||
free(obr);
|
free(obr);
|
||||||
|
@ -586,11 +679,21 @@ evas_software_xcb_outbuf_flush(Outbuf *buf)
|
||||||
eina_list_remove_list(buf->priv.pending_writes,
|
eina_list_remove_list(buf->priv.pending_writes,
|
||||||
buf->priv.pending_writes);
|
buf->priv.pending_writes);
|
||||||
obr = im->extended_info;
|
obr = im->extended_info;
|
||||||
evas_cache_image_drop(&im->cache_entry);
|
# ifdef EVAS_CSERVE2
|
||||||
|
if (evas_cserve2_use_get())
|
||||||
|
evas_cache2_image_close(&im->cache_entry);
|
||||||
|
else
|
||||||
|
# endif
|
||||||
|
evas_cache_image_drop(&im->cache_entry);
|
||||||
if (obr->xcbob) _unfind_xcbob(obr->xcbob, EINA_FALSE);
|
if (obr->xcbob) _unfind_xcbob(obr->xcbob, EINA_FALSE);
|
||||||
if (obr->mask) _unfind_xcbob(obr->mask, EINA_FALSE);
|
if (obr->mask) _unfind_xcbob(obr->mask, EINA_FALSE);
|
||||||
free(obr);
|
free(obr);
|
||||||
evas_cache_image_drop(&im->cache_entry);
|
# ifdef EVAS_CSERVE2
|
||||||
|
if (evas_cserve2_use_get())
|
||||||
|
evas_cache2_image_close(&im->cache_entry);
|
||||||
|
else
|
||||||
|
# endif
|
||||||
|
evas_cache_image_drop(&im->cache_entry);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
@ -613,7 +716,12 @@ evas_software_xcb_outbuf_idle_flush(Outbuf *buf)
|
||||||
if (obr->mask)
|
if (obr->mask)
|
||||||
evas_software_xcb_output_buffer_free(obr->mask, EINA_FALSE);
|
evas_software_xcb_output_buffer_free(obr->mask, EINA_FALSE);
|
||||||
free(obr);
|
free(obr);
|
||||||
evas_cache_image_drop(&im->cache_entry);
|
# ifdef EVAS_CSERVE2
|
||||||
|
if (evas_cserve2_use_get())
|
||||||
|
evas_cache2_image_close(&im->cache_entry);
|
||||||
|
else
|
||||||
|
# endif
|
||||||
|
evas_cache_image_drop(&im->cache_entry);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -629,7 +737,12 @@ evas_software_xcb_outbuf_idle_flush(Outbuf *buf)
|
||||||
eina_list_remove_list(buf->priv.prev_pending_writes,
|
eina_list_remove_list(buf->priv.prev_pending_writes,
|
||||||
buf->priv.prev_pending_writes);
|
buf->priv.prev_pending_writes);
|
||||||
obr = im->extended_info;
|
obr = im->extended_info;
|
||||||
evas_cache_image_drop(&im->cache_entry);
|
# ifdef EVAS_CSERVE2
|
||||||
|
if (evas_cserve2_use_get())
|
||||||
|
evas_cache2_image_close(&im->cache_entry);
|
||||||
|
else
|
||||||
|
# endif
|
||||||
|
evas_cache_image_drop(&im->cache_entry);
|
||||||
if (obr->xcbob) _unfind_xcbob(obr->xcbob, EINA_FALSE);
|
if (obr->xcbob) _unfind_xcbob(obr->xcbob, EINA_FALSE);
|
||||||
if (obr->mask) _unfind_xcbob(obr->mask, EINA_FALSE);
|
if (obr->mask) _unfind_xcbob(obr->mask, EINA_FALSE);
|
||||||
free(obr);
|
free(obr);
|
||||||
|
|
Loading…
Reference in New Issue