big patch from Samsung SAIT (Advanced research group) for async multi-frame
[framework/uifw/evas.git] / src / modules / engines / gl_x11 / Evas_Engine_GL_X11.h
1 #ifndef _EVAS_ENGINE_GL_X11_H
2 #define _EVAS_ENGINE_GL_X11_H
3
4 #include <X11/Xlib.h>
5
6 typedef struct _Evas_Engine_Info_GL_X11              Evas_Engine_Info_GL_X11;
7
8 struct _Evas_Engine_Info_GL_X11
9 {
10    /* PRIVATE - don't mess with this baby or evas will poke its tongue out */
11    /* at you and make nasty noises */
12    Evas_Engine_Info magic;
13
14    /* engine specific data & parameters it needs to set up */
15    struct {
16       Display     *display;
17       Drawable     drawable;
18       Visual      *visual;
19       Colormap     colormap;
20       int          depth;
21       int          screen;
22       int          rotation;
23       unsigned int destination_alpha  : 1;
24    } info;
25    /* engine specific function calls to query stuff about the destination */
26    /* engine (what visual & colormap & depth to use, performance info etc. */
27    struct {
28       Visual *  (*best_visual_get)   (Evas_Engine_Info_GL_X11 *einfo);
29       Colormap  (*best_colormap_get) (Evas_Engine_Info_GL_X11 *einfo);
30       int       (*best_depth_get)    (Evas_Engine_Info_GL_X11 *einfo);
31    } func;
32
33    struct {
34       void      (*pre_swap)          (void *data, Evas *e);
35       void      (*post_swap)         (void *data, Evas *e);
36       
37       void       *data; // data for callback calls
38    } callback;
39
40    /* non-blocking or blocking mode */
41    Evas_Engine_Render_Mode render_mode;
42    
43    unsigned char vsync : 1; // does nothing right now
44    unsigned char indirect : 1; // use indirect rendering
45 };
46 #endif
47
48