Tilman Sauerbeck wrote:
Don't free 'params', free params[0], params[1] etc.
Fixed in included patch.
Also, you prolly should check that your strdup calls are succeeding.
Added this too, even though none of the other E_Lib calls check their
strdup()'s for success
Aaron
Index: e17/apps/e/src/lib/E_Lib.h
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/lib/E_Lib.h,v
retrieving revision 1.3
diff -d -u -3 -r1.3 E_Lib.h
--- e17/apps/e/src/lib/E_Lib.h 19 Jul 2005 07:07:23 -0000 1.3
+++ e17/apps/e/src/lib/E_Lib.h 28 Jul 2005 20:15:46 -0000
@@ -94,6 +94,8 @@
/* E desktop manipulation */
EAPI void e_lib_background_set (const char *bgfile);
EAPI void e_lib_background_get (void);
+ EAPI void e_lib_desktop_background_add (const char *con, const
char *zone, const char *desk_x, const char *desk_y, const char *bgfile);
+ EAPI void e_lib_desktop_background_del (const char *con, const
char *zone, const char *desk_x, const char *desk_y);
/* E current theme manipulation */
EAPI void e_lib_theme_get (const char *category);
Index: e17/apps/e/src/lib/e_main.c
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/lib/e_main.c,v
retrieving revision 1.25
diff -d -u -3 -r1.25 e_main.c
--- e17/apps/e/src/lib/e_main.c 19 Jul 2005 07:07:23 -0000 1.25
+++ e17/apps/e/src/lib/e_main.c 28 Jul 2005 20:15:46 -0000
@@ -243,6 +243,46 @@
}
void
+e_lib_desktop_background_add(const char *con, const char *zone, const char
*desk_x, const char *desk_y, const char *bgfile)
+{
+ char *params[5];
+ if(!bgfile | !desk_y | !desk_x | !zone | !con)
+ return;
+ params[0] = strdup(con);
+ params[1] = strdup(zone);
+ params[2] = strdup(desk_x);
+ params[3] = strdup(desk_y);
+ params[4] = strdup(bgfile);
+ if(!params[0] | !params[1] | !params[2] | !params[3] | !params[4])
+ return;
+ _e_ipc_call(E_IPC_OP_DESKTOP_BG_ADD, params);
+ free(params[0]);
+ free(params[1]);
+ free(params[2]);
+ free(params[3]);
+ free(params[4]);
+}
+
+void
+e_lib_desktop_background_del(const char *con, const char *zone, const char
*desk_x, const char *desk_y)
+{
+ char *params[4];
+ if(!desk_y | !desk_x | !zone | !con)
+ return;
+ params[0] = strdup(con);
+ params[1] = strdup(zone);
+ params[2] = strdup(desk_x);
+ params[3] = strdup(desk_y);
+ if(!params[0] | !params[1] | !params[2] | !params[3])
+ return;
+ _e_ipc_call(E_IPC_OP_DESKTOP_BG_DEL, params);
+ free(params[0]);
+ free(params[1]);
+ free(params[2]);
+ free(params[3]);
+}
+
+void
e_lib_theme_get(const char *category)
{
char *tmp;