We could have an api function that lets a programmer ask for a global by "interface" name. That would be useful so that a programmer wouldn't have to write a "wl_list_foreach..." loop every time they want to get/find a global interface.
>-----Original Message----- >From: Christopher Michael [mailto:cpmicha...@comcast.net] >Sent: Thursday, January 24, 2013 2:14 PM >To: enlightenment-devel@lists.sourceforge.net >Subject: Re: [E-devel] E SVN: etrunko trunk/efl/src/lib/ecore_wayland > >I am wondering if we may want to add an Api function for retrieving sonething >out of these globals .... Just a random thought. I dont have any particular use >case in mind yet tho.... > >dh > >Enlightenment SVN <no-re...@enlightenment.org> wrote: > >>Log: >>Cache wayland globals >> >>Store the wayland registry globals in a list so that we can bind to >>them from a >>user/test program. When a custom interface (protocol extension) is used >>in a >>wayland compositor, this allows user/test program to use that >>interface. For >>instance, one might provide a custom wayland test protocol that give >>access to >>otherwise hidden/missing functionality that allows effective automated >>testing >>(in wayland engines). See the Weston unit test suite for an example of >>this >> concept. >> >> Patch by: "U. Artie Eoff" <ullysses.a.e...@intel.com> >> >> >> >>Author: etrunko >>Date: 2013-01-24 14:03:22 -0800 (Thu, 24 Jan 2013) >>New Revision: 83312 >>Trac: http://trac.enlightenment.org/e/changeset/83312 >> >>Modified: >>trunk/efl/src/lib/ecore_wayland/Ecore_Wayland.h >>trunk/efl/src/lib/ecore_wayland/ecore_wl.c >> >>Modified: trunk/efl/src/lib/ecore_wayland/Ecore_Wayland.h >>========================================================== >========= >>--- trunk/efl/src/lib/ecore_wayland/Ecore_Wayland.h 2013-01-24 >21:42:18 >>UTC (rev 83311) >>+++ trunk/efl/src/lib/ecore_wayland/Ecore_Wayland.h 2013-01-24 >22:03:22 >>UTC (rev 83312) >>@@ -29,6 +29,8 @@ >> typedef struct _Ecore_Wl_Display Ecore_Wl_Display; >> typedef struct _Ecore_Wl_Output Ecore_Wl_Output; >> typedef struct _Ecore_Wl_Input Ecore_Wl_Input; >>+typedef struct _Ecore_Wl_Global Ecore_Wl_Global; >>+ >> # ifndef _ECORE_WAYLAND_WINDOW_PREDEF >> typedef struct _Ecore_Wl_Window Ecore_Wl_Window; >> # endif >>@@ -70,6 +72,14 @@ >> typedef enum _Ecore_Wl_Window_Type Ecore_Wl_Window_Type; >> typedef enum _Ecore_Wl_Window_Buffer_Type >Ecore_Wl_Window_Buffer_Type; >> >>+struct _Ecore_Wl_Global >>+{ >>+ unsigned int id; >>+ char *interface; >>+ unsigned int version; >>+ struct wl_list link; >>+}; >>+ >> struct _Ecore_Wl_Display >> { >> struct >>@@ -91,6 +101,7 @@ >> >> struct wl_list inputs; >> struct wl_list outputs; >>+ struct wl_list globals; >> >> struct >> { >> >>Modified: trunk/efl/src/lib/ecore_wayland/ecore_wl.c >>========================================================== >========= >>--- trunk/efl/src/lib/ecore_wayland/ecore_wl.c 2013-01-24 21:42:18 >UTC >>(rev 83311) >>+++ trunk/efl/src/lib/ecore_wayland/ecore_wl.c 2013-01-24 22:03:22 >UTC >>(rev 83312) >>@@ -132,6 +132,7 @@ >> >> wl_list_init(&_ecore_wl_disp->inputs); >> wl_list_init(&_ecore_wl_disp->outputs); >>+ wl_list_init(&_ecore_wl_disp->globals); >> >> _ecore_wl_disp->wl.registry = >> wl_display_get_registry(_ecore_wl_disp->wl.display); >>@@ -270,6 +271,7 @@ >> { >> Ecore_Wl_Output *out, *tout; >> Ecore_Wl_Input *in, *tin; >>+ Ecore_Wl_Global *global, *tglobal; >> >> wl_list_for_each_safe(out, tout, &_ecore_wl_disp->outputs, link) >> _ecore_wl_output_del(out); >>@@ -277,6 +279,13 @@ >> wl_list_for_each_safe(in, tin, &_ecore_wl_disp->inputs, link) >> _ecore_wl_input_del(in); >> >>+ wl_list_for_each_safe(global, tglobal, >>&_ecore_wl_disp->globals, link) >>+ { >>+ wl_list_remove(&global->link); >>+ free(global->interface); >>+ free(global); >>+ } >>+ >> _ecore_wl_xkb_shutdown(_ecore_wl_disp); >> >> if (_ecore_wl_disp->wl.shell) >>@@ -361,11 +370,18 @@ >>_ecore_wl_cb_handle_global(void *data, struct wl_registry *registry, >>unsigned int id, const char *interface, unsigned int version >>EINA_UNUSED) >> { >> Ecore_Wl_Display *ewd; >>+ Ecore_Wl_Global *global; >> >> LOGFN(__FILE__, __LINE__, __FUNCTION__); >> >> ewd = data; >> >>+ global = malloc(sizeof(*global)); >>+ global->id = id; >>+ global->interface = strdup(interface); >>+ global->version = version; >>+ wl_list_insert(ewd->globals.prev, &global->link); >>+ >> if (!strcmp(interface, "wl_compositor")) >> { >> ewd->wl.compositor = >> >> >>------------------------------------------------------------------------------ >>Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS, >>MVC, Windows 8 Apps, JavaScript and much more. Keep your skills current >>with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft >>MVPs and experts. ON SALE this month only -- learn more at: >>http://p.sf.net/sfu/learnnow-d2d >>_______________________________________________ >>enlightenment-svn mailing list >>enlightenment-...@lists.sourceforge.net >>https://lists.sourceforge.net/lists/listinfo/enlightenment-svn >------------------------------------------------------------------------------ >Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS, >MVC, Windows 8 Apps, JavaScript and much more. Keep your skills current >with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft >MVPs and experts. ON SALE this month only -- learn more at: >http://p.sf.net/sfu/learnnow-d2d >_______________________________________________ >enlightenment-devel mailing list >enlightenment-devel@lists.sourceforge.net >https://lists.sourceforge.net/lists/listinfo/enlightenment-devel ------------------------------------------------------------------------------ Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS, MVC, Windows 8 Apps, JavaScript and much more. Keep your skills current with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft MVPs and experts. ON SALE this month only -- learn more at: http://p.sf.net/sfu/learnnow-d2d _______________________________________________ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel