forked from enlightenment/efl
clean up engines - put idle entere handlign in core. same with lists. quyartz
looks broken to me. sdl looks like it could be much more complete - like multiple sdl windows/instances. anyway - allow rendering to be manual. SVN revision: 44938
This commit is contained in:
parent
288b812d44
commit
30939bf353
|
@ -321,6 +321,10 @@ EAPI void ecore_evas_sticky_set(Ecore_Evas *ee, int sticky);
|
|||
EAPI int ecore_evas_sticky_get(const Ecore_Evas *ee);
|
||||
EAPI void ecore_evas_ignore_events_set(Ecore_Evas *ee, int ignore);
|
||||
EAPI int ecore_evas_ignore_events_get(const Ecore_Evas *ee);
|
||||
EAPI void ecore_evas_manual_render_set(Ecore_Evas *ee, int manual_render);
|
||||
EAPI int ecore_evas_manual_render_get(const Ecore_Evas *ee);
|
||||
EAPI void ecore_evas_manual_render(Ecore_Evas *ee);
|
||||
|
||||
EAPI Ecore_Window ecore_evas_window_get(const Ecore_Evas *ee);
|
||||
|
||||
|
||||
|
|
|
@ -22,6 +22,40 @@ static int _ecore_evas_init_count = 0;
|
|||
static Ecore_Fd_Handler *_ecore_evas_async_events_fd = NULL;
|
||||
static int _ecore_evas_async_events_fd_handler(void *data, Ecore_Fd_Handler *fd_handler);
|
||||
|
||||
static Ecore_Idle_Enterer *ecore_evas_idle_enterer = NULL;
|
||||
static Ecore_Evas *ecore_evases = NULL;
|
||||
static int _ecore_evas_fps_debug = 0;
|
||||
|
||||
static int
|
||||
_ecore_evas_idle_enter(void *data __UNUSED__)
|
||||
{
|
||||
Ecore_Evas *ee;
|
||||
double t1 = 0.0;
|
||||
double t2 = 0.0;
|
||||
int rend = 0;
|
||||
|
||||
if (!ecore_evases) return 1;
|
||||
if (_ecore_evas_fps_debug)
|
||||
{
|
||||
t1 = ecore_time_get();
|
||||
}
|
||||
EINA_INLIST_FOREACH(ecore_evases, ee)
|
||||
{
|
||||
if (!ee->manual_render)
|
||||
{
|
||||
if (ee->engine.func->fn_render)
|
||||
rend |= ee->engine.func->fn_render(ee);
|
||||
}
|
||||
}
|
||||
if (_ecore_evas_fps_debug)
|
||||
{
|
||||
t2 = ecore_time_get();
|
||||
if (rend)
|
||||
_ecore_evas_fps_debug_rendertime_add(t2 - t1);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Query if a particular renginering engine target has support
|
||||
* @param engine The engine to check support for
|
||||
|
@ -178,6 +212,12 @@ ecore_evas_init(void)
|
|||
ECORE_FD_READ,
|
||||
_ecore_evas_async_events_fd_handler, NULL,
|
||||
NULL, NULL);
|
||||
|
||||
ecore_evas_idle_enterer =
|
||||
ecore_idle_enterer_add(_ecore_evas_idle_enter, NULL);
|
||||
if (getenv("ECORE_EVAS_FPS_DEBUG")) _ecore_evas_fps_debug = 1;
|
||||
if (_ecore_evas_fps_debug) _ecore_evas_fps_debug_init();
|
||||
|
||||
return _ecore_evas_init_count;
|
||||
|
||||
shutdown_ecore:
|
||||
|
@ -197,6 +237,12 @@ ecore_evas_init(void)
|
|||
EAPI int
|
||||
ecore_evas_shutdown(void)
|
||||
{
|
||||
while (ecore_evases) _ecore_evas_free(ecore_evases);
|
||||
|
||||
if (_ecore_evas_fps_debug) _ecore_evas_fps_debug_shutdown();
|
||||
ecore_idle_enterer_del(ecore_evas_idle_enterer);
|
||||
ecore_evas_idle_enterer = NULL;
|
||||
|
||||
if (--_ecore_evas_init_count != 0)
|
||||
return _ecore_evas_init_count;
|
||||
|
||||
|
@ -2388,10 +2434,47 @@ ecore_evas_ignore_events_get(const Ecore_Evas *ee)
|
|||
ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
|
||||
"ecore_evas_ignore_events_get");
|
||||
return 0;
|
||||
} else
|
||||
}
|
||||
return ee->ignore_events ? 1 : 0;
|
||||
}
|
||||
|
||||
EAPI void
|
||||
ecore_evas_manual_render_set(Ecore_Evas *ee, int manual_render)
|
||||
{
|
||||
if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
|
||||
{
|
||||
ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
|
||||
"ecore_evas_manual_render_set");
|
||||
return;
|
||||
}
|
||||
ee->manual_render = manual_render;
|
||||
}
|
||||
|
||||
EAPI int
|
||||
ecore_evas_manual_render_get(const Ecore_Evas *ee)
|
||||
{
|
||||
if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
|
||||
{
|
||||
ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
|
||||
"ecore_evas_manual_render_get");
|
||||
return 0;
|
||||
}
|
||||
return ee->manual_render ? 1 : 0;
|
||||
}
|
||||
|
||||
EAPI void
|
||||
ecore_evas_manual_render(Ecore_Evas *ee)
|
||||
{
|
||||
if (!ECORE_MAGIC_CHECK(ee, ECORE_MAGIC_EVAS))
|
||||
{
|
||||
ECORE_MAGIC_FAIL(ee, ECORE_MAGIC_EVAS,
|
||||
"ecore_evas_manual_render");
|
||||
return;
|
||||
}
|
||||
if (ee->engine.func->fn_render)
|
||||
ee->engine.func->fn_render(ee);
|
||||
}
|
||||
|
||||
EAPI Ecore_Window
|
||||
ecore_evas_window_get(const Ecore_Evas *ee)
|
||||
{
|
||||
|
@ -2491,6 +2574,14 @@ _ecore_evas_fps_debug_rendertime_add(double t)
|
|||
}
|
||||
}
|
||||
|
||||
void
|
||||
_ecore_evas_register(Ecore_Evas *ee)
|
||||
{
|
||||
ee->registered = 1;
|
||||
ecore_evases = (Ecore_Evas *)eina_inlist_prepend
|
||||
(EINA_INLIST_GET(ecore_evases), EINA_INLIST_GET(ee));
|
||||
}
|
||||
|
||||
void
|
||||
_ecore_evas_free(Ecore_Evas *ee)
|
||||
{
|
||||
|
@ -2518,6 +2609,11 @@ _ecore_evas_free(Ecore_Evas *ee)
|
|||
if (ee->engine.idle_flush_timer)
|
||||
ecore_timer_del(ee->engine.idle_flush_timer);
|
||||
if (ee->engine.func->fn_free) ee->engine.func->fn_free(ee);
|
||||
if (ee->registered)
|
||||
{
|
||||
ecore_evases = (Ecore_Evas *)eina_inlist_remove
|
||||
(EINA_INLIST_GET(ecore_evases), EINA_INLIST_GET(ee));
|
||||
}
|
||||
free(ee);
|
||||
}
|
||||
|
||||
|
|
|
@ -12,17 +12,11 @@
|
|||
#ifdef BUILD_ECORE_EVAS_SOFTWARE_BUFFER
|
||||
static int _ecore_evas_init_count = 0;
|
||||
|
||||
static int _ecore_evas_fps_debug = 0;
|
||||
|
||||
static Ecore_Evas *ecore_evases = NULL;
|
||||
|
||||
static int
|
||||
_ecore_evas_buffer_init(void)
|
||||
{
|
||||
_ecore_evas_init_count++;
|
||||
if (_ecore_evas_init_count > 1) return _ecore_evas_init_count;
|
||||
if (getenv("ECORE_EVAS_FPS_DEBUG")) _ecore_evas_fps_debug = 1;
|
||||
if (_ecore_evas_fps_debug) _ecore_evas_fps_debug_init();
|
||||
return _ecore_evas_init_count;
|
||||
}
|
||||
|
||||
|
@ -39,8 +33,6 @@ _ecore_evas_buffer_free(Ecore_Evas *ee)
|
|||
}
|
||||
else
|
||||
{
|
||||
ecore_evases = (Ecore_Evas *) eina_inlist_remove(EINA_INLIST_GET(ecore_evases), EINA_INLIST_GET(ee));
|
||||
|
||||
free(ee->engine.buffer.pixels);
|
||||
}
|
||||
_ecore_evas_buffer_shutdown();
|
||||
|
@ -91,11 +83,6 @@ _ecore_evas_buffer_shutdown(void)
|
|||
_ecore_evas_init_count--;
|
||||
if (_ecore_evas_init_count == 0)
|
||||
{
|
||||
while (ecore_evases)
|
||||
{
|
||||
_ecore_evas_free(ecore_evases);
|
||||
}
|
||||
if (_ecore_evas_fps_debug) _ecore_evas_fps_debug_shutdown();
|
||||
}
|
||||
if (_ecore_evas_init_count < 0) _ecore_evas_init_count = 0;
|
||||
return _ecore_evas_init_count;
|
||||
|
@ -372,7 +359,7 @@ _ecore_evas_buffer_cb_hide(void *data, Evas *e __UNUSED__, Evas_Object *obj __UN
|
|||
if (ee->func.fn_hide) ee->func.fn_hide(ee);
|
||||
}
|
||||
|
||||
static const Ecore_Evas_Engine_Func _ecore_buffer_engine_func =
|
||||
static Ecore_Evas_Engine_Func _ecore_buffer_engine_func =
|
||||
{
|
||||
_ecore_evas_buffer_free,
|
||||
NULL,
|
||||
|
@ -418,7 +405,9 @@ static const Ecore_Evas_Engine_Func _ecore_buffer_engine_func =
|
|||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL
|
||||
NULL,
|
||||
|
||||
NULL // render
|
||||
};
|
||||
#endif
|
||||
|
||||
|
@ -499,7 +488,9 @@ ecore_evas_buffer_new(int w, int h)
|
|||
|
||||
evas_event_feed_mouse_in(ee->evas, 0, NULL);
|
||||
|
||||
ecore_evases = (Ecore_Evas *) eina_inlist_prepend(EINA_INLIST_GET(ecore_evases), EINA_INLIST_GET(ee));
|
||||
ee->engine.func->fn_render = _ecore_evas_buffer_render;
|
||||
_ecore_evas_register(ee);
|
||||
|
||||
return ee;
|
||||
#else
|
||||
return NULL;
|
||||
|
@ -636,6 +627,9 @@ ecore_evas_object_image_new(Ecore_Evas *ee_target)
|
|||
evas_key_lock_add(ee->evas, "Scroll_Lock");
|
||||
|
||||
ee_target->sub_ecore_evas = eina_list_append(ee_target->sub_ecore_evas, ee);
|
||||
|
||||
ee->engine.func->fn_render = _ecore_evas_buffer_render;
|
||||
|
||||
return o;
|
||||
#else
|
||||
return NULL;
|
||||
|
|
|
@ -19,14 +19,10 @@
|
|||
|
||||
#ifdef BUILD_ECORE_EVAS_DIRECTFB
|
||||
static int _ecore_evas_init_count = 0;
|
||||
static int _ecore_evas_fps_debug = 0;
|
||||
static Ecore_Event_Handler *ecore_evas_event_handlers[13];
|
||||
|
||||
static Ecore_Evas *ecore_evases = NULL;
|
||||
static Eina_Hash *ecore_evases_hash = NULL;
|
||||
|
||||
static Ecore_Idle_Enterer *ecore_evas_directfb_idle_enterer = NULL;
|
||||
|
||||
static void
|
||||
_ecore_evas_directfb_render(Ecore_Evas *ee)
|
||||
{
|
||||
|
@ -51,28 +47,6 @@ _ecore_evas_directfb_render(Ecore_Evas *ee)
|
|||
if (ee->func.fn_post_render) ee->func.fn_post_render(ee);
|
||||
}
|
||||
|
||||
static int
|
||||
_ecore_evas_directfb_idle_enter(void *data __UNUSED__)
|
||||
{
|
||||
Ecore_Evas *ee;
|
||||
double t1 = 0.0;
|
||||
double t2 = 0.0;
|
||||
|
||||
if (!ecore_evases) return 1;
|
||||
if (_ecore_evas_fps_debug)
|
||||
{
|
||||
t1 = ecore_time_get();
|
||||
}
|
||||
EINA_INLIST_FOREACH(ecore_evases, ee)
|
||||
_ecore_evas_directfb_render(ee);
|
||||
if (_ecore_evas_fps_debug)
|
||||
{
|
||||
t2 = ecore_time_get();
|
||||
_ecore_evas_fps_debug_rendertime_add(t2 - t1);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
static char *
|
||||
_ecore_evas_directfb_winid_str_get(Ecore_X_Window win)
|
||||
{
|
||||
|
@ -258,12 +232,8 @@ _ecore_evas_directfb_shutdown(void)
|
|||
{
|
||||
int i;
|
||||
|
||||
while (ecore_evases) _ecore_evas_free(ecore_evases);
|
||||
for (i = 0; i < 8; i++)
|
||||
ecore_event_handler_del(ecore_evas_event_handlers[i]);
|
||||
ecore_idle_enterer_del(ecore_evas_directfb_idle_enterer);
|
||||
ecore_evas_directfb_idle_enterer = NULL;
|
||||
if (_ecore_evas_fps_debug) _ecore_evas_fps_debug_shutdown();
|
||||
}
|
||||
if (_ecore_evas_init_count < 0) _ecore_evas_init_count = 0;
|
||||
return _ecore_evas_init_count;
|
||||
|
@ -278,9 +248,6 @@ _ecore_evas_directfb_init(void)
|
|||
{
|
||||
_ecore_evas_init_count++;
|
||||
if (_ecore_evas_init_count > 1) return _ecore_evas_init_count;
|
||||
if (getenv("ECORE_EVAS_FPS_DEBUG")) _ecore_evas_fps_debug = 1;
|
||||
ecore_evas_directfb_idle_enterer = ecore_idle_enterer_add(_ecore_evas_directfb_idle_enter, NULL);
|
||||
if (_ecore_evas_fps_debug) _ecore_evas_fps_debug_init();
|
||||
|
||||
ecore_evas_event_handlers[0] = ecore_event_handler_add(ECORE_DIRECTFB_EVENT_KEY_DOWN, _ecore_evas_directfb_event_key_down, NULL);
|
||||
ecore_evas_event_handlers[1] = ecore_event_handler_add(ECORE_DIRECTFB_EVENT_KEY_UP, _ecore_evas_directfb_event_key_up, NULL);
|
||||
|
@ -307,7 +274,6 @@ _ecore_evas_directfb_free(Ecore_Evas *ee)
|
|||
{
|
||||
eina_hash_del(ecore_evases_hash, _ecore_evas_directfb_winid_str_get(ee->engine.directfb.window->id), ee);
|
||||
ecore_directfb_window_free(ee->engine.directfb.window);
|
||||
ecore_evases = (Ecore_Evas *) eina_inlist_remove(EINA_INLIST_GET(ecore_evases), EINA_INLIST_GET(ee));
|
||||
_ecore_evas_directfb_shutdown();
|
||||
ecore_directfb_shutdown();
|
||||
}
|
||||
|
@ -469,7 +435,7 @@ _ecore_evas_directfb_window_get(const Ecore_Evas *ee)
|
|||
#endif
|
||||
|
||||
#ifdef BUILD_ECORE_EVAS_DIRECTFB
|
||||
static const Ecore_Evas_Engine_Func _ecore_directfb_engine_func =
|
||||
static Ecore_Evas_Engine_Func _ecore_directfb_engine_func =
|
||||
{
|
||||
_ecore_evas_directfb_free, /* free an ecore_evas */
|
||||
NULL, /* cb resize */
|
||||
|
@ -515,7 +481,9 @@ static const Ecore_Evas_Engine_Func _ecore_directfb_engine_func =
|
|||
NULL, /* withdrawn */
|
||||
NULL, /* sticky */
|
||||
NULL, /* ignore events */
|
||||
NULL /* alpha */
|
||||
NULL, /* alpha */
|
||||
|
||||
NULL // render
|
||||
};
|
||||
#endif
|
||||
|
||||
|
@ -572,7 +540,10 @@ ecore_evas_directfb_new(const char *disp_name, int windowed, int x, int y, int w
|
|||
einfo->info.surface = window->surface;
|
||||
evas_engine_info_set(ee->evas, (Evas_Engine_Info *)einfo);
|
||||
}
|
||||
ecore_evases = (Ecore_Evas *) eina_inlist_prepend(EINA_INLIST_GET(ecore_evases), EINA_INLIST_GET(ee));
|
||||
|
||||
ee->engine.func->fn_render = _ecore_evas_directfb_render;
|
||||
_ecore_evas_register(ee);
|
||||
|
||||
if (!ecore_evases_hash)
|
||||
ecore_evases_hash = eina_hash_string_superfast_new(NULL);
|
||||
eina_hash_add(ecore_evases_hash, _ecore_evas_directfb_winid_str_get(ee->engine.directfb.window->id), ee);
|
||||
|
|
|
@ -22,12 +22,9 @@
|
|||
#ifdef BUILD_ECORE_EVAS_FB
|
||||
static int _ecore_evas_init_count = 0;
|
||||
|
||||
static int _ecore_evas_fps_debug = 0;
|
||||
static char *ecore_evas_default_display = "0";
|
||||
static Eina_List *ecore_evas_input_devices = NULL;
|
||||
static Ecore_Evas *ecore_evases = NULL;
|
||||
static Ecore_Event_Handler *ecore_evas_event_handlers[6] = {NULL, NULL, NULL, NULL, NULL, NULL};
|
||||
static Ecore_Idle_Enterer *ecore_evas_idle_enterer = NULL;
|
||||
|
||||
static void
|
||||
_ecore_evas_mouse_move_process_fb(Ecore_Evas *ee, int x, int y, unsigned int timestamp)
|
||||
|
@ -67,10 +64,12 @@ _ecore_evas_mouse_move_process_fb(Ecore_Evas *ee, int x, int y, unsigned int tim
|
|||
evas_event_feed_mouse_move(ee->evas, y, (fbw - ee->w) + ee->w - x - 1, timestamp, NULL);
|
||||
}
|
||||
|
||||
static Ecore_Evas *fb_ee = NULL;
|
||||
|
||||
static Ecore_Evas *
|
||||
_ecore_evas_fb_match(void)
|
||||
{
|
||||
return ecore_evases;
|
||||
return fb_ee;
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -80,8 +79,7 @@ _ecore_evas_fb_lose(void *data __UNUSED__)
|
|||
Eina_List *ll;
|
||||
Ecore_Fb_Input_Device *dev;
|
||||
|
||||
EINA_INLIST_FOREACH(ecore_evases, ee)
|
||||
ee->visible = 0;
|
||||
if (fb_ee) fb_ee->visible = 0;
|
||||
|
||||
EINA_LIST_FOREACH(ecore_evas_input_devices, ll, dev)
|
||||
ecore_fb_input_device_listen(dev, 0);
|
||||
|
@ -94,8 +92,10 @@ _ecore_evas_fb_gain(void *data __UNUSED__)
|
|||
Eina_List *ll;
|
||||
Ecore_Fb_Input_Device *dev;
|
||||
|
||||
EINA_INLIST_FOREACH(ecore_evases,ee)
|
||||
if (fb_ee)
|
||||
{
|
||||
ee = fb_ee;
|
||||
|
||||
ee->visible = 1;
|
||||
if ((ee->rotation == 90) || (ee->rotation == 270))
|
||||
evas_damage_rectangle_add(ee->evas, 0, 0, ee->h, ee->w);
|
||||
|
@ -191,19 +191,10 @@ _ecore_evas_event_mouse_wheel(void *data __UNUSED__, int type __UNUSED__, void *
|
|||
}
|
||||
|
||||
static int
|
||||
_ecore_evas_idle_enter(void *data __UNUSED__)
|
||||
_ecore_evas_fb_render(Ecore_Evas *ee)
|
||||
{
|
||||
Ecore_Evas *ee;
|
||||
double t1 = 0.0;
|
||||
double t2 = 0.0;
|
||||
int rend = 0;
|
||||
|
||||
if (!ecore_evases) return 1;
|
||||
if (_ecore_evas_fps_debug)
|
||||
{
|
||||
t1 = ecore_time_get();
|
||||
}
|
||||
EINA_INLIST_FOREACH(ecore_evases, ee)
|
||||
{
|
||||
if (ee->visible)
|
||||
{
|
||||
Eina_List *updates;
|
||||
|
@ -226,18 +217,13 @@ _ecore_evas_idle_enter(void *data __UNUSED__)
|
|||
{
|
||||
evas_render_updates_free(updates);
|
||||
_ecore_evas_idle_timeout_update(ee);
|
||||
rend = 1;
|
||||
}
|
||||
if (ee->func.fn_post_render) ee->func.fn_post_render(ee);
|
||||
}
|
||||
else
|
||||
evas_norender(ee->evas);
|
||||
}
|
||||
if (_ecore_evas_fps_debug)
|
||||
{
|
||||
t2 = ecore_time_get();
|
||||
_ecore_evas_fps_debug_rendertime_add(t2 - t1);
|
||||
}
|
||||
return 1;
|
||||
return rend;
|
||||
}
|
||||
|
||||
static int
|
||||
|
@ -254,9 +240,6 @@ _ecore_evas_fb_init(int w, int h)
|
|||
_ecore_evas_init_count++;
|
||||
if (_ecore_evas_init_count > 1) return _ecore_evas_init_count;
|
||||
|
||||
if (getenv("ECORE_EVAS_FPS_DEBUG")) _ecore_evas_fps_debug = 1;
|
||||
ecore_evas_idle_enterer = ecore_idle_enterer_add(_ecore_evas_idle_enter, NULL);
|
||||
if (_ecore_evas_fps_debug) _ecore_evas_fps_debug_init();
|
||||
/* register all input devices */
|
||||
input_dir = opendir("/dev/input/");
|
||||
if (!input_dir) return _ecore_evas_init_count;
|
||||
|
@ -322,7 +305,7 @@ _ecore_evas_fb_init(int w, int h)
|
|||
static void
|
||||
_ecore_evas_fb_free(Ecore_Evas *ee)
|
||||
{
|
||||
ecore_evases = (Ecore_Evas *) eina_inlist_remove(EINA_INLIST_GET(ecore_evases), EINA_INLIST_GET(ee));
|
||||
if (fb_ee == ee) fb_ee = NULL;
|
||||
_ecore_evas_fb_shutdown();
|
||||
ecore_fb_shutdown();
|
||||
}
|
||||
|
@ -521,19 +504,15 @@ _ecore_evas_fb_shutdown(void)
|
|||
{
|
||||
int i;
|
||||
|
||||
while (ecore_evases) _ecore_evas_free(ecore_evases);
|
||||
for (i = 0; i < 5; i++)
|
||||
ecore_event_handler_del(ecore_evas_event_handlers[i]);
|
||||
ecore_idle_enterer_del(ecore_evas_idle_enterer);
|
||||
ecore_evas_idle_enterer = NULL;
|
||||
if (_ecore_evas_fps_debug) _ecore_evas_fps_debug_shutdown();
|
||||
ecore_fb_ts_shutdown();
|
||||
}
|
||||
if (_ecore_evas_init_count < 0) _ecore_evas_init_count = 0;
|
||||
return _ecore_evas_init_count;
|
||||
}
|
||||
|
||||
static const Ecore_Evas_Engine_Func _ecore_fb_engine_func =
|
||||
static Ecore_Evas_Engine_Func _ecore_fb_engine_func =
|
||||
{
|
||||
_ecore_evas_fb_free,
|
||||
NULL,
|
||||
|
@ -579,7 +558,9 @@ static const Ecore_Evas_Engine_Func _ecore_fb_engine_func =
|
|||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL
|
||||
NULL,
|
||||
|
||||
NULL // render
|
||||
};
|
||||
#endif
|
||||
|
||||
|
@ -673,7 +654,10 @@ ecore_evas_fb_new(const char *disp_name, int rotation, int w, int h)
|
|||
|
||||
evas_event_feed_mouse_in(ee->evas, (unsigned int)((unsigned long long)(ecore_time_get() * 1000.0) & 0xffffffff), NULL);
|
||||
|
||||
ecore_evases = (Ecore_Evas *) eina_inlist_prepend(EINA_INLIST_GET(ecore_evases), EINA_INLIST_GET(ee));
|
||||
ee->engine.func->fn_render = _ecore_evas_buffer_render;
|
||||
_ecore_evas_register(ee);
|
||||
fb_ee = ee;
|
||||
|
||||
return ee;
|
||||
}
|
||||
#else
|
||||
|
|
|
@ -183,6 +183,8 @@ struct _Ecore_Evas_Engine_Func
|
|||
void (*fn_sticky_set) (Ecore_Evas *ee, int sticky);
|
||||
void (*fn_ignore_events_set) (Ecore_Evas *ee, int ignore);
|
||||
void (*fn_alpha_set) (Ecore_Evas *ee, int alpha);
|
||||
|
||||
int (*fn_render) (Ecore_Evas *ee);
|
||||
};
|
||||
|
||||
struct _Ecore_Evas_Engine
|
||||
|
@ -331,6 +333,8 @@ struct _Ecore_Evas
|
|||
Eina_List *sub_ecore_evas;
|
||||
|
||||
unsigned char ignore_events : 1;
|
||||
unsigned char manual_render : 1;
|
||||
unsigned char registered : 1;
|
||||
};
|
||||
|
||||
#ifdef BUILD_ECORE_EVAS_X11
|
||||
|
@ -356,6 +360,7 @@ int _ecore_evas_wince_shutdown(void);
|
|||
void _ecore_evas_fps_debug_init(void);
|
||||
void _ecore_evas_fps_debug_shutdown(void);
|
||||
void _ecore_evas_fps_debug_rendertime_add(double t);
|
||||
void _ecore_evas_register(Ecore_Evas *ee);
|
||||
void _ecore_evas_free(Ecore_Evas *ee);
|
||||
void _ecore_evas_idle_timeout_update(Ecore_Evas *ee);
|
||||
void _ecore_evas_mouse_move_process(Ecore_Evas *ee, int x, int y, unsigned int timestamp);
|
||||
|
|
|
@ -21,6 +21,8 @@
|
|||
#include "Ecore_Quartz.h"
|
||||
#include "Evas_Engine_Quartz.h"
|
||||
|
||||
// FIXME: this engine has lots of problems. only 1 window at a time, drawRect looks wrong, doesnt handle resizes and more
|
||||
|
||||
static int _ecore_evas_init_count = 0;
|
||||
static Ecore_Evas *ecore_evases = NULL;
|
||||
static Ecore_Event_Handler *ecore_evas_event_handlers[4] = {
|
||||
|
@ -292,7 +294,7 @@ _ecore_evas_object_cursor_set(Ecore_Evas *ee, Evas_Object *obj, int layer, int h
|
|||
evas_object_event_callback_add(obj, EVAS_CALLBACK_DEL, _ecore_evas_object_cursor_del, ee);
|
||||
}
|
||||
|
||||
static const Ecore_Evas_Engine_Func _ecore_quartz_engine_func =
|
||||
static Ecore_Evas_Engine_Func _ecore_quartz_engine_func =
|
||||
{
|
||||
_ecore_evas_quartz_free,
|
||||
NULL,
|
||||
|
@ -336,7 +338,9 @@ static const Ecore_Evas_Engine_Func _ecore_quartz_engine_func =
|
|||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL
|
||||
NULL,
|
||||
|
||||
NULL // render
|
||||
};
|
||||
#endif
|
||||
|
||||
|
|
|
@ -16,28 +16,26 @@
|
|||
#include "ecore_evas_private.h"
|
||||
#include "Ecore_Evas.h"
|
||||
|
||||
// fixme: 1 sdl window only at a time? seems wrong
|
||||
|
||||
#ifdef BUILD_ECORE_EVAS_SOFTWARE_SDL
|
||||
|
||||
/* static char *ecore_evas_default_display = "0"; */
|
||||
/* static Ecore_List *ecore_evas_input_devices = NULL; */
|
||||
|
||||
static int _ecore_evas_init_count = 0;
|
||||
#ifndef _WIN32
|
||||
static int _ecore_evas_fps_debug = 0;
|
||||
#endif /* _WIN32 */
|
||||
static Ecore_Evas *ecore_evases = NULL;
|
||||
|
||||
static Ecore_Evas *sdl_ee = NULL;
|
||||
static Ecore_Event_Handler *ecore_evas_event_handlers[4] = {
|
||||
NULL, NULL, NULL, NULL
|
||||
};
|
||||
static Ecore_Idle_Enterer *ecore_evas_idle_enterer = NULL;
|
||||
static Ecore_Poller *ecore_evas_event = NULL;
|
||||
|
||||
static const char *ecore_evas_sdl_default = "EFL SDL";
|
||||
|
||||
static Ecore_Evas *
|
||||
_ecore_evas_sdl_match(void)
|
||||
{
|
||||
return ecore_evases;
|
||||
return sdl_ee;
|
||||
}
|
||||
|
||||
static int
|
||||
|
@ -99,7 +97,7 @@ _ecore_evas_sdl_event_video_expose(void *data __UNUSED__, int type __UNUSED__, v
|
|||
return 0;
|
||||
}
|
||||
|
||||
static void
|
||||
static int
|
||||
_ecore_evas_render(Ecore_Evas *ee)
|
||||
{
|
||||
Eina_List *updates;
|
||||
|
@ -110,24 +108,14 @@ _ecore_evas_render(Ecore_Evas *ee)
|
|||
evas_render_updates_free(updates);
|
||||
_ecore_evas_idle_timeout_update(ee);
|
||||
}
|
||||
return (int)updates;
|
||||
}
|
||||
|
||||
static int
|
||||
_ecore_evas_idle_enter(void *data __UNUSED__)
|
||||
ecore_evas_sdl_render(Ecore_Evas *ee)
|
||||
{
|
||||
Ecore_Evas *ee;
|
||||
double t1 = 0.0;
|
||||
double t2 = 0.0;
|
||||
int rend = 0;
|
||||
|
||||
if (!ecore_evases) return 1;
|
||||
#ifndef _WIN32
|
||||
if (_ecore_evas_fps_debug)
|
||||
{
|
||||
t1 = ecore_time_get();
|
||||
}
|
||||
#endif /* _WIN32 */
|
||||
EINA_INLIST_FOREACH(ecore_evases, ee)
|
||||
{
|
||||
#ifdef BUILD_ECORE_EVAS_SOFTWARE_BUFFER
|
||||
Eina_List *ll;
|
||||
Ecore_Evas *ee2;
|
||||
|
@ -142,31 +130,22 @@ _ecore_evas_idle_enter(void *data __UNUSED__)
|
|||
|
||||
if (ee->func.fn_pre_render) ee->func.fn_pre_render(ee);
|
||||
|
||||
if (ee->prop.avoid_damage) _ecore_evas_render(ee);
|
||||
if (ee->prop.avoid_damage) rend = _ecore_evas_render(ee);
|
||||
else if ((ee->visible) ||
|
||||
((ee->should_be_visible) && (ee->prop.fullscreen)) ||
|
||||
((ee->should_be_visible) && (ee->prop.override)))
|
||||
_ecore_evas_render(ee);
|
||||
rend = _ecore_evas_render(ee);
|
||||
else
|
||||
evas_norender(ee->evas);
|
||||
|
||||
if (ee->func.fn_post_render) ee->func.fn_post_render(ee);
|
||||
}
|
||||
#ifndef _WIN32
|
||||
if (_ecore_evas_fps_debug)
|
||||
{
|
||||
t2 = ecore_time_get();
|
||||
_ecore_evas_fps_debug_rendertime_add(t2 - t1);
|
||||
}
|
||||
#endif /* _WIN32 */
|
||||
return 1;
|
||||
return rend;
|
||||
}
|
||||
|
||||
static int
|
||||
_ecore_evas_sdl_event(void *data __UNUSED__)
|
||||
{
|
||||
ecore_sdl_feed_events();
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@ -179,7 +158,10 @@ _ecore_evas_sdl_init(int w __UNUSED__, int h __UNUSED__)
|
|||
#ifndef _WIN32
|
||||
if (getenv("ECORE_EVAS_FPS_DEBUG")) _ecore_evas_fps_debug = 1;
|
||||
#endif /* _WIN32 */
|
||||
ecore_evas_idle_enterer = ecore_idle_enterer_add(_ecore_evas_idle_enter, NULL);
|
||||
// this is pretty bad: poller? and set poll time? pol time is meant to be
|
||||
// adjustable for things like polling battery state, or amoutn of spare
|
||||
// memory etc.
|
||||
//
|
||||
ecore_evas_event = ecore_poller_add(ECORE_POLLER_CORE, 1, _ecore_evas_sdl_event, NULL);
|
||||
ecore_poller_poll_interval_set(ECORE_POLLER_CORE, 0.006);
|
||||
#ifndef _WIN32
|
||||
|
@ -204,13 +186,9 @@ _ecore_evas_sdl_shutdown(void)
|
|||
{
|
||||
int i;
|
||||
|
||||
while (ecore_evases) _ecore_evas_free(ecore_evases);
|
||||
|
||||
for (i = 0; i < sizeof (ecore_evas_event_handlers) / sizeof (Ecore_Event_Handler*); i++)
|
||||
ecore_event_handler_del(ecore_evas_event_handlers[i]);
|
||||
ecore_event_evas_shutdown();
|
||||
ecore_idle_enterer_del(ecore_evas_idle_enterer);
|
||||
ecore_evas_idle_enterer = NULL;
|
||||
ecore_poller_del(ecore_evas_event);
|
||||
ecore_evas_event = NULL;
|
||||
#ifndef _WIN32
|
||||
|
@ -224,7 +202,8 @@ _ecore_evas_sdl_shutdown(void)
|
|||
static void
|
||||
_ecore_evas_sdl_free(Ecore_Evas *ee)
|
||||
{
|
||||
ecore_evases = (Ecore_Evas *) eina_inlist_remove(EINA_INLIST_GET(ecore_evases), EINA_INLIST_GET(ee));
|
||||
if (sdl_ee == ee) sdl_ee = NULL;
|
||||
|
||||
ecore_event_window_unregister(0);
|
||||
_ecore_evas_sdl_shutdown();
|
||||
ecore_sdl_shutdown();
|
||||
|
@ -300,7 +279,7 @@ _ecore_evas_object_cursor_set(Ecore_Evas *ee, Evas_Object *obj, int layer, int h
|
|||
evas_object_event_callback_add(obj, EVAS_CALLBACK_DEL, _ecore_evas_object_cursor_del, ee);
|
||||
}
|
||||
|
||||
static const Ecore_Evas_Engine_Func _ecore_sdl_engine_func =
|
||||
static Ecore_Evas_Engine_Func _ecore_sdl_engine_func =
|
||||
{
|
||||
_ecore_evas_sdl_free,
|
||||
NULL,
|
||||
|
@ -346,7 +325,9 @@ static const Ecore_Evas_Engine_Func _ecore_sdl_engine_func =
|
|||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL
|
||||
NULL,
|
||||
|
||||
NULL // render
|
||||
};
|
||||
|
||||
static Ecore_Evas*
|
||||
|
@ -423,7 +404,11 @@ _ecore_evas_internal_sdl_new(int rmethod, const char* name, int w, int h, int fu
|
|||
|
||||
SDL_ShowCursor(SDL_DISABLE);
|
||||
|
||||
ecore_evases = (Ecore_Evas *) eina_inlist_prepend(EINA_INLIST_GET(ecore_evases), EINA_INLIST_GET(ee));
|
||||
ee->engine.func->fn_render = _ecore_evas_sdl_render;
|
||||
_ecore_evas_register(ee);
|
||||
|
||||
sdl_ee = ee;
|
||||
|
||||
return ee;
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -26,11 +26,8 @@
|
|||
#define ECORE_EVAS_EVENT_COUNT 8
|
||||
|
||||
static int _ecore_evas_init_count = 0;
|
||||
static int _ecore_evas_fps_debug = 0;
|
||||
|
||||
static Ecore_Event_Handler *ecore_evas_event_handlers[ECORE_EVAS_EVENT_COUNT];
|
||||
static Ecore_Idle_Enterer *ecore_evas_idle_enterer = NULL;
|
||||
static Ecore_Evas *ecore_evases = NULL;
|
||||
|
||||
static int _ecore_evas_win32_event_mouse_in(void *data __UNUSED__, int type __UNUSED__, void *event);
|
||||
|
||||
|
@ -50,10 +47,11 @@ static int _ecore_evas_win32_event_window_delete_request(void *data __UNUSED__,
|
|||
|
||||
/* Private functions */
|
||||
|
||||
static void
|
||||
static int
|
||||
_ecore_evas_win32_render(Ecore_Evas *ee)
|
||||
{
|
||||
Eina_List *updates;
|
||||
int rend = 0;
|
||||
Eina_List *updates = NULL;
|
||||
#ifdef BUILD_ECORE_EVAS_SOFTWARE_BUFFER
|
||||
Eina_List *ll;
|
||||
Ecore_Evas *ee2;
|
||||
|
@ -88,31 +86,9 @@ _ecore_evas_win32_render(Ecore_Evas *ee)
|
|||
}
|
||||
else
|
||||
evas_norender(ee->evas);
|
||||
if (updates) rend = 1;
|
||||
if (ee->func.fn_post_render) ee->func.fn_post_render(ee);
|
||||
}
|
||||
|
||||
static int
|
||||
_ecore_evas_win32_idle_enter(void *data __UNUSED__)
|
||||
{
|
||||
Ecore_Evas *ee;
|
||||
double t1 = 0.0;
|
||||
double t2 = 0.0;
|
||||
|
||||
if (!ecore_evases) return 1;
|
||||
if (_ecore_evas_fps_debug)
|
||||
{
|
||||
t1 = ecore_time_get();
|
||||
}
|
||||
EINA_INLIST_FOREACH(ecore_evases, ee)
|
||||
_ecore_evas_win32_render(ee);
|
||||
|
||||
/* ecore_x_flush(); */
|
||||
if (_ecore_evas_fps_debug)
|
||||
{
|
||||
t2 = ecore_time_get();
|
||||
/* _ecore_evas_fps_debug_rendertime_add(t2 - t1); */
|
||||
}
|
||||
return 1;
|
||||
return rend;
|
||||
}
|
||||
|
||||
static int
|
||||
|
@ -122,11 +98,6 @@ _ecore_evas_win32_init(void)
|
|||
if (_ecore_evas_init_count > 1)
|
||||
return _ecore_evas_init_count;
|
||||
|
||||
if (getenv("ECORE_EVAS_FPS_DEBUG"))
|
||||
_ecore_evas_fps_debug = 1;
|
||||
|
||||
ecore_evas_idle_enterer = ecore_idle_enterer_add(_ecore_evas_win32_idle_enter, NULL);
|
||||
|
||||
ecore_evas_event_handlers[0] = ecore_event_handler_add(ECORE_WIN32_EVENT_MOUSE_IN, _ecore_evas_win32_event_mouse_in, NULL);
|
||||
ecore_evas_event_handlers[1] = ecore_event_handler_add(ECORE_WIN32_EVENT_MOUSE_OUT, _ecore_evas_win32_event_mouse_out, NULL);
|
||||
ecore_evas_event_handlers[2] = ecore_event_handler_add(ECORE_WIN32_EVENT_WINDOW_DAMAGE, _ecore_evas_win32_event_window_damage, NULL);
|
||||
|
@ -148,11 +119,8 @@ _ecore_evas_win32_shutdown(void)
|
|||
{
|
||||
int i;
|
||||
|
||||
while (ecore_evases) _ecore_evas_free(ecore_evases);
|
||||
for (i = 0; i < ECORE_EVAS_EVENT_COUNT; i++)
|
||||
ecore_event_handler_del(ecore_evas_event_handlers[i]);
|
||||
ecore_idle_enterer_del(ecore_evas_idle_enterer);
|
||||
ecore_evas_idle_enterer = NULL;
|
||||
ecore_event_evas_shutdown();
|
||||
}
|
||||
|
||||
|
@ -401,7 +369,6 @@ _ecore_evas_win32_free(Ecore_Evas *ee)
|
|||
|
||||
ecore_win32_window_free((struct _Ecore_Win32_Window *)ee->prop.window);
|
||||
ecore_event_window_unregister(ee->prop.window);
|
||||
ecore_evases = (Ecore_Evas *) eina_inlist_remove(EINA_INLIST_GET(ecore_evases), EINA_INLIST_GET(ee));
|
||||
_ecore_evas_win32_shutdown();
|
||||
ecore_win32_shutdown();
|
||||
}
|
||||
|
@ -835,7 +802,7 @@ _ecore_evas_win32_fullscreen_set(Ecore_Evas *ee, int on)
|
|||
}
|
||||
|
||||
|
||||
static const Ecore_Evas_Engine_Func _ecore_win32_engine_func =
|
||||
static Ecore_Evas_Engine_Func _ecore_win32_engine_func =
|
||||
{
|
||||
_ecore_evas_win32_free,
|
||||
NULL,
|
||||
|
@ -881,7 +848,9 @@ static const Ecore_Evas_Engine_Func _ecore_win32_engine_func =
|
|||
NULL, /* _ecore_evas_x_withdrawn_set */
|
||||
NULL, /* _ecore_evas_x_sticky_set */
|
||||
NULL, /* _ecore_evas_x_ignore_events_set */
|
||||
NULL /* _ecore_evas_x_alpha_set */
|
||||
NULL, /* _ecore_evas_x_alpha_set */
|
||||
|
||||
NULL // render
|
||||
};
|
||||
|
||||
#endif /* BUILD_ECORE_EVAS_WIN32 */
|
||||
|
@ -1108,7 +1077,8 @@ _ecore_evas_win32_new_internal(int (*_ecore_evas_engine_init)(Ecore_Evas *ee),
|
|||
return NULL;
|
||||
}
|
||||
|
||||
ecore_evases = (Ecore_Evas *) eina_inlist_prepend(EINA_INLIST_GET(ecore_evases), EINA_INLIST_GET(ee));
|
||||
ee->engine.func->fn_render = _ecore_evas_win32_render;
|
||||
_ecore_evas_register(ee);
|
||||
ecore_event_window_register(ee->prop.window, ee, ee->evas, _ecore_evas_mouse_move_process);
|
||||
|
||||
return ee;
|
||||
|
|
|
@ -26,11 +26,8 @@
|
|||
#define ECORE_EVAS_EVENT_COUNT 7
|
||||
|
||||
static int _ecore_evas_init_count = 0;
|
||||
static int _ecore_evas_fps_debug = 0;
|
||||
|
||||
static Ecore_Event_Handler *ecore_evas_event_handlers[ECORE_EVAS_EVENT_COUNT];
|
||||
static Ecore_Idle_Enterer *ecore_evas_idle_enterer = NULL;
|
||||
static Ecore_Evas *ecore_evases = NULL;
|
||||
|
||||
static int _ecore_evas_wince_event_mouse_in(void *data __UNUSED__, int type __UNUSED__, void *event);
|
||||
|
||||
|
@ -48,9 +45,10 @@ static int _ecore_evas_wince_event_window_delete_request(void *data __UNUSED__,
|
|||
|
||||
/* Private functions */
|
||||
|
||||
static void
|
||||
static int
|
||||
_ecore_evas_wince_render(Ecore_Evas *ee)
|
||||
{
|
||||
int rend = 0;
|
||||
Eina_List *updates = NULL;
|
||||
#ifdef BUILD_ECORE_EVAS_SOFTWARE_BUFFER
|
||||
Eina_List *ll;
|
||||
|
@ -86,30 +84,9 @@ _ecore_evas_wince_render(Ecore_Evas *ee)
|
|||
}
|
||||
else
|
||||
evas_norender(ee->evas);
|
||||
if (updates) rend = 1;
|
||||
if (ee->func.fn_post_render) ee->func.fn_post_render(ee);
|
||||
}
|
||||
|
||||
static int
|
||||
_ecore_evas_wince_idle_enter(void *data __UNUSED__)
|
||||
{
|
||||
Ecore_Evas *ee;
|
||||
double t1 = 0.0;
|
||||
double t2 = 0.0;
|
||||
|
||||
if (!ecore_evases) return 1;
|
||||
if (_ecore_evas_fps_debug)
|
||||
{
|
||||
t1 = ecore_time_get();
|
||||
}
|
||||
EINA_INLIST_FOREACH(ecore_evases, ee)
|
||||
_ecore_evas_wince_render(ee);
|
||||
|
||||
if (_ecore_evas_fps_debug)
|
||||
{
|
||||
t2 = ecore_time_get();
|
||||
_ecore_evas_fps_debug_rendertime_add(t2 - t1);
|
||||
}
|
||||
return 1;
|
||||
return rend;
|
||||
}
|
||||
|
||||
static int
|
||||
|
@ -119,11 +96,6 @@ _ecore_evas_wince_init(void)
|
|||
if (_ecore_evas_init_count > 1)
|
||||
return _ecore_evas_init_count;
|
||||
|
||||
if (getenv("ECORE_EVAS_FPS_DEBUG"))
|
||||
_ecore_evas_fps_debug = 1;
|
||||
|
||||
ecore_evas_idle_enterer = ecore_idle_enterer_add(_ecore_evas_wince_idle_enter, NULL);
|
||||
|
||||
ecore_evas_event_handlers[0] = ecore_event_handler_add(ECORE_WINCE_EVENT_MOUSE_IN, _ecore_evas_wince_event_mouse_in, NULL);
|
||||
ecore_evas_event_handlers[1] = ecore_event_handler_add(ECORE_WINCE_EVENT_MOUSE_OUT, _ecore_evas_wince_event_mouse_out, NULL);
|
||||
ecore_evas_event_handlers[2] = ecore_event_handler_add(ECORE_WINCE_EVENT_WINDOW_DAMAGE, _ecore_evas_wince_event_window_damage, NULL);
|
||||
|
@ -132,8 +104,6 @@ _ecore_evas_wince_init(void)
|
|||
ecore_evas_event_handlers[5] = ecore_event_handler_add(ECORE_WINCE_EVENT_WINDOW_HIDE, _ecore_evas_wince_event_window_hide, NULL);
|
||||
ecore_evas_event_handlers[6] = ecore_event_handler_add(ECORE_WINCE_EVENT_WINDOW_DELETE_REQUEST, _ecore_evas_wince_event_window_delete_request, NULL);
|
||||
|
||||
if (_ecore_evas_fps_debug) _ecore_evas_fps_debug_init();
|
||||
|
||||
ecore_event_evas_init();
|
||||
return _ecore_evas_init_count;
|
||||
}
|
||||
|
@ -146,12 +116,8 @@ _ecore_evas_wince_shutdown(void)
|
|||
{
|
||||
int i;
|
||||
|
||||
while (ecore_evases) _ecore_evas_free(ecore_evases);
|
||||
for (i = 0; i < ECORE_EVAS_EVENT_COUNT; i++)
|
||||
ecore_event_handler_del(ecore_evas_event_handlers[i]);
|
||||
ecore_idle_enterer_del(ecore_evas_idle_enterer);
|
||||
ecore_evas_idle_enterer = NULL;
|
||||
if (_ecore_evas_fps_debug) _ecore_evas_fps_debug_shutdown();
|
||||
ecore_event_evas_shutdown();
|
||||
}
|
||||
|
||||
|
@ -708,7 +674,7 @@ _ecore_evas_wince_fullscreen_set(Ecore_Evas *ee, int on)
|
|||
}
|
||||
}
|
||||
|
||||
static const Ecore_Evas_Engine_Func _ecore_wince_engine_func =
|
||||
static Ecore_Evas_Engine_Func _ecore_wince_engine_func =
|
||||
{
|
||||
_ecore_evas_wince_free,
|
||||
NULL,
|
||||
|
@ -754,7 +720,9 @@ static const Ecore_Evas_Engine_Func _ecore_wince_engine_func =
|
|||
NULL, /* _ecore_evas_x_withdrawn_set */
|
||||
NULL, /* _ecore_evas_x_sticky_set */
|
||||
NULL, /* _ecore_evas_x_ignore_events_set */
|
||||
NULL /* _ecore_evas_x_alpha_set */
|
||||
NULL, /* _ecore_evas_x_alpha_set */
|
||||
|
||||
NULL // render
|
||||
};
|
||||
|
||||
/* API */
|
||||
|
@ -848,7 +816,8 @@ ecore_evas_software_wince_new_internal(int backend,
|
|||
ecore_wince_window_resume_set((Ecore_WinCE_Window *)ee->prop.window, einfo->func.resume);
|
||||
}
|
||||
|
||||
ecore_evases = (Ecore_Evas *) eina_inlist_prepend(EINA_INLIST_GET(ecore_evases), EINA_INLIST_GET(ee));
|
||||
ee->engine.func->fn_render = _ecore_evas_wince_render;
|
||||
_ecore_evas_register(ee);
|
||||
ecore_event_window_register(ee->prop.window, ee, ee->evas, (Ecore_Event_Mouse_Move_Cb)_ecore_evas_mouse_move_process);
|
||||
|
||||
return ee;
|
||||
|
|
|
@ -21,11 +21,7 @@
|
|||
#ifdef BUILD_ECORE_EVAS_X11
|
||||
static int _ecore_evas_init_count = 0;
|
||||
|
||||
static int _ecore_evas_fps_debug = 0;
|
||||
|
||||
static Ecore_Evas *ecore_evases = NULL;
|
||||
static Ecore_Event_Handler *ecore_evas_event_handlers[12];
|
||||
static Ecore_Idle_Enterer *ecore_evas_idle_enterer = NULL;
|
||||
|
||||
#ifdef HAVE_ECORE_X_XCB
|
||||
static xcb_visualtype_t *
|
||||
|
@ -997,38 +993,11 @@ _ecore_evas_x_layer_update(Ecore_Evas *ee)
|
|||
/* FIXME: Set gnome layer */
|
||||
}
|
||||
|
||||
static int
|
||||
_ecore_evas_x_idle_enter(void *data __UNUSED__)
|
||||
{
|
||||
Ecore_Evas *ee;
|
||||
double t1 = 0.0;
|
||||
double t2 = 0.0;
|
||||
int rend = 0;
|
||||
|
||||
if (!ecore_evases) return 1;
|
||||
if (_ecore_evas_fps_debug)
|
||||
{
|
||||
t1 = ecore_time_get();
|
||||
}
|
||||
EINA_INLIST_FOREACH(ecore_evases, ee)
|
||||
rend |= _ecore_evas_x_render(ee);
|
||||
ecore_x_flush();
|
||||
if (_ecore_evas_fps_debug)
|
||||
{
|
||||
t2 = ecore_time_get();
|
||||
if (rend)
|
||||
_ecore_evas_fps_debug_rendertime_add(t2 - t1);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int
|
||||
_ecore_evas_x_init(void)
|
||||
{
|
||||
_ecore_evas_init_count++;
|
||||
if (_ecore_evas_init_count > 1) return _ecore_evas_init_count;
|
||||
if (getenv("ECORE_EVAS_FPS_DEBUG")) _ecore_evas_fps_debug = 1;
|
||||
ecore_evas_idle_enterer = ecore_idle_enterer_add(_ecore_evas_x_idle_enter, NULL);
|
||||
ecore_evas_event_handlers[0] = ecore_event_handler_add(ECORE_X_EVENT_MOUSE_IN, _ecore_evas_x_event_mouse_in, NULL);
|
||||
ecore_evas_event_handlers[1] = ecore_event_handler_add(ECORE_X_EVENT_MOUSE_OUT, _ecore_evas_x_event_mouse_out, NULL);
|
||||
ecore_evas_event_handlers[2] = ecore_event_handler_add(ECORE_X_EVENT_WINDOW_FOCUS_IN, _ecore_evas_x_event_window_focus_in, NULL);
|
||||
|
@ -1042,7 +1011,6 @@ _ecore_evas_x_init(void)
|
|||
ecore_evas_event_handlers[10] = ecore_event_handler_add(ECORE_X_EVENT_WINDOW_PROPERTY, _ecore_evas_x_event_property_change, NULL);
|
||||
ecore_evas_event_handlers[11] = ecore_event_handler_add(ECORE_X_EVENT_WINDOW_VISIBILITY_CHANGE, _ecore_evas_x_event_visibility_change, NULL);
|
||||
ecore_event_evas_init();
|
||||
if (_ecore_evas_fps_debug) _ecore_evas_fps_debug_init();
|
||||
return _ecore_evas_init_count;
|
||||
}
|
||||
|
||||
|
@ -1068,7 +1036,6 @@ _ecore_evas_x_free(Ecore_Evas *ee)
|
|||
ecore_event_window_unregister(*winp);
|
||||
free(winp);
|
||||
}
|
||||
ecore_evases = (Ecore_Evas *) eina_inlist_remove(EINA_INLIST_GET(ecore_evases), EINA_INLIST_GET(ee));
|
||||
_ecore_evas_x_shutdown();
|
||||
ecore_x_shutdown();
|
||||
}
|
||||
|
@ -2179,19 +2146,15 @@ _ecore_evas_x_shutdown(void)
|
|||
{
|
||||
unsigned int i;
|
||||
|
||||
while (ecore_evases) _ecore_evas_free(ecore_evases);
|
||||
for (i = 0; i < sizeof(ecore_evas_event_handlers) / sizeof(Ecore_Event_Handler*); i++)
|
||||
ecore_event_handler_del(ecore_evas_event_handlers[i]);
|
||||
ecore_idle_enterer_del(ecore_evas_idle_enterer);
|
||||
ecore_evas_idle_enterer = NULL;
|
||||
if (_ecore_evas_fps_debug) _ecore_evas_fps_debug_shutdown();
|
||||
ecore_event_evas_shutdown();
|
||||
}
|
||||
if (_ecore_evas_init_count < 0) _ecore_evas_init_count = 0;
|
||||
return _ecore_evas_init_count;
|
||||
}
|
||||
|
||||
static const Ecore_Evas_Engine_Func _ecore_x_engine_func =
|
||||
static Ecore_Evas_Engine_Func _ecore_x_engine_func =
|
||||
{
|
||||
_ecore_evas_x_free,
|
||||
NULL,
|
||||
|
@ -2237,7 +2200,9 @@ static const Ecore_Evas_Engine_Func _ecore_x_engine_func =
|
|||
_ecore_evas_x_withdrawn_set,
|
||||
_ecore_evas_x_sticky_set,
|
||||
_ecore_evas_x_ignore_events_set,
|
||||
_ecore_evas_x_alpha_set
|
||||
_ecore_evas_x_alpha_set,
|
||||
|
||||
NULL // render
|
||||
};
|
||||
#endif /* BUILD_ECORE_EVAS_X11 */
|
||||
|
||||
|
@ -2485,7 +2450,8 @@ ecore_evas_software_x11_new(const char *disp_name, Ecore_X_Window parent,
|
|||
0 /* window_group */,
|
||||
0 /* is_urgent */);
|
||||
|
||||
ecore_evases = (Ecore_Evas *) eina_inlist_prepend(EINA_INLIST_GET(ecore_evases), EINA_INLIST_GET(ee));
|
||||
ee->engine.func->fn_render = _ecore_evas_x_render;
|
||||
_ecore_evas_register(ee);
|
||||
ecore_event_window_register(ee->prop.window, ee, ee->evas, (Ecore_Event_Mouse_Move_Cb) _ecore_evas_mouse_move_process);
|
||||
return ee;
|
||||
}
|
||||
|
@ -2674,7 +2640,8 @@ ecore_evas_gl_x11_new(const char *disp_name, Ecore_X_Window parent,
|
|||
0 /* window_group */,
|
||||
0 /* is_urgent */);
|
||||
|
||||
ecore_evases = (Ecore_Evas *) eina_inlist_prepend(EINA_INLIST_GET(ecore_evases), EINA_INLIST_GET(ee));
|
||||
ee->engine.func->fn_render = _ecore_evas_x_render;
|
||||
_ecore_evas_register(ee);
|
||||
ecore_event_window_register(ee->prop.window, ee, ee->evas, (Ecore_Event_Mouse_Move_Cb) _ecore_evas_mouse_move_process);
|
||||
# endif /* HAVE_ECORE_X_XCB */
|
||||
|
||||
|
@ -2922,7 +2889,8 @@ ecore_evas_xrender_x11_new(const char *disp_name, Ecore_X_Window parent,
|
|||
0 /* window_group */,
|
||||
0 /* is_urgent */);
|
||||
|
||||
ecore_evases = (Ecore_Evas *) eina_inlist_prepend(EINA_INLIST_GET(ecore_evases), EINA_INLIST_GET(ee));
|
||||
ee->engine.func->fn_render = _ecore_evas_x_render;
|
||||
_ecore_evas_register(ee);
|
||||
ecore_event_window_register(ee->prop.window, ee, ee->evas, (Ecore_Event_Mouse_Move_Cb) _ecore_evas_mouse_move_process);
|
||||
return ee;
|
||||
}
|
||||
|
@ -3134,7 +3102,8 @@ ecore_evas_software_x11_16_new(const char *disp_name, Ecore_X_Window parent,
|
|||
0 /* window_group */,
|
||||
0 /* is_urgent */);
|
||||
|
||||
ecore_evases = (Ecore_Evas *) eina_inlist_prepend(EINA_INLIST_GET(ecore_evases), EINA_INLIST_GET(ee));
|
||||
ee->engine.func->fn_render = _ecore_evas_x_render;
|
||||
_ecore_evas_register(ee);
|
||||
ecore_event_window_register(ee->prop.window, ee, ee->evas, (Ecore_Event_Mouse_Move_Cb) _ecore_evas_mouse_move_process);
|
||||
return ee;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue