2003-09-23 01:09:32 -07:00
|
|
|
#ifndef _ECORE_EVAS_PRIVATE_H
|
|
|
|
#define _ECORE_EVAS_PRIVATE_H
|
|
|
|
|
|
|
|
#define ECORE_MAGIC_EVAS 0x76543211
|
|
|
|
|
2011-12-26 15:27:20 -08:00
|
|
|
/** Log domain macros and variables **/
|
2009-10-01 21:35:04 -07:00
|
|
|
|
2012-12-05 15:11:46 -08:00
|
|
|
EAPI extern int _ecore_evas_log_dom;
|
2009-10-01 21:35:04 -07:00
|
|
|
|
2010-01-06 16:30:05 -08:00
|
|
|
#ifdef ECORE_EVAS_DEFAULT_LOG_COLOR
|
|
|
|
# undef ECORE_EVAS_DEFAULT_LOG_COLOR
|
|
|
|
#endif
|
|
|
|
#define ECORE_EVAS_DEFAULT_LOG_COLOR EINA_COLOR_BLUE
|
|
|
|
|
2009-10-01 21:35:04 -07:00
|
|
|
#ifdef ERR
|
|
|
|
# undef ERR
|
|
|
|
#endif
|
|
|
|
#define ERR(...) EINA_LOG_DOM_ERR(_ecore_evas_log_dom, __VA_ARGS__)
|
|
|
|
#ifdef DBG
|
|
|
|
# undef DBG
|
|
|
|
#endif
|
|
|
|
#define DBG(...) EINA_LOG_DOM_DBG(_ecore_evas_log_dom, __VA_ARGS__)
|
|
|
|
#ifdef INF
|
|
|
|
# undef INF
|
|
|
|
#endif
|
|
|
|
#define INF(...) EINA_LOG_DOM_INFO(_ecore_evas_log_dom, __VA_ARGS__)
|
|
|
|
#ifdef WRN
|
|
|
|
# undef WRN
|
|
|
|
#endif
|
|
|
|
#define WRN(...) EINA_LOG_DOM_WARN(_ecore_evas_log_dom, __VA_ARGS__)
|
2013-12-25 19:22:05 -08:00
|
|
|
#ifdef CRI
|
|
|
|
# undef CRI
|
2009-10-01 21:35:04 -07:00
|
|
|
#endif
|
2013-12-25 19:22:05 -08:00
|
|
|
#define CRI(...) EINA_LOG_DOM_CRIT(_ecore_evas_log_dom, __VA_ARGS__)
|
2009-10-01 21:35:04 -07:00
|
|
|
|
ecore_evas: Ecore_Evas_X - Fix broken rendering during rotation with resize
Summary:
When ee is trying to do rotation, ee should check whether given rotation value
is portrait or not. Then it sets output size of evas canvas according to rotation value.
But, ECORE_EVAS_PORTRAIT macro used in ee x engine only checks ee's rotation value, even
if ee's rotation value is not updated yet. Thus we should change the logic to compare with
given rotation value, not ee's rotation, before setting output size of evas.
This fixes T1371 problem.
@fix
Test Plan:
1. run elementary_test -to "window states"
2. check resize
3. rotation 0 ~ 270
Reviewers: jpeg, raster, cedric, zmike, devilhorns, Hermet
Reviewed By: Hermet
Subscribers: cedric
Maniphest Tasks: T1371
Differential Revision: https://phab.enlightenment.org/D1351
2014-08-27 03:35:27 -07:00
|
|
|
#define PORTRAIT_CHECK(r) \
|
|
|
|
((r == 0) || (r == 180))
|
|
|
|
|
2014-01-18 05:26:10 -08:00
|
|
|
#define ECORE_EVAS_PORTRAIT(ee) \
|
ecore_evas: Ecore_Evas_X - Fix broken rendering during rotation with resize
Summary:
When ee is trying to do rotation, ee should check whether given rotation value
is portrait or not. Then it sets output size of evas canvas according to rotation value.
But, ECORE_EVAS_PORTRAIT macro used in ee x engine only checks ee's rotation value, even
if ee's rotation value is not updated yet. Thus we should change the logic to compare with
given rotation value, not ee's rotation, before setting output size of evas.
This fixes T1371 problem.
@fix
Test Plan:
1. run elementary_test -to "window states"
2. check resize
3. rotation 0 ~ 270
Reviewers: jpeg, raster, cedric, zmike, devilhorns, Hermet
Reviewed By: Hermet
Subscribers: cedric
Maniphest Tasks: T1371
Differential Revision: https://phab.enlightenment.org/D1351
2014-08-27 03:35:27 -07:00
|
|
|
(PORTRAIT_CHECK(ee->rotation))
|
2014-01-18 05:26:10 -08:00
|
|
|
|
2003-09-23 01:09:32 -07:00
|
|
|
|
2007-06-16 20:41:43 -07:00
|
|
|
#define IDLE_FLUSH_TIME 0.5
|
2009-03-16 09:24:43 -07:00
|
|
|
#ifndef _ECORE_EVAS_H
|
|
|
|
typedef struct _Ecore_Evas Ecore_Evas;
|
2012-02-19 20:38:54 -08:00
|
|
|
typedef void (*Ecore_Evas_Event_Cb) (Ecore_Evas *ee);
|
2009-03-16 09:24:43 -07:00
|
|
|
#endif
|
2007-06-16 20:41:43 -07:00
|
|
|
|
2011-07-14 08:40:53 -07:00
|
|
|
typedef struct _Ecore_Evas_Engine Ecore_Evas_Engine;
|
2003-09-23 01:09:32 -07:00
|
|
|
typedef struct _Ecore_Evas_Engine_Func Ecore_Evas_Engine_Func;
|
2012-12-05 13:15:42 -08:00
|
|
|
typedef struct _Ecore_Evas_Interface Ecore_Evas_Interface;
|
2014-02-27 14:20:01 -08:00
|
|
|
typedef struct _Ecore_Evas_Aux_Hint Ecore_Evas_Aux_Hint;
|
2012-12-05 13:15:42 -08:00
|
|
|
|
|
|
|
/* Engines interfaces */
|
2003-09-23 01:09:32 -07:00
|
|
|
struct _Ecore_Evas_Engine_Func
|
|
|
|
{
|
2011-07-14 08:40:53 -07:00
|
|
|
void (*fn_free) (Ecore_Evas *ee);
|
2012-02-19 20:38:54 -08:00
|
|
|
void (*fn_callback_resize_set) (Ecore_Evas *ee, Ecore_Evas_Event_Cb func);
|
|
|
|
void (*fn_callback_move_set) (Ecore_Evas *ee, Ecore_Evas_Event_Cb func);
|
|
|
|
void (*fn_callback_show_set) (Ecore_Evas *ee, Ecore_Evas_Event_Cb func);
|
|
|
|
void (*fn_callback_hide_set) (Ecore_Evas *ee, Ecore_Evas_Event_Cb func);
|
|
|
|
void (*fn_callback_delete_request_set) (Ecore_Evas *ee, Ecore_Evas_Event_Cb func);
|
|
|
|
void (*fn_callback_destroy_set) (Ecore_Evas *ee, Ecore_Evas_Event_Cb func);
|
|
|
|
void (*fn_callback_focus_in_set) (Ecore_Evas *ee, Ecore_Evas_Event_Cb func);
|
|
|
|
void (*fn_callback_focus_out_set) (Ecore_Evas *ee, Ecore_Evas_Event_Cb func);
|
|
|
|
void (*fn_callback_mouse_in_set) (Ecore_Evas *ee, Ecore_Evas_Event_Cb func);
|
|
|
|
void (*fn_callback_mouse_out_set) (Ecore_Evas *ee, Ecore_Evas_Event_Cb func);
|
|
|
|
void (*fn_callback_sticky_set) (Ecore_Evas *ee, Ecore_Evas_Event_Cb func);
|
|
|
|
void (*fn_callback_unsticky_set) (Ecore_Evas *ee, Ecore_Evas_Event_Cb func);
|
|
|
|
void (*fn_callback_pre_render_set) (Ecore_Evas *ee, Ecore_Evas_Event_Cb func);
|
|
|
|
void (*fn_callback_post_render_set) (Ecore_Evas *ee, Ecore_Evas_Event_Cb func);
|
2011-07-14 08:40:53 -07:00
|
|
|
void (*fn_move) (Ecore_Evas *ee, int x, int y);
|
|
|
|
void (*fn_managed_move) (Ecore_Evas *ee, int x, int y);
|
|
|
|
void (*fn_resize) (Ecore_Evas *ee, int w, int h);
|
|
|
|
void (*fn_move_resize) (Ecore_Evas *ee, int x, int y, int w, int h);
|
|
|
|
void (*fn_rotation_set) (Ecore_Evas *ee, int rot, int resize);
|
|
|
|
void (*fn_shaped_set) (Ecore_Evas *ee, int shaped);
|
|
|
|
void (*fn_show) (Ecore_Evas *ee);
|
|
|
|
void (*fn_hide) (Ecore_Evas *ee);
|
|
|
|
void (*fn_raise) (Ecore_Evas *ee);
|
|
|
|
void (*fn_lower) (Ecore_Evas *ee);
|
|
|
|
void (*fn_activate) (Ecore_Evas *ee);
|
|
|
|
void (*fn_title_set) (Ecore_Evas *ee, const char *t);
|
|
|
|
void (*fn_name_class_set) (Ecore_Evas *ee, const char *n, const char *c);
|
|
|
|
void (*fn_size_min_set) (Ecore_Evas *ee, int w, int h);
|
|
|
|
void (*fn_size_max_set) (Ecore_Evas *ee, int w, int h);
|
|
|
|
void (*fn_size_base_set) (Ecore_Evas *ee, int w, int h);
|
|
|
|
void (*fn_size_step_set) (Ecore_Evas *ee, int w, int h);
|
|
|
|
void (*fn_object_cursor_set) (Ecore_Evas *ee, Evas_Object *obj, int layer, int hot_x, int hot_y);
|
2015-02-06 14:54:08 -08:00
|
|
|
void (*fn_object_cursor_unset) (Ecore_Evas *ee);
|
2011-07-14 08:40:53 -07:00
|
|
|
void (*fn_layer_set) (Ecore_Evas *ee, int layer);
|
2014-01-11 01:19:43 -08:00
|
|
|
void (*fn_focus_set) (Ecore_Evas *ee, Eina_Bool on);
|
|
|
|
void (*fn_iconified_set) (Ecore_Evas *ee, Eina_Bool on);
|
2014-01-12 21:26:36 -08:00
|
|
|
void (*fn_borderless_set) (Ecore_Evas *ee, Eina_Bool on);
|
|
|
|
void (*fn_override_set) (Ecore_Evas *ee, Eina_Bool on);
|
|
|
|
void (*fn_maximized_set) (Ecore_Evas *ee, Eina_Bool on);
|
|
|
|
void (*fn_fullscreen_set) (Ecore_Evas *ee, Eina_Bool on);
|
2011-07-14 08:40:53 -07:00
|
|
|
void (*fn_avoid_damage_set) (Ecore_Evas *ee, int on);
|
2014-01-12 21:26:36 -08:00
|
|
|
void (*fn_withdrawn_set) (Ecore_Evas *ee, Eina_Bool on);
|
|
|
|
void (*fn_sticky_set) (Ecore_Evas *ee, Eina_Bool on);
|
2011-07-14 08:40:53 -07:00
|
|
|
void (*fn_ignore_events_set) (Ecore_Evas *ee, int ignore);
|
|
|
|
void (*fn_alpha_set) (Ecore_Evas *ee, int alpha);
|
|
|
|
void (*fn_transparent_set) (Ecore_Evas *ee, int transparent);
|
2012-12-04 22:48:46 -08:00
|
|
|
void (*fn_profiles_set) (Ecore_Evas *ee, const char **profiles, int count);
|
|
|
|
void (*fn_profile_set) (Ecore_Evas *ee, const char *profile);
|
2011-07-14 08:40:53 -07:00
|
|
|
|
2012-02-27 22:43:59 -08:00
|
|
|
void (*fn_window_group_set) (Ecore_Evas *ee, const Ecore_Evas *ee_group);
|
|
|
|
void (*fn_aspect_set) (Ecore_Evas *ee, double aspect);
|
2014-01-12 21:26:36 -08:00
|
|
|
void (*fn_urgent_set) (Ecore_Evas *ee, Eina_Bool on);
|
|
|
|
void (*fn_modal_set) (Ecore_Evas *ee, Eina_Bool on);
|
|
|
|
void (*fn_demands_attention_set) (Ecore_Evas *ee, Eina_Bool on);
|
|
|
|
void (*fn_focus_skip_set) (Ecore_Evas *ee, Eina_Bool on);
|
2012-02-27 22:43:59 -08:00
|
|
|
|
2011-07-14 08:40:53 -07:00
|
|
|
int (*fn_render) (Ecore_Evas *ee);
|
|
|
|
void (*fn_screen_geometry_get) (const Ecore_Evas *ee, int *x, int *y, int *w, int *h);
|
2012-07-05 05:51:05 -07:00
|
|
|
void (*fn_screen_dpi_get) (const Ecore_Evas *ee, int *xdpi, int *ydpi);
|
2013-02-15 01:32:40 -08:00
|
|
|
void (*fn_msg_parent_send) (Ecore_Evas *ee, int maj, int min, void *data, int size);
|
|
|
|
void (*fn_msg_send) (Ecore_Evas *ee, int maj, int min, void *data, int size);
|
2013-07-08 02:52:34 -07:00
|
|
|
|
|
|
|
/* 1.8 abstractions */
|
|
|
|
void (*fn_pointer_xy_get) (const Ecore_Evas *ee, Evas_Coord *x, Evas_Coord *y);
|
|
|
|
Eina_Bool (*fn_pointer_warp) (const Ecore_Evas *ee, Evas_Coord x, Evas_Coord y);
|
2014-02-08 16:46:51 -08:00
|
|
|
|
|
|
|
void (*fn_wm_rot_preferred_rotation_set) (Ecore_Evas *ee, int rot);
|
|
|
|
void (*fn_wm_rot_available_rotations_set) (Ecore_Evas *ee, const int *rots, unsigned int count);
|
|
|
|
void (*fn_wm_rot_manual_rotation_done_set) (Ecore_Evas *ee, Eina_Bool set);
|
|
|
|
void (*fn_wm_rot_manual_rotation_done) (Ecore_Evas *ee);
|
2014-02-27 14:20:01 -08:00
|
|
|
|
|
|
|
void (*fn_aux_hints_set) (Ecore_Evas *ee, const char *hints);
|
2003-09-23 01:09:32 -07:00
|
|
|
};
|
|
|
|
|
2012-12-05 13:15:42 -08:00
|
|
|
struct _Ecore_Evas_Interface
|
|
|
|
{
|
|
|
|
const char *name;
|
|
|
|
unsigned int version;
|
|
|
|
};
|
|
|
|
|
2003-09-23 01:09:32 -07:00
|
|
|
struct _Ecore_Evas_Engine
|
|
|
|
{
|
|
|
|
Ecore_Evas_Engine_Func *func;
|
2012-12-05 13:15:42 -08:00
|
|
|
void *data;
|
|
|
|
Eina_List *ifaces;
|
|
|
|
Ecore_Timer *idle_flush_timer;
|
2011-10-05 15:11:00 -07:00
|
|
|
#ifdef BUILD_ECORE_EVAS_EWS
|
|
|
|
struct {
|
|
|
|
Evas_Object *image;
|
|
|
|
} ews;
|
|
|
|
#endif
|
2003-09-23 01:09:32 -07:00
|
|
|
};
|
2007-08-26 04:17:21 -07:00
|
|
|
|
2003-09-23 01:09:32 -07:00
|
|
|
struct _Ecore_Evas
|
|
|
|
{
|
2009-06-17 04:42:02 -07:00
|
|
|
EINA_INLIST;
|
2003-09-23 01:09:32 -07:00
|
|
|
ECORE_MAGIC;
|
|
|
|
Evas *evas;
|
2006-10-19 18:46:41 -07:00
|
|
|
const char *driver;
|
2003-09-23 01:09:32 -07:00
|
|
|
char *name;
|
|
|
|
int x, y, w, h;
|
|
|
|
short rotation;
|
2008-10-29 12:07:10 -07:00
|
|
|
Eina_Bool shaped : 1;
|
|
|
|
Eina_Bool visible : 1;
|
|
|
|
Eina_Bool draw_ok : 1;
|
|
|
|
Eina_Bool should_be_visible : 1;
|
|
|
|
Eina_Bool alpha : 1;
|
2010-02-11 21:31:26 -08:00
|
|
|
Eina_Bool transparent : 1;
|
2011-12-27 04:02:18 -08:00
|
|
|
Eina_Bool in : 1;
|
2004-09-02 09:50:18 -07:00
|
|
|
|
2008-12-11 05:55:47 -08:00
|
|
|
Eina_Hash *data;
|
2004-09-02 09:50:18 -07:00
|
|
|
|
2010-02-27 06:40:10 -08:00
|
|
|
struct {
|
|
|
|
int x, y, w, h;
|
|
|
|
} req;
|
2014-01-11 01:01:07 -08:00
|
|
|
|
2003-09-23 01:09:32 -07:00
|
|
|
struct {
|
|
|
|
int x, y;
|
|
|
|
} mouse;
|
|
|
|
|
|
|
|
struct {
|
|
|
|
int w, h;
|
|
|
|
} expecting_resize;
|
2007-08-26 04:17:21 -07:00
|
|
|
|
2003-09-23 01:09:32 -07:00
|
|
|
struct {
|
|
|
|
char *title;
|
|
|
|
char *name;
|
|
|
|
char *clas;
|
2012-12-04 22:48:46 -08:00
|
|
|
struct {
|
|
|
|
char *name;
|
|
|
|
char **available_list;
|
|
|
|
int count;
|
|
|
|
} profile;
|
2003-09-23 01:09:32 -07:00
|
|
|
struct {
|
2014-01-11 01:01:07 -08:00
|
|
|
int w, h;
|
|
|
|
} min, max, base, step;
|
2003-09-23 01:09:32 -07:00
|
|
|
struct {
|
2014-01-11 01:01:07 -08:00
|
|
|
Evas_Object *object;
|
|
|
|
int layer;
|
|
|
|
struct {
|
|
|
|
int x, y;
|
|
|
|
} hot;
|
2003-09-23 01:09:32 -07:00
|
|
|
} cursor;
|
2014-02-08 16:46:51 -08:00
|
|
|
struct {
|
|
|
|
Eina_Bool supported; // indicate that the underlying window system supports window manager rotation protocol
|
|
|
|
Eina_Bool app_set; // indicate that the ee supports window manager rotation protocol
|
|
|
|
Eina_Bool win_resize; // indicate that the ee will be resized by the WM
|
|
|
|
int angle; // rotation value which is decided by the WM
|
|
|
|
int w, h; // window size to rotate
|
|
|
|
int preferred_rot; // preferred rotation hint
|
|
|
|
int *available_rots; // array of avaialable rotation values
|
|
|
|
unsigned int count; // number of elements of available_rots
|
|
|
|
struct {
|
|
|
|
Eina_Bool set;
|
|
|
|
Eina_Bool wait_for_done;
|
|
|
|
Ecore_Timer *timer;
|
|
|
|
} manual_mode;
|
|
|
|
} wm_rot;
|
2014-02-27 14:20:01 -08:00
|
|
|
struct {
|
|
|
|
Eina_List *supported_list;
|
|
|
|
Eina_List *hints;
|
|
|
|
int id;
|
|
|
|
} aux_hint;
|
2003-09-23 01:09:32 -07:00
|
|
|
int layer;
|
2009-03-16 09:24:43 -07:00
|
|
|
Ecore_Window window;
|
2007-10-02 23:31:05 -07:00
|
|
|
unsigned char avoid_damage;
|
2012-02-27 22:43:59 -08:00
|
|
|
Ecore_Evas *group_ee;
|
|
|
|
Ecore_Window group_ee_win;
|
|
|
|
double aspect;
|
2014-01-11 01:19:43 -08:00
|
|
|
Eina_Bool focused : 1;
|
|
|
|
Eina_Bool iconified : 1;
|
2014-01-12 21:26:36 -08:00
|
|
|
Eina_Bool borderless : 1;
|
|
|
|
Eina_Bool override : 1;
|
|
|
|
Eina_Bool maximized : 1;
|
|
|
|
Eina_Bool fullscreen : 1;
|
|
|
|
Eina_Bool withdrawn : 1;
|
|
|
|
Eina_Bool sticky : 1;
|
|
|
|
Eina_Bool request_pos : 1;
|
|
|
|
Eina_Bool draw_frame : 1;
|
|
|
|
Eina_Bool hwsurface : 1;
|
|
|
|
Eina_Bool urgent : 1;
|
|
|
|
Eina_Bool modal : 1;
|
|
|
|
Eina_Bool demand_attention : 1;
|
|
|
|
Eina_Bool focus_skip : 1;
|
2012-02-27 22:43:59 -08:00
|
|
|
} prop;
|
2007-08-26 04:17:21 -07:00
|
|
|
|
2003-09-23 01:09:32 -07:00
|
|
|
struct {
|
|
|
|
void (*fn_resize) (Ecore_Evas *ee);
|
|
|
|
void (*fn_move) (Ecore_Evas *ee);
|
|
|
|
void (*fn_show) (Ecore_Evas *ee);
|
|
|
|
void (*fn_hide) (Ecore_Evas *ee);
|
|
|
|
void (*fn_delete_request) (Ecore_Evas *ee);
|
|
|
|
void (*fn_destroy) (Ecore_Evas *ee);
|
|
|
|
void (*fn_focus_in) (Ecore_Evas *ee);
|
|
|
|
void (*fn_focus_out) (Ecore_Evas *ee);
|
2006-07-27 09:14:33 -07:00
|
|
|
void (*fn_sticky) (Ecore_Evas *ee);
|
2007-08-26 04:17:21 -07:00
|
|
|
void (*fn_unsticky) (Ecore_Evas *ee);
|
2003-09-23 01:09:32 -07:00
|
|
|
void (*fn_mouse_in) (Ecore_Evas *ee);
|
|
|
|
void (*fn_mouse_out) (Ecore_Evas *ee);
|
|
|
|
void (*fn_pre_render) (Ecore_Evas *ee);
|
|
|
|
void (*fn_post_render) (Ecore_Evas *ee);
|
2008-10-22 18:00:16 -07:00
|
|
|
void (*fn_pre_free) (Ecore_Evas *ee);
|
2012-02-27 22:43:59 -08:00
|
|
|
void (*fn_state_change) (Ecore_Evas *ee);
|
2013-02-15 01:32:40 -08:00
|
|
|
void (*fn_msg_parent_handle) (Ecore_Evas *ee, int maj, int min, void *data, int size);
|
2014-01-11 01:01:07 -08:00
|
|
|
void (*fn_msg_handle) (Ecore_Evas *ee, int maj, int min, void *data, int size);
|
2013-07-08 06:02:10 -07:00
|
|
|
void (*fn_pointer_xy_get) (const Ecore_Evas *ee, Evas_Coord *x, Evas_Coord *y);
|
|
|
|
Eina_Bool (*fn_pointer_warp) (const Ecore_Evas *ee, Evas_Coord x, Evas_Coord y);
|
2003-09-23 01:09:32 -07:00
|
|
|
} func;
|
2007-08-26 04:17:21 -07:00
|
|
|
|
2003-09-23 01:09:32 -07:00
|
|
|
Ecore_Evas_Engine engine;
|
2008-10-21 08:54:55 -07:00
|
|
|
Eina_List *sub_ecore_evas;
|
2005-10-08 05:41:59 -07:00
|
|
|
|
2012-12-18 08:27:26 -08:00
|
|
|
struct {
|
|
|
|
unsigned char avoid_damage;
|
|
|
|
unsigned char resize_shape : 1;
|
|
|
|
unsigned char shaped : 1;
|
|
|
|
unsigned char shaped_changed : 1;
|
|
|
|
unsigned char alpha : 1;
|
|
|
|
unsigned char alpha_changed : 1;
|
|
|
|
unsigned char transparent : 1;
|
|
|
|
unsigned char transparent_changed : 1;
|
|
|
|
int rotation;
|
|
|
|
int rotation_resize;
|
|
|
|
unsigned char rotation_changed : 1;
|
|
|
|
} delayed;
|
|
|
|
|
2011-10-05 15:11:00 -07:00
|
|
|
int refcount;
|
2013-01-11 10:55:06 -08:00
|
|
|
#define ECORE_EVAS_ASYNC_RENDER_DEBUG 1 /* TODO: remove me */
|
|
|
|
#ifdef ECORE_EVAS_ASYNC_RENDER_DEBUG
|
|
|
|
double async_render_start;
|
|
|
|
#endif
|
2011-10-05 15:11:00 -07:00
|
|
|
|
2014-01-11 23:37:30 -08:00
|
|
|
/* A flag to show if sync_draw_done is sent by gl or by ecore_evas.
|
|
|
|
Some GL drivers do buffer copy in a separate thread. We need to check
|
|
|
|
whether GL driver sends SYNC_DRAW_DONE message after buffer copy.
|
|
|
|
This is required to synchronize rendering and sync_draw_done message
|
|
|
|
sending.
|
|
|
|
|
|
|
|
-1 : uninitialized
|
|
|
|
0 : sync_draw_done is sent by ecore_evas
|
|
|
|
1 : sync_draw_done is sent by gl
|
|
|
|
*/
|
|
|
|
char gl_sync_draw_done;
|
|
|
|
|
2005-10-08 05:41:59 -07:00
|
|
|
unsigned char ignore_events : 1;
|
2010-01-06 21:29:06 -08:00
|
|
|
unsigned char manual_render : 1;
|
|
|
|
unsigned char registered : 1;
|
2010-02-01 06:13:48 -08:00
|
|
|
unsigned char no_comp_sync : 1;
|
2011-01-30 22:21:57 -08:00
|
|
|
unsigned char semi_sync : 1;
|
2011-10-05 15:11:00 -07:00
|
|
|
unsigned char deleted : 1;
|
2012-12-04 22:48:46 -08:00
|
|
|
unsigned char profile_supported : 1;
|
2012-12-18 08:27:26 -08:00
|
|
|
unsigned char in_async_render : 1;
|
|
|
|
unsigned char can_async_render : 1;
|
2003-09-23 01:09:32 -07:00
|
|
|
};
|
|
|
|
|
2014-02-27 14:20:01 -08:00
|
|
|
struct _Ecore_Evas_Aux_Hint
|
|
|
|
{
|
|
|
|
int id; // ID of aux hint
|
|
|
|
const char *hint; // hint string
|
|
|
|
const char *val; // value string
|
|
|
|
unsigned char allowed : 1; // received allowed event from the window manager
|
|
|
|
unsigned char notified : 1; // let caller know ee has got response for this aux hint
|
|
|
|
};
|
|
|
|
|
2012-12-05 15:11:46 -08:00
|
|
|
EAPI void _ecore_evas_ref(Ecore_Evas *ee);
|
|
|
|
EAPI void _ecore_evas_unref(Ecore_Evas *ee);
|
|
|
|
EAPI int ecore_evas_buffer_render(Ecore_Evas *ee);
|
|
|
|
|
|
|
|
EAPI void _ecore_evas_fps_debug_init(void);
|
|
|
|
EAPI void _ecore_evas_fps_debug_shutdown(void);
|
|
|
|
EAPI void _ecore_evas_fps_debug_rendertime_add(double t);
|
|
|
|
EAPI void _ecore_evas_register(Ecore_Evas *ee);
|
|
|
|
EAPI void _ecore_evas_free(Ecore_Evas *ee);
|
|
|
|
EAPI void _ecore_evas_idle_timeout_update(Ecore_Evas *ee);
|
|
|
|
EAPI void _ecore_evas_mouse_move_process(Ecore_Evas *ee, int x, int y, unsigned int timestamp);
|
|
|
|
EAPI void _ecore_evas_mouse_multi_move_process(Ecore_Evas *ee, int device,
|
2010-12-07 19:25:23 -08:00
|
|
|
int x, int y,
|
|
|
|
double radius,
|
|
|
|
double radius_x, double radius_y,
|
|
|
|
double pressure,
|
|
|
|
double angle,
|
|
|
|
double mx, double my,
|
|
|
|
unsigned int timestamp);
|
2012-12-05 15:11:46 -08:00
|
|
|
EAPI void _ecore_evas_mouse_multi_down_process(Ecore_Evas *ee, int device,
|
2010-12-07 19:25:23 -08:00
|
|
|
int x, int y,
|
|
|
|
double radius,
|
|
|
|
double radius_x, double radius_y,
|
|
|
|
double pressure,
|
|
|
|
double angle,
|
|
|
|
double mx, double my,
|
|
|
|
Evas_Button_Flags flags,
|
|
|
|
unsigned int timestamp);
|
2012-12-05 15:11:46 -08:00
|
|
|
EAPI void _ecore_evas_mouse_multi_up_process(Ecore_Evas *ee, int device,
|
2010-12-07 19:25:23 -08:00
|
|
|
int x, int y,
|
|
|
|
double radius,
|
|
|
|
double radius_x, double radius_y,
|
|
|
|
double pressure,
|
|
|
|
double angle,
|
|
|
|
double mx, double my,
|
|
|
|
Evas_Button_Flags flags,
|
|
|
|
unsigned int timestamp);
|
2007-08-26 04:17:21 -07:00
|
|
|
|
2012-12-05 15:11:46 -08:00
|
|
|
EAPI extern Eina_Bool _ecore_evas_app_comp_sync;
|
2012-12-05 13:15:42 -08:00
|
|
|
|
|
|
|
|
2012-12-05 15:11:46 -08:00
|
|
|
EAPI Ecore_Evas_Interface *_ecore_evas_interface_get(const Ecore_Evas *ee, const char *iname);
|
2011-12-18 22:54:08 -08:00
|
|
|
|
2012-12-04 22:48:46 -08:00
|
|
|
/**
|
|
|
|
* @brief Free the string of the window profile.
|
|
|
|
*
|
|
|
|
* This is a helper function to free window profile.
|
|
|
|
*/
|
2012-12-05 15:11:46 -08:00
|
|
|
EAPI void _ecore_evas_window_profile_free(Ecore_Evas *ee);
|
2012-12-04 22:48:46 -08:00
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief Free the string array of available window profiles.
|
|
|
|
*
|
|
|
|
* This is a helper function to free available window profiles.
|
|
|
|
*/
|
2012-12-05 15:11:46 -08:00
|
|
|
EAPI void _ecore_evas_window_available_profiles_free(Ecore_Evas *ee);
|
|
|
|
|
|
|
|
#ifdef BUILD_ECORE_EVAS_EWS
|
|
|
|
void _ecore_evas_ews_events_init(void);
|
|
|
|
int _ecore_evas_ews_shutdown(void);
|
|
|
|
#endif
|
|
|
|
|
2014-01-03 18:23:47 -08:00
|
|
|
void _ecore_evas_extn_init(void);
|
|
|
|
void _ecore_evas_extn_shutdown(void);
|
|
|
|
|
2014-02-27 14:20:01 -08:00
|
|
|
EAPI Eina_Strbuf *_ecore_evas_aux_hints_string_get(Ecore_Evas *ee);
|
|
|
|
void _ecore_evas_aux_hint_free(Ecore_Evas *ee);
|
|
|
|
|
2012-12-05 15:11:46 -08:00
|
|
|
Eina_Module *_ecore_evas_engine_load(const char *engine);
|
2012-12-06 12:39:20 -08:00
|
|
|
const Eina_List *_ecore_evas_available_engines_get(void);
|
|
|
|
void _ecore_evas_engine_init(void);
|
|
|
|
void _ecore_evas_engine_shutdown(void);
|
2012-12-04 22:48:46 -08:00
|
|
|
|
2003-09-23 01:09:32 -07:00
|
|
|
#endif
|
2012-12-05 13:15:42 -08:00
|
|
|
|