I found a bug in ecore main loop while debuging cpu 100% issue on RSS
application.
1. [RSS] RSS application register two io watch callbacks(for G_IO_IN,
G_IO_OUT seperately) for a GIOChannel with g_io_add_watch().
2. [ecore] In _ecore_glib_context_query() function, g_main_context_query()
returns a fd list, and it has 2 fd items for the GIOChannel (channel
id = 20).
itr[0] (16, 1, 0)
itr[1] (15, 1, 0)
itr[2] (20, 1, 0) (G_IO_IN, 0)
itr[3] (20, 4, 0) (G_IO_OUT, 0)
itr[4] (18, 1, 0)
3. [ecore] In _ecore_glib_context_poll_from() function, create read, write,
exception fd list according to the events flags of each fd item.
[6 15 16 18 20], [20], []
4. [ecore] in _ecore_glib_select__locked() function, get active fd number from
select() call
select(21, [6 15 16 18 20], [20], [], NULL) = 1 (out [20])
5. [ecore] In _ecore_glib_context_poll_to() function, there is a bug on
setting revents flag.
(because of incorrect condition check - currently, the logic of the
function cannot handle this case)
itr[0] (16, 1, 0)
itr[1] (15, 1, 0)
itr[2] (20, 1, 4) (set incorrectly)
itr[3] (20, 4, 0) => this should be set as (20, 4, 4)!!!!
itr[4] (18, 1, 0)
6. [ecore] In _ecore_glib_select__locked(), g_main_context_check() function
returns false because of the above bug, so g_main_context_dispatch()
function will not be called.
>> After this, the 2~6 flow is executed repeatedly on ecore main loop
(because 20 out is still active fd) and this makes cpu 100% problem.
SVN revision: 69739
Fix ecore_wl_window surface attach of the buffer for shm and egl types.
NB: This ensures that both efl/elm clients work under the Wayland
Compositor AND the E17 Compositor.
NB: The issue here is that clients (when run under the Wayland
compositor) need to make sure 'iterate' has
been called before creating surfaces so that the wl_compositor is
setup. However, the actual E17 Compositor will hang if 'iterate' is called
to early.
SVN revision: 69707
Handle 'axis' events from multi-touch devices (also handles mouse
wheel).
Remove wl_buffer_damage calls (obsolete in newest wayland).
NB: This will require the 'latest' wayland code from their git repo as
of 2012-03-27.
SVN revision: 69672
- Comment out display_iterate during intialize (hangs compositor
initialize).
- Simplify ecore_wl_flush routine and avoid possible hangs in
wl_display_roundtrip.
- Add function (for trip ;) ) to be able to return the screen dpi.
- Implement functions for input grab/ungrab.
- Set root.x/y in mouse events.
- Remove freeing of mouse_move event (already handled generically).
- Handle setting output mm width/height (for calc of dpi).
- Implement setting surface input & opaque regions.
- Implement popup windows.
- Implement ecore_wl_window_transparent_set function.
- Implement function to allow setting Ecore_Wl_Window type.
- Implement setting the wayland mouse pointer to an image (via
ecore_wl_window_pointer_set).
- Comment out wl_display_iterate during initialize (can cause hangs in
compositor).
- Simplify ecore_wl_flush (to avoid compositor hangs).
SVN revision: 69644
This works in linux, and should fix shm_detection on BSD (including Mac)
BSD, Mac and solaris users : please check that it compiles and shm_open is detected
SVN revision: 69618
This works in linux and windows, and should fix shm_detection on BSD (including Mac)
BSD, Mac and solaris users : please check that it compiles and shm_open is detected
SVN revision: 69616
This works in linux and windows, and should fix shm_detection on BSD (including Mac)
BSD, Mac and solaris users : please check that it compiles and shm_open is detected
SVN revision: 69612
This works in linux and windows, and should fix shm_detection on BSD (including Mac)
BSD, Mac and solaris users : please check that it compiles and shm_open is detected
SVN revision: 69608