#include <wayland-server.h>
+//#ifdef REFACTOR_DESK_AREA
+typedef struct _E_Comp_Object E_Comp_Object;
+struct _E_Comp_Object
+{
+ EINA_INLIST;
+
+ int x, y, w, h; // geometry
+
+ E_Client *ec;
+
+ E_Comp_Object_Frame client_inset;
+ struct
+ {
+ double start;
+ double val;
+ int x, y;
+ E_Direction dir;
+ Ecore_Animator *anim;
+ } shade;
+
+ Eina_Stringshare *frame_theme;
+ Eina_Stringshare *frame_name;
+ Eina_Stringshare *visibility_effect; //effect when toggling visibility
+
+ E_Comp_Object_Content_Type content_type; // type of e.swallow.content
+
+ Evas_Object *smart_obj; // smart object
+ Evas_Object *clip; // clipper over effect object
+ Evas_Object *input_obj; // input smart object
+ Evas_Object *obj; // composite object
+ Evas_Object *frame_object; // for client frames
+ Evas_Object *shobj; // shadow object
+ Evas_Object *effect_obj; // effects object
+ Evas_Object *transform_bg_obj; // transform backgroung with keep_ratio option
+ struct
+ {
+ int r, g, b, a;
+ } transform_bg_color;
+ Evas_Object *transform_tranp_obj;// transform transp rect obj
+ Evas_Object *default_input_obj; // default input object
+ unsigned int layer; //e_comp_canvas_layer_map(cw->ec->layer)
+ Eina_List *obj_mirror; // extra mirror objects
+ Eina_Tiler *updates; //render update regions
+ Eina_Tiler *pending_updates; //render update regions which are about to render
+
+ Evas_Native_Surface *ns; //for custom gl rendering
+
+ struct wl_listener buffer_destroy_listener;
+
+ unsigned int update_count; // how many updates have happened to this obj
+
+ unsigned int opacity; // opacity set with _NET_WM_WINDOW_OPACITY
+
+ unsigned int animating; // it's busy animating
+ unsigned int failures; //number of consecutive e_pixmap_image_draw() failures
+ unsigned int force_visible; //number of visible obj_mirror objects
+ Eina_Bool delete_pending : 1; // delete pending
+ Eina_Bool defer_hide : 1; // flag to get hide to work on deferred hide
+ Eina_Bool showing : 1; // object is currently in "show" animation
+ Eina_Bool hiding : 1; // object is currently in "hide" animation
+ Eina_Bool visible : 1; // is visible
+
+ Eina_Bool shaped : 1; // is shaped
+ Eina_Bool update : 1; // has updates to fetch
+ Eina_Bool redirected : 1; // has updates to fetch
+ Eina_Bool native : 1; // native
+
+ Eina_Bool nocomp : 1; // nocomp applied
+ Eina_Bool hwc_need_update : 1; // this window updated while on e_plane to do hw composite
+ Eina_Bool real_hid : 1; // last hide was a real window unmap
+
+ Eina_Bool effect_set : 1; //effect_obj has a valid group
+ Eina_Bool effect_running : 1; //effect_obj is playing an animation
+ Eina_Bool effect_clip : 1; //effect_obj is clipped
+ Eina_Bool effect_clip_able : 1; //effect_obj will be clipped for effects
+
+ Eina_Bool updates_exist : 1;
+ Eina_Bool updates_full : 1; // entire object will be updated
+
+ Eina_Bool force_move : 1;
+ Eina_Bool frame_extends : 1; //frame may extend beyond object size
+ Eina_Bool blanked : 1; //window is rendering blank content (externally composited)
+ Eina_Bool external_content : 1; // e.swallow.content(obj) is set by external evas object
+ Eina_Bool user_alpha_set : 1;
+ Eina_Bool user_alpha : 1;
+
+ struct
+ {
+ Evas_Object *obj; // mask object: transparent parts of this comp object allow to copy the alpha to current H/W plane.
+ Evas_Render_Op saved_render_op; // saved render operation value to restore when clear a mask.
+ } mask;
+
+ struct
+ {
+ Evas_Object *obj;
+ int w, h;
+ } indicator; //indicator object for internal client
+
+ struct
+ {
+ Evas_Object *mask_obj;
+ Eina_Bool enable;
+ Eina_Bool mask_set;
+ int mask_x, mask_y, mask_w, mask_h;
+ } dim;
+
+ Eina_Bool render_trace : 1; // trace co->obj rendering on canvas
+
+ tbm_surface_h tbm_surface;
+ E_Comp_Image_Filter image_filter;
+ Eina_Bool set_mouse_callbacks;
+
+ struct
+ {
+ int lock;
+ E_Comp_Wl_Buffer_Ref buffer_ref;
+ Eina_Bool pending_move_set;
+ int pending_move_x, pending_move_y;
+ Eina_Bool pending_resize_set;
+ int pending_resize_w, pending_resize_h;
+ } render_update_lock;
+
+ struct
+ {
+ Eina_Bool set;
+ int user_r;
+ int user_g;
+ int user_b;
+ int user_a;
+ } transparent;
+
+ struct
+ {
+ struct wl_signal lower;
+ struct wl_signal raise;
+ struct wl_signal show;
+ struct wl_signal hide;
+ struct wl_signal set_layer;
+ struct wl_signal stack_above;
+ struct wl_signal stack_below;
+ } events;
+};
+//#endif
+
+typedef struct _E_Comp_Object_Data_Set_Layer
+{
+ E_Comp_Object *cw;
+ int layer; // layer
+} E_Comp_Object_Data_Set_Layer;
+
+typedef struct _E_Comp_Object_Data_Stack_Above
+{
+ E_Comp_Object *cw;
+ Evas_Object *above_obj; // above_obj
+} E_Comp_Object_Data_Stack_Above;
+
+typedef struct _E_Comp_Object_Data_Stack_Below
+{
+ E_Comp_Object *cw;
+ Evas_Object *below_obj; // below_obj
+} E_Comp_Object_Data_Stack_Below;
EINTERN void e_comp_object_lower_listener_add(Evas_Object *obj, struct wl_listener *listener);
//#ifdef REFACTOR_DESK_AREA
EINTERN void e_comp_object_raise_listener_add(Evas_Object *obj, struct wl_listener *listener);