#ifndef EVAS_ENGINE_H # define EVAS_ENGINE_H # include # include # ifdef BUILD_ENGINE_SOFTWARE_XLIB # include # include # include # include # include // xres - dpi # endif # ifdef BUILD_ENGINE_SOFTWARE_XCB # include # include # include # endif extern int _evas_engine_soft_x11_log_dom; # ifdef ERR # undef ERR # endif # define ERR(...) EINA_LOG_DOM_ERR(_evas_engine_soft_x11_log_dom, __VA_ARGS__) # ifdef DBG # undef DBG # endif # define DBG(...) EINA_LOG_DOM_DBG(_evas_engine_soft_x11_log_dom, __VA_ARGS__) # ifdef INF # undef INF # endif # define INF(...) EINA_LOG_DOM_INFO(_evas_engine_soft_x11_log_dom, __VA_ARGS__) # ifdef WRN # undef WRN # endif # define WRN(...) EINA_LOG_DOM_WARN(_evas_engine_soft_x11_log_dom, __VA_ARGS__) # ifdef CRI # undef CRI # endif # define CRI(...) \ EINA_LOG_DOM_CRIT(_evas_engine_soft_x11_log_dom, __VA_ARGS__) typedef enum _Outbuf_Depth Outbuf_Depth; enum _Outbuf_Depth { OUTBUF_DEPTH_NONE, OUTBUF_DEPTH_INHERIT, OUTBUF_DEPTH_RGB_16BPP_565_565_DITHERED, OUTBUF_DEPTH_RGB_16BPP_555_555_DITHERED, OUTBUF_DEPTH_RGB_16BPP_444_444_DITHERED, OUTBUF_DEPTH_RGB_16BPP_565_444_DITHERED, OUTBUF_DEPTH_RGB_32BPP_888_8888, OUTBUF_DEPTH_LAST }; enum { MODE_FULL, MODE_COPY, MODE_DOUBLE, MODE_TRIPLE, MODE_QUADRUPLE }; typedef struct _Outbuf Outbuf; struct _Outbuf { Outbuf_Depth depth; int w, h; int rot; int onebuf; struct { Convert_Pal *pal; union { # ifdef BUILD_ENGINE_SOFTWARE_XLIB struct { Display *disp; Window win; Pixmap mask; Visual *vis; Colormap cmap; int depth, imdepth, shm; GC gc, gcm; unsigned char swap : 1; unsigned char bit_swap : 1; } xlib; # endif # ifdef BUILD_ENGINE_SOFTWARE_XCB struct { xcb_connection_t *conn; xcb_screen_t *screen; xcb_window_t win; xcb_pixmap_t mask; xcb_visualtype_t *visual; xcb_colormap_t cmap; int depth, imdepth, shm; xcb_gcontext_t gc, gcm; unsigned char swap : 1; unsigned char bit_swap : 1; } xcb; # endif } x11; struct { DATA32 r, g, b; } mask; /* 1 big buffer for updates - flush on idle_flush */ RGBA_Image *onebuf; Eina_Array onebuf_regions; void *swapper; /* a list of pending regions to write to the target */ Eina_List *pending_writes; /* a list of previous frame pending regions to write to the target */ Eina_List *prev_pending_writes; unsigned char mask_dither : 1; unsigned char destination_alpha : 1; unsigned char debug : 1; unsigned char synced : 1; } priv; }; void evas_software_xlib_x_init(void); void evas_software_xcb_init(void); #endif