#include "e.h"
#include "e_blender_intern.h"
#include "e_client_intern.h"
+#include "e_comp_object_intern.h"
#include <wtz-blender-server-protocol.h>
#include "e_policy_intern.h"
#include "e_map_intern.h"
#include "e_policy_visibility_intern.h"
+#include "e_comp_object_intern.h"
#define PRI(ec) ((E_Client_Private *)e_object_data_get(E_OBJECT(ec)))
#include "e_hwc_windows_intern.h"
#include "e_grabinput_intern.h"
#include "e_focus_intern.h"
+#include "e_comp_object_intern.h"
#include <sys/xattr.h>
#include "services/e_service_quickpanel.h"
#include "e.h"
-#ifdef REFACTOR_DESK_AREA
#include "e_comp_object_intern.h"
-#endif
#include "e_bindings_intern.h"
#include "e_utils_intern.h"
#ifdef REFACTOR_DESK_AREA
#define RENDER_DEBUG(...)
#endif
-#ifdef REFACTOR_DESK_AREA
-#else
-typedef struct _E_Comp_Object
-{
- EINA_INLIST;
-
- int x, y, w, h; // geometry
-
- E_Client *ec;
-
- E_Comp_Object_Frame client_inset;
-
- 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;
-//#ifdef REFACTOR_DESK_AREA
- struct wl_signal raise;
-//#endif
- struct wl_signal show;
- struct wl_signal hide;
-//#ifdef REFACTOR_DESK_AREA
- struct wl_signal set_layer;
- struct wl_signal stack_above;
- struct wl_signal stack_below;
-//#endif
- } events;
-} E_Comp_Object;
-#endif
-
typedef struct _E_Input_Rect_Data
{
Eina_Rectangle rect;
static void _e_comp_object_native_surface_set(E_Comp_Object *cw, Evas_Native_Surface *ns, Eina_Bool with_mirror);
#ifdef REFACTOR_DESK_AREA
#else
-static void _e_comp_object_layer_set(Evas_Object *obj, short layer);
+static void _e_comp_object_lower(E_Comp_Object *cw, Evas_Object *obj);
+static void _e_comp_object_raise(Evas_Object *obj);
+static void _e_comp_object_layer_set(Evas_Object *obj, short layer);
+static void _e_comp_object_stack_above(Evas_Object *obj, Evas_Object *target);
+static void _e_comp_object_stack_below(Evas_Object *obj, Evas_Object *target);
+static void _e_comp_object_transform_obj_stack_update(Evas_Object *obj);
#endif
static E_Client *dim_client = NULL;
#ifdef REFACTOR_DESK_AREA
EINTERN void
-_e_comp_object_transform_obj_stack_update(Evas_Object *obj)
+e_comp_object_transform_obj_stack_update(Evas_Object *obj)
#else
static void
_e_comp_object_transform_obj_stack_update(Evas_Object *obj)
if (cw->visible)
{
e_comp_render_queue();
- _e_comp_object_transform_obj_stack_update(obj);
+ e_comp_object_transform_obj_stack_update(obj);
}
#else
#ifdef REFACTOR_DESK_AREA
EINTERN void
-_e_comp_object_raise(Evas_Object *obj)
+e_comp_object_raise(Evas_Object *obj)
#else
static void
_e_comp_object_raise(Evas_Object *obj)
#ifdef REFACTOR_DESK_AREA
EINTERN void
-_e_comp_object_lower(E_Comp_Object *cw, Evas_Object *obj)
+e_comp_object_lower(E_Comp_Object *cw, Evas_Object *obj)
#else
static void
_e_comp_object_lower(E_Comp_Object *cw, Evas_Object *obj)
#ifdef REFACTOR_DESK_AREA
EINTERN void
-_e_comp_object_stack_above(Evas_Object *obj, Evas_Object *target)
+e_comp_object_stack_above(Evas_Object *obj, Evas_Object *target)
#else
static void
_e_comp_object_stack_above(Evas_Object *obj, Evas_Object *target)
#ifdef REFACTOR_DESK_AREA
EINTERN void
-_e_comp_object_stack_below(Evas_Object *obj, Evas_Object *target)
+e_comp_object_stack_below(Evas_Object *obj, Evas_Object *target)
#else
static void
_e_comp_object_stack_below(Evas_Object *obj, Evas_Object *target)
E_Client *ecstack;
short layer;
Evas_Object *o = stack;
+#ifdef REFACTOR_DESK_AREA
+ Eina_Bool raising = stack_cb == e_comp_object_stack_above;
+#else
Eina_Bool raising = stack_cb == _e_comp_object_stack_above;
+#endif
/* We should consider topmost's layer_pending for subsurface */
if ((cw->ec->layer_block) || _e_comp_object_is_pending(cw->ec))
if (cw->ec->layer_pending)
e_comp_object_layer_update(obj, NULL, obj);
+#ifdef REFACTOR_DESK_AREA
+ e_comp_object_lower(cw, obj);
+#else
_e_comp_object_lower(cw, obj);
+#endif
goto end;
}
if (!EINA_INLIST_GET(cw->ec)->prev) goto end; //already lowest on layer
_e_comp_object_layers_add(cw, NULL, NULL, 1);
if (evas_object_layer_get(o) != evas_object_layer_get(obj)) goto end; //already at bottom!
evas_object_data_set(obj, "client_restack", (void*)1);
+#ifdef REFACTOR_DESK_AREA
+ e_comp_object_lower(cw, obj);
+#else
_e_comp_object_lower(cw, obj);
+#endif
evas_object_data_del(obj, "client_restack");
if (!cw->visible) goto end;
e_comp_render_queue();
+#ifdef REFACTOR_DESK_AREA
+ e_comp_object_transform_obj_stack_update(obj);
+#else
_e_comp_object_transform_obj_stack_update(obj);
+#endif
end:
#endif
if (cw->ec->layer != obj_layer)
e_comp_object_layer_update(obj, NULL, NULL);
}
-
+#ifdef REFACTOR_DESK_AREA
+ e_comp_object_raise(obj);
+#else
_e_comp_object_raise(obj);
+#endif
goto end;
}
if (!EINA_INLIST_GET(cw->ec)->next) goto end;//already highest on layer
if (ec && (!ec->override)) break;
}
}
+#ifdef REFACTOR_DESK_AREA
+ e_comp_object_stack_below(obj, op);
+#else
_e_comp_object_stack_below(obj, op);
+#endif
e_client_focus_defer_set(cw->ec);
if (!cw->visible) goto end;
e_comp_render_queue();
+#ifdef REFACTOR_DESK_AREA
+ e_comp_object_transform_obj_stack_update(obj);
+#else
_e_comp_object_transform_obj_stack_update(obj);
+#endif
end:
#endif
cw->transform_bg_obj = o;
evas_object_name_set(cw->transform_bg_obj, "cw->transform_bg_obj");
}
+#ifdef REFACTOR_DESK_AREA
+ e_comp_object_transform_obj_stack_update(obj);
+#else
_e_comp_object_transform_obj_stack_update(obj);
+#endif
}
else
{
ELOGF("TRANSFORM","transform set: TRUE", cw->ec);
evas_object_name_set(cw->transform_tranp_obj, "cw->transform_trasp_obj");
}
+#ifdef REFACTOR_DESK_AREA
+ e_comp_object_transform_obj_stack_update(obj);
+#else
_e_comp_object_transform_obj_stack_update(obj);
+#endif
}
else
{
};
#endif
-extern EINTERN int E_EVENT_COMP_OBJECT_ADD;
-extern EINTERN int E_EVENT_COMP_OBJECT_IMG_RENDER;
-extern EINTERN int E_EVENT_COMP_OBJECT_EFFECT_START;
-extern EINTERN int E_EVENT_COMP_OBJECT_EFFECT_END;
+E_API void e_comp_object_damage(Evas_Object *obj, int x, int y, int w, int h);
+E_API void e_comp_object_dirty(Evas_Object *obj);
+E_API Eina_Bool e_comp_object_render(Evas_Object *obj);
+E_API void e_comp_object_color_get(Evas_Object *obj, int *r, int *g, int *b, int *a);
+E_API E_Client *e_comp_object_client_get(Evas_Object *obj);
+E_API void e_comp_object_alpha_set(Evas_Object *obj, Eina_Bool alpha);
+E_API void e_comp_object_hwc_update_set(Evas_Object *obj, Eina_Bool set);
+E_API Eina_Bool e_comp_object_native_usable_get(Evas_Object *obj);
-EINTERN void e_comp_object_init(void);
-EINTERN void e_comp_object_shutdown(void);
+E_API void e_comp_object_mask_set(Evas_Object *obj, Eina_Bool set);
+E_API Eina_Bool e_comp_object_mask_has(Evas_Object *obj);
-EINTERN Eina_Bool e_comp_object_mirror_visibility_check(Evas_Object *obj);
-EINTERN Evas_Object *e_comp_object_client_add(E_Client *ec);
E_API Evas_Object *e_comp_object_util_mirror_add(Evas_Object *obj);
E_API Evas_Object *e_comp_object_util_add(Evas_Object *obj);
+
E_API void e_comp_object_frame_xy_adjust(Evas_Object *obj, int x, int y, int *ax, int *ay);
E_API void e_comp_object_frame_xy_unadjust(Evas_Object *obj, int x, int y, int *ax, int *ay);
E_API void e_comp_object_frame_wh_adjust(Evas_Object *obj, int w, int h, int *aw, int *ah);
E_API void e_comp_object_frame_wh_unadjust(Evas_Object *obj, int w, int h, int *aw, int *ah);
-EINTERN void e_comp_object_frame_extends_get(Evas_Object *obj, int *x, int *y, int *w, int *h);
-E_API E_Client *e_comp_object_client_get(Evas_Object *obj);
-EINTERN E_Zone *e_comp_object_util_zone_get(Evas_Object *obj);
-EINTERN void e_comp_object_util_del_list_append(Evas_Object *obj, Evas_Object *to_del);
-EINTERN void e_comp_object_util_del_list_remove(Evas_Object *obj, Evas_Object *to_del);
-EINTERN void e_comp_object_util_autoclose(Evas_Object *obj, E_Comp_Object_Autoclose_Cb del_cb, E_Comp_Object_Key_Cb cb, const void *data);
-EINTERN void e_comp_object_util_center(Evas_Object *obj);
-EINTERN void e_comp_object_util_center_on(Evas_Object *obj, Evas_Object *on);
-EINTERN void e_comp_object_util_center_pos_get(Evas_Object *obj, int *x, int *y);
-EINTERN void e_comp_object_util_fullscreen(Evas_Object *obj);
-EINTERN Eina_Bool e_comp_object_frame_allowed(Evas_Object *obj);
-EINTERN void e_comp_object_frame_geometry_get(Evas_Object *obj, int *l, int *r, int *t, int *b);
-EINTERN void e_comp_object_frame_geometry_set(Evas_Object *obj, int l, int r, int t, int b);
-EINTERN Eina_Bool e_comp_object_frame_title_set(Evas_Object *obj, const char *name);
-EINTERN Eina_Bool e_comp_object_frame_exists(Evas_Object *obj);
-EINTERN Eina_Bool e_comp_object_frame_theme_set(Evas_Object *obj, const char *name);
+
E_API void e_comp_object_signal_emit(Evas_Object *obj, const char *sig, const char *src);
E_API void e_comp_object_signal_callback_add(Evas_Object *obj, const char *sig, const char *src, Edje_Signal_Cb cb, const void *data);
E_API void e_comp_object_signal_callback_del(Evas_Object *obj, const char *sig, const char *src, Edje_Signal_Cb cb);
E_API void e_comp_object_signal_callback_del_full(Evas_Object *obj, const char *sig, const char *src, Edje_Signal_Cb cb, const void *data);
-EINTERN void e_comp_object_input_objs_del(Evas_Object *obj);
+
E_API void e_comp_object_input_area_set(Evas_Object *obj, int x, int y, int w, int h);
E_API void e_comp_object_input_rect_get(Evas_Object *obj, Eina_List **list);
-E_API void e_comp_object_damage(Evas_Object *obj, int x, int y, int w, int h);
-EINTERN Eina_Bool e_comp_object_damage_exists(Evas_Object *obj);
-EINTERN void e_comp_object_render_update_add(Evas_Object *obj);
-EINTERN void e_comp_object_render_update_del(Evas_Object *obj);
-EINTERN void e_comp_object_shape_apply(Evas_Object *obj);
-EINTERN void e_comp_object_redirected_set(Evas_Object *obj, Eina_Bool set);
-EINTERN void e_comp_object_native_surface_set(Evas_Object *obj, Eina_Bool set);
-EINTERN void e_comp_object_native_surface_override(Evas_Object *obj, Evas_Native_Surface *ns);
-EINTERN void e_comp_object_blank(Evas_Object *obj, Eina_Bool set);
-E_API void e_comp_object_dirty(Evas_Object *obj);
-E_API Eina_Bool e_comp_object_render(Evas_Object *obj);
-EINTERN Eina_Bool e_comp_object_effect_allowed_get(Evas_Object *obj);
-E_API Eina_Bool e_comp_object_effect_set(Evas_Object *obj, const char *effect);
-E_API void e_comp_object_effect_params_set(Evas_Object *obj, int id, int *params, unsigned int count);
-EINTERN void e_comp_object_effect_clip(Evas_Object *obj);
-EINTERN void e_comp_object_effect_unclip(Evas_Object *obj);
-E_API Eina_Bool e_comp_object_effect_start(Evas_Object *obj, Edje_Signal_Cb end_cb, const void *end_data);
-E_API Eina_Bool e_comp_object_effect_stop(Evas_Object *obj, Edje_Signal_Cb end_cb);
+
+E_API unsigned int e_comp_object_is_animating(Evas_Object *obj);
+E_API Eina_Bool e_comp_object_effect_set(Evas_Object *obj, const char *effect);
+E_API void e_comp_object_effect_params_set(Evas_Object *obj, int id, int *params, unsigned int count);
+E_API Eina_Bool e_comp_object_effect_start(Evas_Object *obj, Edje_Signal_Cb end_cb, const void *end_data);
+E_API Eina_Bool e_comp_object_effect_stop(Evas_Object *obj, Edje_Signal_Cb end_cb);
E_API E_Comp_Object_Mover *e_comp_object_effect_mover_add(int pri, const char *sig, E_Comp_Object_Mover_Cb provider, const void *data);
-E_API void e_comp_object_effect_mover_del(E_Comp_Object_Mover *prov);
-E_API Evas_Object *e_comp_object_effect_object_get(Evas_Object *obj);
-E_API E_Comp_Object_Hook *e_comp_object_hook_add(E_Comp_Object_Hook_Point hookpoint, E_Comp_Object_Hook_Cb func, const void *data);
-E_API void e_comp_object_hook_del(E_Comp_Object_Hook *ch);
+E_API void e_comp_object_effect_mover_del(E_Comp_Object_Mover *prov);
+E_API Evas_Object *e_comp_object_effect_object_get(Evas_Object *obj);
+E_API Eina_Bool e_comp_object_effect_object_part_swallow(Evas_Object *obj, const char *part_name, Evas_Object *swallow_obj);
+E_API Eina_Bool e_comp_object_effect_hiding_set(Evas_Object *obj, Eina_Bool set);
-#ifdef _F_E_COMP_OBJECT_INTERCEPT_HOOK_
-E_API E_Comp_Object_Intercept_Hook *e_comp_object_intercept_hook_add(E_Comp_Object_Intercept_Hook_Point hookpoint, E_Comp_Object_Intercept_Hook_Cb func, const void *data);
-E_API void e_comp_object_intercept_hook_del(E_Comp_Object_Intercept_Hook *ch);
-#endif
-E_API unsigned int e_comp_object_is_animating(Evas_Object *obj);
-E_API void e_comp_object_alpha_set(Evas_Object *obj, Eina_Bool alpha);
-EINTERN Eina_Bool e_comp_object_alpha_get(Evas_Object *obj);
-E_API void e_comp_object_mask_set(Evas_Object *obj, Eina_Bool set);
-E_API Eina_Bool e_comp_object_mask_has(Evas_Object *obj);
-EINTERN void e_comp_object_size_update(Evas_Object *obj, int w, int h);
E_API void e_comp_object_transform_bg_set(Evas_Object *obj, Eina_Bool set);
E_API void e_comp_object_transform_bg_color_set(Evas_Object *obj, int r, int g, int b, int a);
-
-EINTERN void e_comp_object_transform_bg_vertices_set(Evas_Object *obj, E_Util_Transform_Rect_Vertex *vertices);
-EINTERN void e_comp_object_transform_bg_vertices_set_with_zoom(Evas_Object *obj, E_Util_Transform_Rect_Vertex *vertices, E_Util_Transform_Zoom zoom);
E_API void e_comp_object_transform_transp_set(Evas_Object *obj, Eina_Bool set);
-EINTERN void e_comp_object_transform_transp_vertices_set(Evas_Object *obj, E_Util_Transform_Rect_Vertex *vertices);
-EINTERN void e_comp_object_transform_transp_vertices_set_with_zoom(Evas_Object *obj, E_Util_Transform_Rect_Vertex *vertices, E_Util_Transform_Zoom zoom);
-
-//#ifdef REFACTOR_DESK_AREA
-//#else
-EINTERN void e_comp_object_layer_update(Evas_Object *obj, Evas_Object *above, Evas_Object *below);
-//#endif
-EINTERN int e_comp_object_layer_get(Evas_Object *obj);
E_API Eina_Bool e_comp_object_content_set(Evas_Object* obj, Evas_Object *content, E_Comp_Object_Content_Type type);
-EINTERN Eina_Bool e_comp_object_content_unset(Evas_Object* obj);
-EINTERN Evas_Object *e_comp_object_content_get(Evas_Object* obj);
E_API E_Comp_Object_Content_Type e_comp_object_content_type_get(Evas_Object* obj);
E_API void e_comp_object_dim_client_set(E_Client *ec);
-EINTERN E_Client *e_comp_object_dim_client_get(void);
E_API void e_comp_object_dim_mask_update(Evas_Object *obj, Eina_Bool mask_set, int x, int y, int w, int h);
-EINTERN void e_comp_object_dim_mask_set(Evas_Object *obj, Eina_Bool set);
-EINTERN void e_comp_object_clear(Evas_Object *obj);
-
-EINTERN Eina_Bool e_comp_object_hwc_update_exists(Evas_Object *obj);
-E_API void e_comp_object_hwc_update_set(Evas_Object *obj, Eina_Bool set);
-
-E_API Eina_Bool e_comp_object_effect_object_part_swallow(Evas_Object *obj, const char *part_name, Evas_Object *swallow_obj);
-E_API Eina_Bool e_comp_object_effect_hiding_set(Evas_Object *obj, Eina_Bool set);
-
-EINTERN void e_comp_object_indicator_swallow(Evas_Object *obj, Evas_Object *indicator);
-EINTERN void e_comp_object_indicator_unswallow(Evas_Object *obj, Evas_Object *indicator);
-EINTERN void e_comp_object_indicator_size_set(Evas_Object *obj, int w, int h);
-
-EINTERN void e_comp_object_map_update(Evas_Object *obj);
-
-EINTERN Eina_Bool e_comp_object_render_trace_set(Evas_Object *obj, Eina_Bool set);
-
-E_API Eina_Bool e_comp_object_native_usable_get(Evas_Object *obj);
-EINTERN Eina_Bool e_comp_object_image_filter_set(Evas_Object *obj, E_Comp_Image_Filter filter);
-EINTERN E_Comp_Image_Filter e_comp_object_image_filter_get(Evas_Object *obj);
-
-EINTERN void e_comp_object_damage_trace_debug(Eina_Bool onoff);
-
-EINTERN Eina_Bool e_comp_object_redirected_get(Evas_Object *obj);
-EINTERN Eina_Bool e_comp_object_color_visible_get(Evas_Object *obj);
-
-E_API Eina_Bool e_comp_object_map_set(Evas_Object *obj, E_Map *em);
-// get E_Map from evas_object. it must be freed after used.
-EINTERN E_Map *e_comp_object_map_get(const Evas_Object *obj);
-E_API Eina_Bool e_comp_object_map_enable_set(Evas_Object *obj, Eina_Bool enabled);
+E_API Eina_Bool e_comp_object_map_set(Evas_Object *obj, E_Map *em);
+E_API Eina_Bool e_comp_object_map_enable_set(Evas_Object *obj, Eina_Bool enabled); // get E_Map from evas_object. it must be freed after used.
E_API Eina_Bool e_comp_object_render_update_lock(Evas_Object *obj);
E_API void e_comp_object_render_update_unlock(Evas_Object *obj);
E_API Eina_Bool e_comp_object_render_update_lock_get(Evas_Object *obj);
-E_API void e_comp_object_color_get(Evas_Object *obj, int *r, int *g, int *b, int *a);
+E_API E_Comp_Object_Hook *e_comp_object_hook_add(E_Comp_Object_Hook_Point hookpoint, E_Comp_Object_Hook_Cb func, const void *data);
+E_API void e_comp_object_hook_del(E_Comp_Object_Hook *ch);
+
+#ifdef _F_E_COMP_OBJECT_INTERCEPT_HOOK_
+E_API E_Comp_Object_Intercept_Hook *e_comp_object_intercept_hook_add(E_Comp_Object_Intercept_Hook_Point hookpoint, E_Comp_Object_Intercept_Hook_Cb func, const void *data);
+E_API void e_comp_object_intercept_hook_del(E_Comp_Object_Intercept_Hook *ch);
+#endif
-EINTERN void e_comp_object_render_op_set(Evas_Object *obj, Evas_Render_Op op);
-EINTERN Evas_Render_Op e_comp_object_render_op_get(Evas_Object *obj);
#endif
#endif
Evas_Object *below_obj; // below_obj
} E_Comp_Object_Data_Stack_Below;
+extern EINTERN int E_EVENT_COMP_OBJECT_ADD;
+extern EINTERN int E_EVENT_COMP_OBJECT_IMG_RENDER;
+extern EINTERN int E_EVENT_COMP_OBJECT_EFFECT_START;
+extern EINTERN int E_EVENT_COMP_OBJECT_EFFECT_END;
+
+EINTERN void e_comp_object_init(void);
+EINTERN void e_comp_object_shutdown(void);
+
+EINTERN Evas_Object *e_comp_object_client_add(E_Client *ec);
+EINTERN Eina_Bool e_comp_object_alpha_get(Evas_Object *obj);
+EINTERN Eina_Bool e_comp_object_color_visible_get(Evas_Object *obj);
+EINTERN void e_comp_object_clear(Evas_Object *obj);
+EINTERN Eina_Bool e_comp_object_redirected_get(Evas_Object *obj);
+EINTERN Eina_Bool e_comp_object_mirror_visibility_check(Evas_Object *obj);
+EINTERN void e_comp_object_input_objs_del(Evas_Object *obj);
+EINTERN Eina_Bool e_comp_object_hwc_update_exists(Evas_Object *obj);
+EINTERN void e_comp_object_damage_trace_debug(Eina_Bool onoff);
+
+EINTERN Eina_Bool e_comp_object_frame_allowed(Evas_Object *obj);
+EINTERN void e_comp_object_frame_geometry_get(Evas_Object *obj, int *l, int *r, int *t, int *b);
+EINTERN void e_comp_object_frame_geometry_set(Evas_Object *obj, int l, int r, int t, int b);
+EINTERN Eina_Bool e_comp_object_frame_title_set(Evas_Object *obj, const char *name);
+EINTERN Eina_Bool e_comp_object_frame_exists(Evas_Object *obj);
+EINTERN Eina_Bool e_comp_object_frame_theme_set(Evas_Object *obj, const char *name);
+EINTERN void e_comp_object_frame_extends_get(Evas_Object *obj, int *x, int *y, int *w, int *h);
+
+EINTERN E_Zone *e_comp_object_util_zone_get(Evas_Object *obj);
+EINTERN void e_comp_object_util_del_list_append(Evas_Object *obj, Evas_Object *to_del);
+EINTERN void e_comp_object_util_del_list_remove(Evas_Object *obj, Evas_Object *to_del);
+EINTERN void e_comp_object_util_autoclose(Evas_Object *obj, E_Comp_Object_Autoclose_Cb del_cb, E_Comp_Object_Key_Cb cb, const void *data);
+EINTERN void e_comp_object_util_center(Evas_Object *obj);
+EINTERN void e_comp_object_util_center_on(Evas_Object *obj, Evas_Object *on);
+EINTERN void e_comp_object_util_center_pos_get(Evas_Object *obj, int *x, int *y);
+EINTERN void e_comp_object_util_fullscreen(Evas_Object *obj);
+
+EINTERN Eina_Bool e_comp_object_damage_exists(Evas_Object *obj);
+EINTERN void e_comp_object_shape_apply(Evas_Object *obj);
+EINTERN void e_comp_object_redirected_set(Evas_Object *obj, Eina_Bool set);
+EINTERN void e_comp_object_blank(Evas_Object *obj, Eina_Bool set);
+EINTERN void e_comp_object_size_update(Evas_Object *obj, int w, int h);
+
+EINTERN void e_comp_object_render_update_add(Evas_Object *obj);
+EINTERN void e_comp_object_render_update_del(Evas_Object *obj);
+
+EINTERN void e_comp_object_native_surface_set(Evas_Object *obj, Eina_Bool set);
+EINTERN void e_comp_object_native_surface_override(Evas_Object *obj, Evas_Native_Surface *ns);
+
+EINTERN Eina_Bool e_comp_object_effect_allowed_get(Evas_Object *obj);
+EINTERN void e_comp_object_effect_clip(Evas_Object *obj);
+EINTERN void e_comp_object_effect_unclip(Evas_Object *obj);
+
+EINTERN void e_comp_object_transform_bg_vertices_set(Evas_Object *obj, E_Util_Transform_Rect_Vertex *vertices);
+EINTERN void e_comp_object_transform_bg_vertices_set_with_zoom(Evas_Object *obj, E_Util_Transform_Rect_Vertex *vertices, E_Util_Transform_Zoom zoom);
+EINTERN void e_comp_object_transform_transp_vertices_set(Evas_Object *obj, E_Util_Transform_Rect_Vertex *vertices);
+EINTERN void e_comp_object_transform_transp_vertices_set_with_zoom(Evas_Object *obj, E_Util_Transform_Rect_Vertex *vertices, E_Util_Transform_Zoom zoom);
+
+//#ifdef REFACTOR_DESK_AREA
+//#else
+EINTERN void e_comp_object_layer_update(Evas_Object *obj, Evas_Object *above, Evas_Object *below);
+//#endif
+EINTERN int e_comp_object_layer_get(Evas_Object *obj);
+
+EINTERN Eina_Bool e_comp_object_content_unset(Evas_Object* obj);
+EINTERN Evas_Object *e_comp_object_content_get(Evas_Object* obj);
+
+EINTERN E_Client *e_comp_object_dim_client_get(void);
+EINTERN void e_comp_object_dim_mask_set(Evas_Object *obj, Eina_Bool set);
+
+EINTERN void e_comp_object_indicator_swallow(Evas_Object *obj, Evas_Object *indicator);
+EINTERN void e_comp_object_indicator_unswallow(Evas_Object *obj, Evas_Object *indicator);
+EINTERN void e_comp_object_indicator_size_set(Evas_Object *obj, int w, int h);
+
+EINTERN Eina_Bool e_comp_object_image_filter_set(Evas_Object *obj, E_Comp_Image_Filter filter);
+EINTERN E_Comp_Image_Filter e_comp_object_image_filter_get(Evas_Object *obj);
+
+EINTERN E_Map *e_comp_object_map_get(const Evas_Object *obj);
+EINTERN void e_comp_object_map_update(Evas_Object *obj);
+
+EINTERN void e_comp_object_render_op_set(Evas_Object *obj, Evas_Render_Op op);
+EINTERN Evas_Render_Op e_comp_object_render_op_get(Evas_Object *obj);
+EINTERN Eina_Bool e_comp_object_render_trace_set(Evas_Object *obj, Eina_Bool set);
+
//#ifdef REFACTOR_DESK_AREA
typedef void (*E_Comp_Object_Stack_Func)(Evas_Object *obj, Evas_Object *stack);
+//#endif
-EINTERN void _e_comp_object_lower(E_Comp_Object *cw, Evas_Object *obj);
-EINTERN void _e_comp_object_raise(Evas_Object *obj);
+//#ifdef REFACTOR_DESK_AREA
+EINTERN void e_comp_object_lower(E_Comp_Object *cw, Evas_Object *obj);
+EINTERN void e_comp_object_raise(Evas_Object *obj);
EINTERN void e_comp_object_layer_set(Evas_Object *obj, short layer);
-EINTERN void _e_comp_object_stack_above(Evas_Object *obj, Evas_Object *target);
-EINTERN void _e_comp_object_stack_below(Evas_Object *obj, Evas_Object *target);
-EINTERN void _e_comp_object_transform_obj_stack_update(Evas_Object *obj);
+EINTERN void e_comp_object_stack_above(Evas_Object *obj, Evas_Object *target);
+EINTERN void e_comp_object_stack_below(Evas_Object *obj, Evas_Object *target);
+EINTERN void e_comp_object_transform_obj_stack_update(Evas_Object *obj);
//#endif
+// listeners
EINTERN void e_comp_object_lower_listener_add(Evas_Object *obj, struct wl_listener *listener);
//#ifdef REFACTOR_DESK_AREA
EINTERN void e_comp_object_lower_done_listener_add(Evas_Object *obj, struct wl_listener *listener);
#include "e_compositor_intern.h"
#include "e_client_video_intern.h"
#include "e_comp_wl_video_intern.h"
+#include "e_comp_object_intern.h"
#include <tizen-extension-server-protocol.h>
#include <relative-pointer-unstable-v1-server-protocol.h>
#include "e_comp_wl_intern.h"
#include "e_input_intern.h"
#include "e_pointer_intern.h"
+#include "e_comp_object_intern.h"
#include <sys/mman.h>
#include <pixman.h>
#include "e_comp_wl_tbm_intern.h"
#include "e_privilege_intern.h"
#include "e_policy_intern.h"
+#include "e_comp_object_intern.h"
#include <tizen-remote-surface-server-protocol.h>
#include <tbm_surface.h>
#include "e_comp_wl_subsurface_intern.h"
#include "e_policy_intern.h"
#include "e_policy_visibility_intern.h"
+#include "e_comp_object_intern.h"
#include <xdg-shell-unstable-v5-server-protocol.h>
#include <xdg-shell-unstable-v6-server-protocol.h>
#ifdef REFACTOR_DESK_AREA
#include "e_client_intern.h"
#endif
+#include "e_comp_object_intern.h"
#include <tizen-extension-server-protocol.h>
#include "e_comp_screen_intern.h"
#include "e_comp_wl_subsurface_intern.h"
#include "e_output_intern.h"
+#include "e_comp_object_intern.h"
#include <libds-tizen/screen.h>
E_Client *ecstack;
short layer;
Evas_Object *o = stack;
- Eina_Bool raising = stack_cb == _e_comp_object_stack_above;
+ Eina_Bool raising = stack_cb == e_comp_object_stack_above;
/* We should consider topmost's layer_pending for subsurface */
if ((cw->ec->layer_block) || _e_comp_object_is_pending(cw->ec))
if (cw->ec->layer_pending)
_e_comp_object_layer_update(eda, obj, NULL, obj);
- _e_comp_object_lower(cw, obj);
+ e_comp_object_lower(cw, obj);
return;
}
if (evas_object_layer_get(o) != evas_object_layer_get(obj)) return; //already at bottom!
evas_object_data_set(obj, "client_restack", (void*)1);
- _e_comp_object_lower(cw, obj);
+ e_comp_object_lower(cw, obj);
evas_object_data_del(obj, "client_restack");
if (!cw->visible) return;
e_comp_render_queue();
- _e_comp_object_transform_obj_stack_update(obj);
+ e_comp_object_transform_obj_stack_update(obj);
}
static void
_e_comp_object_layer_update(eda, obj, NULL, NULL);
}
- _e_comp_object_raise(obj);
+ e_comp_object_raise(obj);
return;
}
if (!EINA_INLIST_GET(cw->ec)->next) return;//already highest on layer
if (ec && (!ec->override)) break;
}
}
- _e_comp_object_stack_below(obj, op);
+ e_comp_object_stack_below(obj, op);
e_client_focus_defer_set(cw->ec);
if (!cw->visible) return;
e_comp_render_queue();
- _e_comp_object_transform_obj_stack_update(obj);
+ e_comp_object_transform_obj_stack_update(obj);
}
static void
return;
}
- _e_comp_intercept_stack_helper(eda, cw, above, _e_comp_object_stack_above);
+ _e_comp_intercept_stack_helper(eda, cw, above, e_comp_object_stack_above);
- _e_comp_object_transform_obj_stack_update(obj);
- _e_comp_object_transform_obj_stack_update(above);
+ e_comp_object_transform_obj_stack_update(obj);
+ e_comp_object_transform_obj_stack_update(above);
}
return;
}
- _e_comp_intercept_stack_helper(eda, cw, below, _e_comp_object_stack_below);
+ _e_comp_intercept_stack_helper(eda, cw, below, e_comp_object_stack_below);
if (evas_object_smart_smart_get(obj))
- _e_comp_object_transform_obj_stack_update(obj);
+ e_comp_object_transform_obj_stack_update(obj);
if (evas_object_smart_smart_get(below))
- _e_comp_object_transform_obj_stack_update(below);
+ e_comp_object_transform_obj_stack_update(below);
}
#endif
#include "e_hwc_intern.h"
#include "e_policy_private_data.h"
#include "e_client_intern.h"
+#include "e_comp_object_intern.h"
#include <wayland-tbm-server.h>
#include "e_policy_visibility_intern.h"
#include "e_client_video_intern.h"
#include "e_client_intern.h"
+#include "e_comp_object_intern.h"
# include <pixman.h>
# include <wayland-tbm-server.h>
#include "e_egl_sync_intern.h"
#include "e_client_video_intern.h"
#include "e_client_intern.h"
+#include "e_comp_object_intern.h"
# include <Evas_Engine_GL_Tbm.h>
# include <Evas_Engine_Software_Tbm.h>
#include "e_client_video_intern.h"
#include "e_video_debug_intern.h"
#include "e_client_intern.h"
+#include "e_comp_object_intern.h"
#include <tbm_bufmgr.h>
#include <tbm_surface.h>
#include "e_comp_wl_tbm_intern.h"
#include "e_presentation_time_intern.h"
#include "e_policy_visibility_intern.h"
+#include "e_comp_object_intern.h"
#include <wayland-tbm-server.h>
#include <tizen-extension-server-protocol.h>
#include "e_output_intern.h"
#include "e_comp_wl_video_buffer_intern.h"
#include "e_client_intern.h"
+#include "e_comp_object_intern.h"
#include <device/board-internal.h>
# include <tdm.h>
#include "e_comp_intern.h"
#include "e_policy_wl_intern.h"
#include "e_client_intern.h"
+#include "e_comp_object_intern.h"
#ifdef ENABLE_TTRACE
# include <ttrace.h>
#include "e_privilege_intern.h"
#include "e_magnifier_intern.h"
#include "e_hints_intern.h"
+#include "e_comp_object_intern.h"
#include <device/display.h>
#include <wayland-server.h>
#include "e_pixmap_intern.h"
#include "e_policy_intern.h"
#include "e_client_intern.h"
+#include "e_comp_object_intern.h"
#define BUS "org.enlightenment.wm"
#define PATH "/org/enlightenment/wm"
#include "e_maximize_intern.h"
#include "e_focus_intern.h"
#include "e_policy_visibility_intern.h"
+#include "e_comp_object_intern.h"
#include <libds-tizen/screen.h>
#include "e_policy_private_data.h"
#include "e_policy_visibility_intern.h"
#include "e_client_intern.h"
+#include "e_comp_object_intern.h"
#include <tzsh_server.h>
#include <wayland-tbm-server.h>
#include "e_policy_wl_intern.h"
#include "e_policy_private_data.h"
#include "e_client_intern.h"
+#include "e_comp_object_intern.h"
#define SMART_NAME "quickpanel_object"
#define INTERNAL_ENTRY \