Shit, missed the release for 5min. :/ On Fri, Dec 7, 2012 at 3:55 PM, Enlightenment SVN <no-re...@enlightenment.org> wrote: > Log: > Backport 80476. > > ecore-wayland: Fix monitoring ECORE_FD_WRITE defaultly on > wayland display fd lead to 100% cpu usage > > In ecore_wl_init(), adding wayland display fd with ECORE_FD_WRITE > flag make CPU usage 100%. The proper way to monitor the ECORE_FD_WRITE > is when the wl_display_flush() return value < 0 and errno == EAGAIN. > And if wl_display_flush() return, we remove ECORE_FD_WRITE flag from > the display fd. > > Patch by: Alex Wu <zhiwen...@linux.intel.com> > > > > Author: etrunko > Date: 2012-12-07 09:55:37 -0800 (Fri, 07 Dec 2012) > New Revision: 80479 > Trac: http://trac.enlightenment.org/e/changeset/80479 > > Modified: > branches/ecore-1.7/src/lib/ecore_wayland/ecore_wl.c > > Modified: branches/ecore-1.7/src/lib/ecore_wayland/ecore_wl.c > =================================================================== > --- branches/ecore-1.7/src/lib/ecore_wayland/ecore_wl.c 2012-12-07 17:52:51 > UTC (rev 80478) > +++ branches/ecore-1.7/src/lib/ecore_wayland/ecore_wl.c 2012-12-07 17:55:37 > UTC (rev 80479) > @@ -33,6 +33,7 @@ > > /* local function prototypes */ > static Eina_Bool _ecore_wl_shutdown(Eina_Bool close); > +static Eina_Bool _ecore_wl_cb_idle_enterer(void *data); > static Eina_Bool _ecore_wl_cb_handle_data(void *data, Ecore_Fd_Handler *hdl); > static void _ecore_wl_cb_handle_global(void *data, struct wl_registry > *registry, unsigned int id, const char *interface, unsigned int version > __UNUSED__); > static Eina_Bool _ecore_wl_xkb_init(Ecore_Wl_Display *ewd); > @@ -164,10 +165,11 @@ > > _ecore_wl_disp->fd_hdl = > ecore_main_fd_handler_add(_ecore_wl_disp->fd, > - ECORE_FD_READ | ECORE_FD_WRITE, > + ECORE_FD_READ, > _ecore_wl_cb_handle_data, _ecore_wl_disp, > NULL, NULL); > > + ecore_idle_enterer_add(_ecore_wl_cb_idle_enterer, _ecore_wl_disp); > wl_list_init(&_ecore_wl_disp->inputs); > wl_list_init(&_ecore_wl_disp->outputs); > > @@ -422,10 +424,32 @@ > return _ecore_wl_init_count; > } > > +static Eina_Bool > +_ecore_wl_cb_idle_enterer(void *data) > +{ > + Ecore_Wl_Display *ewd; > + int ret; > + > + if (!(ewd = data)) return ECORE_CALLBACK_RENEW; > + > + ret = wl_display_flush(ewd->wl.display); > + if (ret < 0 && errno == EAGAIN) > + { > + ecore_main_fd_handler_active_set(ewd->fd_hdl, ECORE_FD_READ | > ECORE_FD_WRITE); > + } > + else if (ret < 0) > + { > + /* FIXME: need do error processing? */ > + } > + > + return ECORE_CALLBACK_RENEW; > +} > + > static Eina_Bool > _ecore_wl_cb_handle_data(void *data, Ecore_Fd_Handler *hdl) > { > Ecore_Wl_Display *ewd; > + int ret; > > /* LOGFN(__FILE__, __LINE__, __FUNCTION__); */ > > @@ -438,7 +462,15 @@ > if (ecore_main_fd_handler_active_get(hdl, ECORE_FD_READ)) > wl_display_dispatch(ewd->wl.display); > else if (ecore_main_fd_handler_active_get(hdl, ECORE_FD_WRITE)) > - wl_display_flush(ewd->wl.display); > + { > + ret = wl_display_flush(ewd->wl.display); > + if (ret == 0) > + ecore_main_fd_handler_active_set(hdl, ECORE_FD_READ); > + else if (ret == -1 && errno != EAGAIN) > + { > + /* FIXME: need do error processing? */ > + } > + } > > return ECORE_CALLBACK_RENEW; > } > > > ------------------------------------------------------------------------------ > LogMeIn Rescue: Anywhere, Anytime Remote support for IT. Free Trial > Remotely access PCs and mobile devices and provide instant support > Improve your efficiency, and focus on delivering more value-add services > Discover what IT Professionals Know. Rescue delivers > http://p.sf.net/sfu/logmein_12329d2d > _______________________________________________ > enlightenment-svn mailing list > enlightenment-...@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/enlightenment-svn
-- Eduardo de Barros Lima ◤✠◢ ebl...@gmail.com ------------------------------------------------------------------------------ LogMeIn Rescue: Anywhere, Anytime Remote support for IT. Free Trial Remotely access PCs and mobile devices and provide instant support Improve your efficiency, and focus on delivering more value-add services Discover what IT Professionals Know. Rescue delivers http://p.sf.net/sfu/logmein_12329d2d _______________________________________________ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel