xkb: Don't call exit on failure in weston_compositor_xkb_init()
[profile/ivi/weston.git] / src / compositor.h
index 728be6f..c7c583e 100644 (file)
 #include "../shared/config-parser.h"
 #include "weston-egl-ext.h"
 
+#define ARRAY_LENGTH(a) (sizeof (a) / sizeof (a)[0])
+
+#define container_of(ptr, type, member) ({                             \
+       const __typeof__( ((type *)0)->member ) *__mptr = (ptr);        \
+       (type *)( (char *)__mptr - offsetof(type,member) );})
 
 struct weston_transform {
        struct weston_matrix matrix;
@@ -160,7 +165,8 @@ struct weston_output {
        int32_t mm_width, mm_height;
        struct weston_border border;
        pixman_region32_t region;
-       pixman_region32_t previous_damage;
+       int current_buffer;
+       pixman_region32_t buffer_damage[2];
        int repaint_needed;
        int repaint_scheduled;
        struct weston_output_zoom zoom;
@@ -264,6 +270,7 @@ struct weston_layer {
 
 struct weston_plane {
        pixman_region32_t damage;
+       pixman_region32_t opaque;
        int32_t x, y;
 };
 
@@ -276,13 +283,11 @@ struct weston_renderer {
 };
 
 struct weston_compositor {
-       struct wl_shm *shm;
        struct wl_signal destroy_signal;
 
        EGLDisplay egl_display;
        EGLContext egl_context;
        EGLConfig egl_config;
-       GLuint fbo;
        struct weston_shader texture_shader_rgba;
        struct weston_shader texture_shader_rgbx;
        struct weston_shader texture_shader_egl_external;
@@ -295,6 +300,7 @@ struct weston_compositor {
        struct weston_shell_interface shell_interface;
 
        struct wl_signal activate_signal;
+       struct wl_signal kill_signal;
        struct wl_signal lock_signal;
        struct wl_signal unlock_signal;
 
@@ -410,7 +416,7 @@ struct weston_surface {
        struct wl_list layer_link;
        struct weston_shader *shader;
        GLfloat color[4];
-       GLfloat alpha;
+       float alpha;
        struct weston_plane *plane;
 
        /* Surface geometry state, mutable.
@@ -418,7 +424,7 @@ struct weston_surface {
         * That includes the transformations referenced from the list.
         */
        struct {
-               GLfloat x, y; /* surface translation on display */
+               float x, y; /* surface translation on display */
                int32_t width, height;
 
                /* struct weston_transform */
@@ -466,6 +472,28 @@ struct weston_surface {
        struct wl_buffer *buffer;
        struct wl_listener buffer_destroy_listener;
 
+       /* All the pending state, that wl_surface.commit will apply. */
+       struct {
+               /* wl_surface.attach */
+               int remove_contents;
+               struct wl_buffer *buffer;
+               struct wl_listener buffer_destroy_listener;
+               int32_t sx;
+               int32_t sy;
+
+               /* wl_surface.damage */
+               pixman_region32_t damage;
+
+               /* wl_surface.set_opaque_region */
+               pixman_region32_t opaque;
+
+               /* wl_surface.set_input_region */
+               pixman_region32_t input;
+
+               /* wl_surface.frame */
+               struct wl_list frame_callback_list;
+       } pending;
+
        /*
         * If non-NULL, this function will be called on surface::attach after
         * a new buffer has been set up for this surface. The integer params
@@ -489,11 +517,11 @@ weston_surface_to_global_fixed(struct weston_surface *surface,
                               wl_fixed_t *x, wl_fixed_t *y);
 void
 weston_surface_to_global_float(struct weston_surface *surface,
-                              GLfloat sx, GLfloat sy, GLfloat *x, GLfloat *y);
+                              float sx, float sy, float *x, float *y);
 
 void
 weston_surface_from_global_float(struct weston_surface *surface,
-                                GLfloat x, GLfloat y, GLfloat *sx, GLfloat *sy);
+                                float x, float y, float *sx, float *sy);
 void
 weston_surface_from_global(struct weston_surface *surface,
                           int32_t x, int32_t y, int32_t *sx, int32_t *sy);
@@ -635,22 +663,19 @@ weston_surface_create(struct weston_compositor *compositor);
 
 void
 weston_surface_configure(struct weston_surface *surface,
-                        GLfloat x, GLfloat y, int width, int height);
+                        float x, float y, int width, int height);
 
 void
 weston_surface_restack(struct weston_surface *surface, struct wl_list *below);
 
 void
 weston_surface_set_position(struct weston_surface *surface,
-                           GLfloat x, GLfloat y);
+                           float x, float y);
 
 int
 weston_surface_is_mapped(struct weston_surface *surface);
 
 void
-weston_surface_assign_output(struct weston_surface *surface);
-
-void
 weston_surface_schedule_repaint(struct weston_surface *surface);
 
 void
@@ -697,7 +722,7 @@ void
 weston_seat_init(struct weston_seat *seat, struct weston_compositor *ec);
 void
 weston_seat_init_pointer(struct weston_seat *seat);
-void
+int
 weston_seat_init_keyboard(struct weston_seat *seat, struct xkb_keymap *keymap);
 void
 weston_seat_init_touch(struct weston_seat *seat);
@@ -749,6 +774,9 @@ void
 text_cursor_position_notifier_create(struct weston_compositor *ec);
 
 void
+text_model_factory_create(struct weston_compositor *ec);
+
+void
 input_method_create(struct weston_compositor *ec,
                    struct weston_seat *seat);
 
@@ -771,34 +799,27 @@ weston_client_launch(struct weston_compositor *compositor,
 void
 weston_watch_process(struct weston_process *process);
 
-int
-weston_xserver_init(struct weston_compositor *compositor);
-
 struct weston_surface_animation;
 typedef        void (*weston_surface_animation_done_func_t)(struct weston_surface_animation *animation, void *data);
 
 struct weston_surface_animation *
-weston_zoom_run(struct weston_surface *surface, GLfloat start, GLfloat stop,
+weston_zoom_run(struct weston_surface *surface, float start, float stop,
                weston_surface_animation_done_func_t done, void *data);
 
 struct weston_surface_animation *
 weston_fade_run(struct weston_surface *surface,
                weston_surface_animation_done_func_t done, void *data);
 struct weston_surface_animation *
-weston_slide_run(struct weston_surface *surface, GLfloat start, GLfloat stop,
+weston_slide_run(struct weston_surface *surface, float start, float stop,
                 weston_surface_animation_done_func_t done, void *data);
 
 void
 weston_surface_set_color(struct weston_surface *surface,
-                        GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
+                        float red, float green, float blue, float alpha);
 
 void
 weston_surface_destroy(struct weston_surface *surface);
 
-struct weston_compositor *
-backend_init(struct wl_display *display, int argc, char *argv[],
-            const char *config_file);
-
 int
 weston_output_switch_mode(struct weston_output *output, struct weston_mode *mode);
 
@@ -807,4 +828,11 @@ gles2_renderer_init(struct weston_compositor *ec);
 void
 gles2_renderer_destroy(struct weston_compositor *ec);
 
+struct weston_compositor *
+backend_init(struct wl_display *display, int argc, char *argv[],
+           const char *config_file);
+
+int
+module_init(struct weston_compositor *compositor);
+
 #endif