On Tue, 2 Mar 2010 10:51:27 +1100
Carsten Haitzler (The Rasterman) <ras...@rasterman.com> wrote:

> On Mon, 1 Mar 2010 14:17:03 -0300 Gustavo Sverzut Barbieri
> <barbi...@profusion.mobi> said:
> 
> > On Mon, Mar 1, 2010 at 2:00 PM, Carsten Haitzler
> > <ras...@rasterman.com> wrote:
> > > On Sun, 28 Feb 2010 17:22:13 +0100 Joel Klinghed
> > > <the...@spawned.biz> said:
> > >
> > >> Hi.
> > >>
> > >> The attached patch adds back some options I missed in the new
> > >> enlightenment_remote, namely:
> > >> -desks-get, -desktop-bg-add, -desktop-bg-del and
> > >> -desktop-bg-list.
> > >>
> > >> For this I added:
> > >> org.enlightenment.wm.Desktop.GetVirtualCount
> > >> org.enlightenment.wm.Desktop.Background.Add
> > >> org.enlightenment.wm.Desktop.Background.Del
> > >> org.enlightenment.wm.Desktop.Background.List
> > >
> > > don't mean to discourage.. but this has been aired on this list a
> > > few times now... these - they should go into a module that
> > > extends e's dbus calls - not into core. we didn't get rid of
> > > e_ipc_handlers.h just to have it all come back as dbus instead.
> > > extra modules to extend the dbus calls - load them if u want the
> > > extra dbus calls. :)
> > 
> > And as Rasterman already said in couple of places, to avoid
> > exponential grow in number of modules just to handle dbus, we'd like
> > to see a patch that converts e/src/modules/msgbus_lang to a more
> > generic dbus helpers. At least the core calls could be added there
> > without the need to create another module. (ie: just mv msgbus_lang
> > to msgbus and add your stuff there)
> 
> yeah. collect them together. not 1 module per call. like
> "msgbus-extras" for a whole lot of extra calls that are non-core but
> generally very useful - maybe a "msgbus-hacker" for stuff to twiddle
> deep down things that very few would ever want etc. etc.
> 

Something along the lines of attached then?

Just named the new module msgbus, it includes old msgbus_lang and the
four functions I wanted. The patch does remove all references to
msgbus_lang but does not actually remove the files - also, I could not
figure out how to add a binary file to the patch in a nice way, so copy
msgbus_lang/e-module-msgbus_lang.edj to msgbus/e-module-msgbus.edj for
the module icon.

/Joel Klinghed
Index: src/modules/msgbus/msgbus_desktop.h
===================================================================
--- src/modules/msgbus/msgbus_desktop.h	(revision 0)
+++ src/modules/msgbus/msgbus_desktop.h	(revision 0)
@@ -0,0 +1,9 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+#ifndef MSGBUS_DESKTOP_H
+#define MSGBUS_DESKTOP_H
+
+void msgbus_desktop_init(Eina_Array *ifaces);
+
+#endif /* MSGBUS_DESKTOP_H */
Index: src/modules/msgbus/msgbus_lang.c
===================================================================
--- src/modules/msgbus/msgbus_lang.c	(revision 0)
+++ src/modules/msgbus/msgbus_lang.c	(revision 0)
@@ -0,0 +1,47 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+#include "e.h"
+#include "msgbus_lang.h"
+
+static DBusMessage *
+cb_langs(E_DBus_Object *obj, DBusMessage *message)
+{
+   DBusMessage *reply;
+   DBusMessageIter iter;
+   DBusMessageIter arr;
+   Eina_List * languages;
+   Eina_List * l;
+
+   memset(&arr, 0, sizeof(DBusMessageIter));
+
+   reply = dbus_message_new_method_return(message);
+   dbus_message_iter_init_append(reply, &iter);
+   dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, "s", &arr);
+
+   languages = e_intl_language_list();
+   for (l = languages; l; l = l->next)
+     {
+	const char *str;
+
+	str = l->data;
+	dbus_message_iter_append_basic(&arr, DBUS_TYPE_STRING, &str);
+     }
+
+   dbus_message_iter_close_container(&iter, &arr);
+
+   return reply;
+}
+
+void msgbus_lang_init(Eina_Array *ifaces)
+{
+   E_DBus_Interface* iface;
+
+   iface = e_dbus_interface_new("org.enlightenment.wm.Language");
+   if (iface)
+     {
+	e_dbus_interface_method_add(iface, "List", "", "as", cb_langs);
+	e_msgbus_interface_attach(iface);
+	eina_array_push(ifaces, iface);
+     }
+}
Index: src/modules/msgbus/module.desktop.in
===================================================================
--- src/modules/msgbus/module.desktop.in	(revision 0)
+++ src/modules/msgbus/module.desktop.in	(revision 0)
@@ -0,0 +1,31 @@
+[Desktop Entry]
+Type=Link
+Name=DBus Extension
+Name[cs]=DBus rozšíření
+Name[de]=
+Name[eo]=DBus kromaĵo
+Name[es]=Extensión DBus
+Name[fr]=Extension DBus
+Name[hu]=DBus kiterjesztés
+Name[it]=Estensione DBus
+Name[ja]=
+Name[pt]=
+Name[pt_BR]=
+Name[tr]=DBus Uzantısı
+Name[zh_CN]=
+Name[zh_TW]=
+Comment[cs]=<title>DBus rozšíření - Jazyk</title>
+Comment[de]=
+Comment[eo]=<title>DBus kromaĵo por allokigo</title>
+Comment[es]=
+Comment[fr]=<title>Module Extension DBus</title>
+Comment[hu]=<title>DBus kiterjesztés</title>
+Comment[it]=<title>Estensione DBus</title>
+Comment[ja]=
+Comment[pt]=
+Comment[pt_BR]=
+Comment[tr]=<title>DBus uzantısı</title>
+Comment[zh_CN]=
+Comment[zh_TW]=
+Icon=e-module-msgbus
+X-Enlightenment-ModuleType=system
Index: src/modules/msgbus/e-module-msgbus.edj
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: src/modules/msgbus/e-module-msgbus.edj
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Index: src/modules/msgbus/msgbus_lang.h
===================================================================
--- src/modules/msgbus/msgbus_lang.h	(revision 0)
+++ src/modules/msgbus/msgbus_lang.h	(revision 0)
@@ -0,0 +1,9 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+#ifndef MSGBUS_LANG_H
+#define MSGBUS_LANG_H
+
+void msgbus_lang_init(Eina_Array *ifaces);
+
+#endif /* MSGBUS_LANG_H */
Index: src/modules/msgbus/e_mod_main.c
===================================================================
--- src/modules/msgbus/e_mod_main.c	(revision 0)
+++ src/modules/msgbus/e_mod_main.c	(revision 0)
@@ -0,0 +1,50 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+#include "e.h"
+#include "e_mod_main.h"
+#include "msgbus_lang.h"
+#include "msgbus_desktop.h"
+
+/* actual module specifics */
+static Eina_Array* ifaces = NULL;
+
+/* module setup */
+EAPI E_Module_Api e_modapi =
+{
+   E_MODULE_API_VERSION,
+   "IPC Extension"
+};
+
+EAPI void *
+e_modapi_init(E_Module *m)
+{
+   ifaces = eina_array_new(5);
+
+   msgbus_lang_init(ifaces);
+   msgbus_desktop_init(ifaces);
+
+   return m;
+}
+
+EAPI int
+e_modapi_shutdown(E_Module *m)
+{
+   E_DBus_Interface* iface;
+   Eina_Array_Iterator iter;
+   size_t i;
+   EINA_ARRAY_ITER_NEXT(ifaces, i, iface, iter)
+     {
+	e_msgbus_interface_detach(iface);
+	e_dbus_interface_unref(iface);
+     }
+   eina_array_free(ifaces);
+   ifaces = NULL;
+   return 1;
+}
+
+EAPI int
+e_modapi_save(E_Module *m)
+{
+   return 1;
+}
Index: src/modules/msgbus/Makefile.am
===================================================================
--- src/modules/msgbus/Makefile.am	(revision 0)
+++ src/modules/msgbus/Makefile.am	(revision 0)
@@ -0,0 +1,37 @@
+MAINTAINERCLEANFILES = Makefile.in
+MODULE = msgbus
+
+# data files for the module
+filesdir = $(libdir)/enlightenment/modules/$(MODULE)
+
+# the module .so file
+INCLUDES               = -I. \
+                         -I$(top_srcdir) \
+                         -I$(top_srcdir)/src/modules/$(MODULE) \
+                         -I$(top_srcdir)/src/bin \
+                         -I$(top_srcdir)/src/lib \
+                         -I$(top_srcdir)/src/modules \
+                         @e_cflags@
+
+pkgdir                 = $(libdir)/enlightenment/modules/$(MODULE)/$(MODULE_ARCH)
+
+files_DATA = \
+e-module-$(MODULE).edj \
+module.desktop
+
+EXTRA_DIST = $(files_DATA)
+
+pkg_LTLIBRARIES        = module.la
+module_la_SOURCES      = e_mod_main.c \
+                         e_mod_main.h \
+                         msgbus_lang.c \
+                         msgbus_lang.h \
+                         msgbus_desktop.c \
+                         msgbus_desktop.h
+
+module_la_LIBADD       = @e_libs@ @dlopen_libs@
+module_la_LDFLAGS      = -module -avoid-version
+module_la_DEPENDENCIES = $(top_builddir)/config.h
+
+uninstall:
+	rm -rf $(DESTDIR)$(libdir)/enlightenment/modules/$(MODULE)
Index: src/modules/msgbus/msgbus_desktop.c
===================================================================
--- src/modules/msgbus/msgbus_desktop.c	(revision 0)
+++ src/modules/msgbus/msgbus_desktop.c	(revision 0)
@@ -0,0 +1,131 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include "e.h"
+#include "msgbus_desktop.h"
+
+static DBusMessage *
+cb_virtual_desktops(E_DBus_Object *obj, DBusMessage *msg)
+{
+   DBusMessage* reply;
+   DBusMessageIter iter;
+
+   reply = dbus_message_new_method_return(msg);
+   dbus_message_iter_init_append(reply, &iter);
+   dbus_message_iter_append_basic(&iter, DBUS_TYPE_INT32,
+				  &(e_config->zone_desks_x_count));
+   dbus_message_iter_append_basic(&iter, DBUS_TYPE_INT32,
+				  &(e_config->zone_desks_y_count));
+
+   return reply;
+}
+
+static DBusMessage*
+cb_desktop_bgadd(E_DBus_Object *obj, DBusMessage *msg)
+{
+   DBusMessageIter iter;
+   int container, zone, desk_x, desk_y;
+   char* path;
+
+   dbus_message_iter_init(msg, &iter);
+   dbus_message_iter_get_basic(&iter, &container);
+   dbus_message_iter_next(&iter);
+   dbus_message_iter_get_basic(&iter, &zone);
+   dbus_message_iter_next(&iter);
+   dbus_message_iter_get_basic(&iter, &desk_x);
+   dbus_message_iter_next(&iter);
+   dbus_message_iter_get_basic(&iter, &desk_y);
+   dbus_message_iter_next(&iter);
+   dbus_message_iter_get_basic(&iter, &path);
+
+   e_bg_add(container, zone, desk_x, desk_y, path);
+   e_bg_update();
+   e_config_save_queue();
+
+   return dbus_message_new_method_return(msg);
+}
+
+static DBusMessage*
+cb_desktop_bgdel(E_DBus_Object *obj, DBusMessage *msg)
+{
+   DBusMessageIter iter;
+   int container, zone, desk_x, desk_y;
+
+   dbus_message_iter_init(msg, &iter);
+   dbus_message_iter_get_basic(&iter, &container);
+   dbus_message_iter_next(&iter);
+   dbus_message_iter_get_basic(&iter, &zone);
+   dbus_message_iter_next(&iter);
+   dbus_message_iter_get_basic(&iter, &desk_x);
+   dbus_message_iter_next(&iter);
+   dbus_message_iter_get_basic(&iter, &desk_y);
+
+   e_bg_del(container, zone, desk_x, desk_y);
+   e_bg_update();
+   e_config_save_queue();
+
+   return dbus_message_new_method_return(msg);
+}
+
+static DBusMessage*
+cb_desktop_bglist(E_DBus_Object *obj, DBusMessage *msg)
+{
+   Eina_List *list;
+   E_Config_Desktop_Background *bg;
+   DBusMessage *reply;
+   DBusMessageIter iter;
+   DBusMessageIter arr;
+
+   reply = dbus_message_new_method_return(msg);
+   dbus_message_iter_init_append(reply, &iter);
+   dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, "(iiiis)", &arr);
+
+   EINA_LIST_FOREACH(e_config->desktop_backgrounds, list, bg)
+     {
+	DBusMessageIter sub;
+
+	if (bg == NULL || bg->file == NULL)
+	{
+	   continue;
+	}
+
+	dbus_message_iter_open_container(&arr, DBUS_TYPE_STRUCT, NULL, &sub);
+	dbus_message_iter_append_basic(&sub, DBUS_TYPE_INT32, &(bg->container));
+	dbus_message_iter_append_basic(&sub, DBUS_TYPE_INT32, &(bg->zone));
+	dbus_message_iter_append_basic(&sub, DBUS_TYPE_INT32, &(bg->desk_x));
+	dbus_message_iter_append_basic(&sub, DBUS_TYPE_INT32, &(bg->desk_y));
+	dbus_message_iter_append_basic(&sub, DBUS_TYPE_STRING, &(bg->file));
+	dbus_message_iter_close_container(&arr, &sub);
+     }
+   dbus_message_iter_close_container(&iter, &arr);
+
+   return reply;
+}
+
+void msgbus_desktop_init(Eina_Array *ifaces)
+{
+   E_DBus_Interface *iface;
+
+   iface = e_dbus_interface_new("org.enlightenment.wm.Desktop");
+   if (iface)
+     {
+	e_dbus_interface_method_add(iface, "GetVirtualCount", "", "ii",
+				    cb_virtual_desktops);
+	e_msgbus_interface_attach(iface);
+	eina_array_push(ifaces, iface);
+     }
+
+   iface = e_dbus_interface_new("org.enlightenment.wm.Desktop.Background");
+   if (iface)
+     {
+	e_dbus_interface_method_add(iface, "Add", "iiiis", "",
+				    cb_desktop_bgadd);
+	e_dbus_interface_method_add(iface, "Del", "iiii", "",
+				    cb_desktop_bgadd);
+	e_dbus_interface_method_add(iface, "List", "", "a(iiiis)",
+				    cb_desktop_bglist);
+	e_msgbus_interface_attach(iface);
+	eina_array_push(ifaces, iface);
+     }
+}
Index: src/modules/msgbus/e_mod_main.h
===================================================================
--- src/modules/msgbus/e_mod_main.h	(revision 0)
+++ src/modules/msgbus/e_mod_main.h	(revision 0)
@@ -0,0 +1,13 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+#ifndef E_MOD_MAIN_H
+#define E_MOD_MAIN_H
+
+EAPI extern E_Module_Api e_modapi;
+
+EAPI void *e_modapi_init     (E_Module *m);
+EAPI int   e_modapi_shutdown (E_Module *m);
+EAPI int   e_modapi_save     (E_Module *m);
+
+#endif
Index: src/modules/Makefile.am
===================================================================
--- src/modules/Makefile.am	(revision 46915)
+++ src/modules/Makefile.am	(working copy)
@@ -114,8 +114,8 @@
 SUBDIRS += conf_profiles
 endif
 
