X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fcompositor.h;h=c7c583ed47e51d4fdcee525c31553d9db688284f;hb=230641a0920366159a676719fc7a2cb6afe59f4b;hp=728be6fdfab8065a389e9e94787a2bcdd8d840de;hpb=4226385e53efbaa5c72f1e6262cdc5fb4137e9bf;p=profile%2Fivi%2Fweston.git diff --git a/src/compositor.h b/src/compositor.h index 728be6f..c7c583e 100644 --- a/src/compositor.h +++ b/src/compositor.h @@ -37,6 +37,11 @@ #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