-if USE_MODULE_MSGBUS_LANG
-SUBDIRS += msgbus_lang
+if USE_MODULE_MSGBUS
+SUBDIRS += msgbus
 endif
 
 if USE_MODULE_CONF_ENGINE
@@ -292,7 +292,7 @@
 conf_intl \
 conf_imc \
 conf_profiles \
-msgbus_lang \
+msgbus \
 conf_engine \
 conf_applications \
 conf_desks \
Index: configure.ac
===================================================================
--- configure.ac	(revision 46909)
+++ configure.ac	(working copy)
@@ -478,7 +478,7 @@
 AC_E_OPTIONAL_MODULE([conf_intl], true)
 AC_E_OPTIONAL_MODULE([conf_imc], true)
 AC_E_OPTIONAL_MODULE([conf_profiles], true)
-AC_E_OPTIONAL_MODULE([msgbus_lang], true)
+AC_E_OPTIONAL_MODULE([msgbus], true)
 AC_E_OPTIONAL_MODULE([conf_engine], true)
 AC_E_OPTIONAL_MODULE([conf_applications], true)
 AC_E_OPTIONAL_MODULE([conf_desks], true)
@@ -579,8 +579,8 @@
 src/modules/conf_imc/module.desktop
 src/modules/conf_profiles/Makefile
 src/modules/conf_profiles/module.desktop
-src/modules/msgbus_lang/Makefile
-src/modules/msgbus_lang/module.desktop
+src/modules/msgbus/Makefile
+src/modules/msgbus/module.desktop
 src/modules/conf_engine/Makefile
 src/modules/conf_engine/module.desktop
 src/modules/conf_applications/Makefile
Index: data/tools/enlightenment_remote
===================================================================
--- data/tools/enlightenment_remote	(revision 46909)
+++ data/tools/enlightenment_remote	(working copy)
@@ -30,6 +30,10 @@
   -default-profile-get Get the default configuration profile
   -default-profile-set OPT1 Set the default configuration profile to OPT1
 
+  -desks-get Get the number of virtual desktops
+  -desktop-bg-add OPT1 OPT2 OPT3 OPT4 OPT5 Add a desktop bg definition. OPT1 = container no. OPT2 = zone no. OPT3 = desk_x. OPT4 = desk_y. OPT5 = bg file path
+  -desktop-bg-del OPT1 OPT2 OPT3 OPT4 Delete a desktop bg definition. OPT1 = container no. OPT2 = zone no. OPT3 = desk_x. OPT4 = desk_y.
+  -desktop-bg-list List all current desktop bg definitions
 
 Note: This is a new implementation of enlightenment_remote,
       for more information about it see the '--help-new' option.
@@ -113,8 +117,68 @@
    unset result value
 }
 
+#===  FUNCTION  ================================================================
+#          NAME:  ERGMI
+#   DESCRIPTION:  Get a (multiple) values (integer)
+#    PARAMETERS:  interface/method call
+#       RETURNS:  values (integer)
+#===============================================================================
+ERGMI(){
+   result="$( dbus-send --print-reply=literal --dest=org.enlightenment.wm.service /org/enlightenment/wm/RemoteObject "$1" )"
+   result="$( echo "$result" | sed 's/int32//g' )"
+   for value in $result
+   do
+      echo -n "$value "
+   done
+   echo ""
+   unset result value
+}
 
+#===  FUNCTION  ================================================================
+#          NAME:  ERGMST
+#   DESCRIPTION:  Get a (multiple) struct value
+#    PARAMETERS:  interface/method call
+#       RETURNS:  struct values
+#===============================================================================
+ERGMST(){
+   result="$( dbus-send --print-reply=literal --dest=org.enlightenment.wm.service /org/enlightenment/wm/RemoteObject "$1" )"
+   result="${result##*array \[}"
+   result="${result%%]*}"
+   result="$( echo "$result" | sed -e 's/int32//g' -e 's/struct {//g' )"
+   for value in $result
+   do
+      if test "$value" = "}"; then
+         echo
+      else
+         echo -n "$value "
+      fi
+   done
+   echo ""
+   unset result value
+}
 
+#===  FUNCTION  ================================================================
+#          NAME:  ERCIIIIS
+#   DESCRIPTION:  eremote call with int, int, int, int, string parameter
+#    PARAMETERS:  interface/method call, int, int, int, int, string
+#       RETURNS:  
+#===============================================================================
+ERCIIIIS(){
+   dbus-send --print-reply=literal --dest=org.enlightenment.wm.service /org/enlightenment/wm/RemoteObject "$1" int32:"$2" int32:"$3" int32:"$4" int32:"$5" string:"$6"
+}
+
+#===  FUNCTION  ================================================================
+#          NAME:  ERCIIIIS
+#   DESCRIPTION:  eremote call with int, int, int, int parameter
+#    PARAMETERS:  interface/method call, int, int, int, int
+#       RETURNS:  
+#===============================================================================
+ERCIIII(){
+   dbus-send --print-reply=literal --dest=org.enlightenment.wm.service /org/enlightenment/wm/RemoteObject "$1" int32:"$2" int32:"$3" int32:"$4" int32:"$5"
+}
+
+
+
 #-------------------------------------------------------------------------------
 #   E Restart
 #-------------------------------------------------------------------------------
@@ -195,10 +259,40 @@
 }
 
 
+#-------------------------------------------------------------------------------
+#   E Virtual desktop get
+#-------------------------------------------------------------------------------
+er_desktop_get(){
+   ERGMI org.enlightenment.wm.Desktop.GetVirtualCount
+}
 
 
+#-------------------------------------------------------------------------------
+#   E Desktop background add
+#-------------------------------------------------------------------------------
+er_desktop_bg_add(){
+   ERCIIIIS org.enlightenment.wm.Desktop.Background.Add "$2" "$3" "$4" "$5" "$6"
+}
 
+#-------------------------------------------------------------------------------
+#   E Desktop background del
+#-------------------------------------------------------------------------------
+er_desktop_bg_del(){
+   ERCIIII org.enlightenment.wm.Desktop.Background.Del "$2" "$3" "$4" "$5"
+}
 
+#-------------------------------------------------------------------------------
+#   E Desktop background list
+#-------------------------------------------------------------------------------
+er_desktop_bg_list(){
+   ERGMST org.enlightenment.wm.Desktop.Background.List
+}
+
+
+
+
+
+
 #===  FUNCTION  ================================================================
 #          NAME:  Main
 #   DESCRIPTION:  We start there and go to the desired option
@@ -248,6 +342,18 @@
    -default-profile-set)
       er_default_profile_set "$@"
    ;;
+   -desks-get)
+      er_desktop_get
+   ;;
+   -desktop-bg-add)
+      er_desktop_bg_add "$@"
+   ;;
+   -desktop-bg-del)
+      er_desktop_bg_del "$@"
+   ;;
+   -desktop-bg-list)
+      er_desktop_bg_list
+   ;;
 
 
    # This entry needs to be allways the last option of the list (*)
@@ -314,7 +420,6 @@
   -border-shade-speed-set OPT1 Set the shading speed (pixels/sec)
   -border-shade-speed-get Get the shading speed (pixels/sec)
   -desks-set OPT1 OPT2 Set the number of virtual desktops (X x Y desks OPT1 = X, OPT2 = Y)
-  -desks-get Get the number of virtual desktops
   -maximize-policy-set OPT1 Set the maximize policy. OPT1 = FULLSCREEN, SMART, EXPAND or FILL
   -maximize-policy-get Get maximize policy
   -maximize-manipulation-set OPT1 Allow manipulation, 1 for enabled 0 for disabled
@@ -345,9 +450,6 @@
   -window-resist-get Get window resist threshold
   -gadget-resist-set OPT1 Set gadget resist threshold (0-100)
   -gadget-resist-get Get gadget resist threshold
-  -desktop-bg-add OPT1 OPT2 OPT3 OPT4 OPT5 Add a desktop bg definition. OPT1 = container no. OPT2 = zone no. OPT3 = desk_x. OPT4 = desk_y. OPT5 = bg file path
-  -desktop-bg-del OPT1 OPT2 OPT3 OPT4 Delete a desktop bg definition. OPT1 = container no. OPT2 = zone no. OPT3 = desk_x. OPT4 = desk_y.
-  -desktop-bg-list List all current desktop bg definitions
   -winlist-warp-while-selecting-set OPT1 Set winlist (alt+tab) warp while selecting policy
   -winlist-warp-while-selecting-get Get winlist (alt+tab) warp while selecting policy
   -winlist-warp-at-end-set OPT1 Set winlist (alt+tab) warp at end policy
------------------------------------------------------------------------------
Download Intel&#174; Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to