Enlightenment CVS committal
Author : kwo
Project : e16
Module : e
Dir : e16/e/src
Modified Files:
E.h actions.c backgrounds.c comms.c config.c desktops.c
iclass.c init.c ipc.c main.c menus.c pager.c settings.c
startup.c
Log Message:
Simplify background code, re-generate backgrounds when enabling transparency.
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/E.h,v
retrieving revision 1.246
retrieving revision 1.247
diff -u -3 -r1.246 -r1.247
--- E.h 10 Apr 2004 19:36:47 -0000 1.246
+++ E.h 12 Apr 2004 08:28:32 -0000 1.247
@@ -1038,6 +1038,7 @@
};
#endif /* DECLARE_STRUCT_BUTTON */
+#ifdef DECLARE_STRUCT_BACKGROUND
typedef struct
{
char *file;
@@ -1062,6 +1063,7 @@
char keepim;
unsigned int ref_count;
};
+#endif /* DECLARE_STRUCT_BACKGROUND */
typedef struct _desk
{
@@ -1648,16 +1650,25 @@
/* backgrounds.c */
char *BackgroundGetUniqueString(Background * bg);
-void BackgroundImagesKeep(Background * bg, char onoff);
+void BackgroundPixmapFree(Background * bg);
+void BackgroundImagesFree(Background * bg, int free_pmap);
+void BackgroundImagesKeep(Background * bg, int onoff);
void BackgroundImagesRemove(Background * bg);
-void BackgroundDestroy(Background * bg);
+int BackgroundDestroy(Background * bg);
+void BackgroundDelete(Background * bg);
Background *BackgroundCreate(const char *name, XColor * solid,
const char *bg, char tile,
char keep_aspect, int xjust, int yjust,
int xperc, int yperc, const char *top,
char tkeep_aspect, int txjust, int tyjust,
int txperc, int typerc);
+void BackgroundDestroyByName(const char *name);
void BackgroundApply(Background * bg, Window win, int setbg);
+void BackgroundIncRefcount(Background * bg);
+void BackgroundDecRefcount(Background * bg);
+void BackgroundTouch(Background * bg);
+const char *BackgroundGetName(const Background * bg);
+Pixmap BackgroundGetPixmap(const Background * bg);
void BackgroundsAccounting(void);
void BackgroundsInit(void);
@@ -1839,9 +1850,10 @@
int speed);
void RefreshCurrentDesktop(void);
void RefreshDesktop(int num);
+void DesktopsRefresh(void);
void InitDesktopBgs(void);
void InitDesktopControls(void);
-void SetDesktopBg(int desk, Background * bg);
+void DesktopSetBg(int desk, Background * bg, int refresh);
void ConformEwinToDesktop(EWin * ewin);
int DesktopAt(int x, int y);
void GotoDesktop(int num);
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/actions.c,v
retrieving revision 1.154
retrieving revision 1.155
diff -u -3 -r1.154 -r1.155
--- actions.c 10 Apr 2004 19:36:48 -0000 1.154
+++ actions.c 12 Apr 2004 08:28:32 -0000 1.155
@@ -2616,7 +2616,7 @@
{
int desk;
Background *bg;
- char view, s[1024];
+ char s[1024];
EDBUG(6, "doBackgroundSet");
@@ -2626,29 +2626,13 @@
desk = desks.current;
if (sscanf((char *)params, "%1000s %i", s, &desk) < 2)
desk = desks.current;
+
bg = (Background *) FindItem(s, 0, LIST_FINDBY_NAME, LIST_TYPE_BACKGROUND);
if (!bg)
EDBUG_RETURN(0);
if (desks.desk[desk].bg != bg)
- {
- char pq;
-
- if (desks.desk[desk].bg)
- desks.desk[desk].bg->last_viewed = 0;
- view = desks.desk[desk].viewable;
- desks.desk[desk].viewable = 0;
- BackgroundsAccounting();
- desks.desk[desk].viewable = view;
- BGSettingsGoTo(bg);
- pq = Mode.queue_up;
- Mode.queue_up = 0;
- SetDesktopBg(desk, bg);
- RefreshDesktop(desk);
- RedrawPagersForDesktop(desk, 2);
- ForceUpdatePagersForDesktop(desk);
- Mode.queue_up = pq;
- }
+ DesktopSetBg(desk, bg, 0);
autosave();
EDBUG_RETURN(0);
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/backgrounds.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- backgrounds.c 10 Apr 2004 19:39:02 -0000 1.1
+++ backgrounds.c 12 Apr 2004 08:28:32 -0000 1.2
@@ -20,6 +20,7 @@
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
+#define DECLARE_STRUCT_BACKGROUND
#include "E.h"
#include <time.h>
@@ -111,7 +112,17 @@
return Estrdup(s);
}
-static void
+void
+BackgroundPixmapFree(Background * bg)
+{
+ if (bg && bg->pmap)
+ {
+ imlib_free_pixmap_and_mask(bg->pmap);
+ bg->pmap = 0;
+ }
+}
+
+void
BackgroundImagesFree(Background * bg, int free_pmap)
{
if (bg->bg.im)
@@ -127,14 +138,11 @@
bg->top.im = NULL;
}
if (free_pmap && bg->pmap)
- {
- imlib_free_pixmap_and_mask(bg->pmap);
- bg->pmap = 0;
- }
+ BackgroundPixmapFree(bg);
}
void
-BackgroundImagesKeep(Background * bg, char onoff)
+BackgroundImagesKeep(Background * bg, int onoff)
{
if (onoff)
{
@@ -158,26 +166,35 @@
Efree(bg->bg.real_file);
bg->bg.real_file = NULL;
+ if (bg->top.file)
+ Efree(bg->top.file);
+ bg->top.file = NULL;
+
+ if (bg->top.real_file)
+ Efree(bg->top.real_file);
+ bg->top.real_file = NULL;
+
BackgroundImagesFree(bg, 1);
bg->keepim = 0;
}
-void
+int
BackgroundDestroy(Background * bg)
{
EDBUG(6, "BackgroundDestroy");
if (!bg)
- EDBUG_RETURN_;
+ EDBUG_RETURN(-1);
if (bg->ref_count > 0)
{
DialogOK(_("Background Error!"), _("%u references remain\n"),
bg->ref_count);
- EDBUG_RETURN_;
+ EDBUG_RETURN(-1);
}
+ RemoveItem((char *)bg, 0, LIST_FINDBY_POINTER, LIST_TYPE_BACKGROUND);
BackgroundImagesRemove(bg);
if (bg->name)
@@ -185,57 +202,98 @@
Efree(bg);
+ EDBUG_RETURN(0);
+}
+
+void
+BackgroundDelete(Background * bg)
+{
+ char *f;
+
+ EDBUG(6, "BackgroundDelete");
+
+ if (BackgroundDestroy(bg))
+ EDBUG_RETURN_;
+
+ /* And delete the actual image files */
+ if (bg->bg.file)
+ {
+ f = FindFile(bg->bg.file);
+ if (f)
+ {
+ E_rm(f);
+ Efree(f);
+ }
+ }
+ if (bg->top.file)
+ {
+ f = FindFile(bg->top.file);
+ if (f)
+ {
+ E_rm(f);
+ Efree(f);
+ }
+ }
+
EDBUG_RETURN_;
}
Background *
-BackgroundCreate(const char *name, XColor * solid, const char *bg, char tile,
+BackgroundCreate(const char *name, XColor * solid, const char *bgn, char tile,
char keep_aspect, int xjust, int yjust, int xperc,
int yperc, const char *top, char tkeep_aspect, int txjust,
int tyjust, int txperc, int typerc)
{
- Background *d;
+ Background *bg;
EDBUG(6, "BackgroundCreate");
- d = Emalloc(sizeof(Background));
- if (!d)
+ bg = Emalloc(sizeof(Background));
+ if (!bg)
EDBUG_RETURN(NULL);
- d->name = Estrdup(name);
- d->pmap = 0;
- d->last_viewed = 0;
+ bg->name = Estrdup(name);
+ bg->pmap = 0;
+ bg->last_viewed = 0;
- ESetColor(&(d->bg_solid), 160, 160, 160);
+ ESetColor(&(bg->bg_solid), 160, 160, 160);
if (solid)
- d->bg_solid = *solid;
- d->bg.file = NULL;
- if (bg)
- d->bg.file = Estrdup(bg);
- d->bg.real_file = NULL;
- d->bg.im = NULL;
- d->bg_tile = tile;
- d->bg.keep_aspect = keep_aspect;
- d->bg.xjust = xjust;
- d->bg.yjust = yjust;
- d->bg.xperc = xperc;
- d->bg.yperc = yperc;
+ bg->bg_solid = *solid;
+ bg->bg.file = NULL;
+ if (bgn)
+ bg->bg.file = Estrdup(bgn);
+ bg->bg.real_file = NULL;
+ bg->bg.im = NULL;
+ bg->bg_tile = tile;
+ bg->bg.keep_aspect = keep_aspect;
+ bg->bg.xjust = xjust;
+ bg->bg.yjust = yjust;
+ bg->bg.xperc = xperc;
+ bg->bg.yperc = yperc;
- d->top.file = NULL;
+ bg->top.file = NULL;
if (top)
- d->top.file = Estrdup(top);
- d->top.real_file = NULL;
- d->top.im = NULL;
- d->top.keep_aspect = tkeep_aspect;
- d->top.xjust = txjust;
- d->top.yjust = tyjust;
- d->top.xperc = txperc;
- d->top.yperc = typerc;
-
- d->cmclass = NULL;
- d->keepim = 0;
- d->ref_count = 0;
+ bg->top.file = Estrdup(top);
+ bg->top.real_file = NULL;
+ bg->top.im = NULL;
+ bg->top.keep_aspect = tkeep_aspect;
+ bg->top.xjust = txjust;
+ bg->top.yjust = tyjust;
+ bg->top.xperc = txperc;
+ bg->top.yperc = typerc;
- EDBUG_RETURN(d);
+ bg->cmclass = NULL;
+ bg->keepim = 0;
+ bg->ref_count = 0;
+
+ AddItem(bg, bg->name, 0, LIST_TYPE_BACKGROUND);
+
+ EDBUG_RETURN(bg);
+}
+
+void
+BackgroundDestroyByName(const char *name)
+{
+ BackgroundDestroy(FindItem(name, 0, LIST_FINDBY_NAME, LIST_TYPE_BACKGROUND));
}
static void
@@ -523,14 +581,55 @@
}
void
+BackgroundIncRefcount(Background * bg)
+{
+ if (bg == NULL)
+ return;
+ bg->ref_count++;
+}
+
+void
+BackgroundDecRefcount(Background * bg)
+{
+ if (bg == NULL)
+ return;
+ bg->ref_count--;
+ if (bg->ref_count <= 0)
+ bg->last_viewed = 0; /* Clean out asap */
+}
+
+void
+BackgroundTouch(Background * bg)
+{
+ if (bg == NULL)
+ return;
+ bg->last_viewed = time(NULL);
+}
+
+const char *
+BackgroundGetName(const Background * bg)
+{
+ return (bg) ? bg->name : NULL;
+}
+
+Pixmap
+BackgroundGetPixmap(const Background * bg)
+{
+ return (bg) ? bg->pmap : None;
+}
+
+void
BackgroundsAccounting(void)
{
time_t now;
int i, j, num;
Background **lst;
+ Window win;
EDBUG(3, "BackgroundsAccounting");
+
now = time(NULL);
+
for (i = 0; i < ENLIGHTENMENT_CONF_NUM_DESKTOPS; i++)
{
if ((desks.desk[i].bg) && (desks.desk[i].viewable))
@@ -538,34 +637,39 @@
}
lst = (Background **) ListItemType(&num, LIST_TYPE_BACKGROUND);
- if (lst)
+ for (i = 0; i < num; i++)
{
- for (i = 0; i < num; i++)
+ /* Skip if no pixmap or not timed out */
+ if ((lst[i]->pmap == 0) ||
+ ((now - lst[i]->last_viewed) <= Conf.backgrounds.timeout))
+ continue;
+
+ /* Skip if associated with any viewable desktop */
+ for (j = 0; j < ENLIGHTENMENT_CONF_NUM_DESKTOPS; j++)
+ if (lst[i] == desks.desk[j].bg && desks.desk[j].viewable)
+ goto next;
+
+ for (j = 0; j < ENLIGHTENMENT_CONF_NUM_DESKTOPS; j++)
{
- if ((lst[i]->pmap == 0) ||
- ((now - lst[i]->last_viewed) <= Conf.backgrounds.timeout))
+ if (lst[i] != desks.desk[j].bg || desks.desk[j].viewable)
continue;
- for (j = 0; j < ENLIGHTENMENT_CONF_NUM_DESKTOPS; j++)
- {
- if ((desks.desk[j].bg == lst[i]) && (!desks.desk[j].viewable))
- {
- Window win = desks.desk[j].win;
-
- HintsSetRootInfo(win, 0, 0);
- XSetWindowBackground(disp, win, 0);
- XClearWindow(disp, win);
-
- IMLIB1_SET_CONTEXT(lst[i] == desks.desk[0].bg);
- imlib_free_pixmap_and_mask(lst[i]->pmap);
- lst[i]->pmap = 0;
- }
- }
-
+ /* Unviewable desktop - update the virtual root hints */
+ win = desks.desk[j].win;
+ HintsSetRootInfo(win, 0, 0);
+ XSetWindowBackground(disp, win, 0);
+ XClearWindow(disp, win);
}
- Efree(lst);
- IMLIB1_SET_CONTEXT(0);
+
+ IMLIB1_SET_CONTEXT(lst[i] == desks.desk[0].bg);
+ BackgroundPixmapFree(lst[i]);
+
+ next:
+ ;
}
+ if (lst)
+ Efree(lst);
+ IMLIB1_SET_CONTEXT(0);
EDBUG_RETURN_;
}
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/comms.c,v
retrieving revision 1.59
retrieving revision 1.60
diff -u -3 -r1.59 -r1.60
--- comms.c 10 Apr 2004 19:36:48 -0000 1.59
+++ comms.c 12 Apr 2004 08:28:32 -0000 1.60
@@ -20,6 +20,7 @@
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
+#define DECLARE_STRUCT_BACKGROUND
#include "E.h"
static Window comms_win = 0;
@@ -479,43 +480,13 @@
}
else if (!strcmp(w, "del_bg"))
{
- Background *bg;
- int i;
- char dodel = 1;
-
sscanf(s, "%*s %1000s", w);
- bg = (Background *) FindItem(w, 0, LIST_FINDBY_NAME,
- LIST_TYPE_BACKGROUND);
- if (bg)
- {
- /* check for desktops referencing this bg - if there are - don't */
- /* delete it */
- for (i = 0; i < ENLIGHTENMENT_CONF_NUM_DESKTOPS; i++)
- {
- if (desks.desk[i].bg == bg)
- dodel = 0;
- }
- if (dodel)
- {
- bg = (Background *) RemoveItem(w, 0, LIST_FINDBY_NAME,
- LIST_TYPE_BACKGROUND);
- if (bg->name)
- Efree(bg->name);
- if (bg->bg.file)
- Efree(bg->bg.file);
- if (bg->top.file)
- Efree(bg->top.file);
- if (bg->pmap)
- imlib_free_pixmap_and_mask(bg->pmap);
- Efree(bg);
- }
- }
+ BackgroundDestroyByName(w);
}
else if (!strcmp(w, "use_bg"))
{
Background *bg;
int i, wd;
- char view;
sscanf(s, "%*s %1000s", w);
bg = (Background *) FindItem(w, 0, LIST_FINDBY_NAME,
@@ -531,28 +502,7 @@
if (w[0])
{
i = atoi(w);
- if ((i >= 0) && (i < ENLIGHTENMENT_CONF_NUM_DESKTOPS))
- {
- if (desks.desk[i].bg)
- desks.desk[i].bg->last_viewed = 0;
- view = desks.desk[i].viewable;
- desks.desk[i].viewable = 0;
- BackgroundsAccounting();
- desks.desk[i].viewable = view;
- desks.desk[i].bg = bg;
- if (i < Conf.desks.num)
- {
- if (desks.desk[i].viewable)
- RefreshDesktop(i);
- if (i == desks.current)
- {
- RedrawPagersForDesktop(i, 2);
- ForceUpdatePagersForDesktop(i);
- }
- else
- RedrawPagersForDesktop(i, 1);
- }
- }
+ DesktopSetBg(i, bg, 1);
}
}
}
@@ -560,7 +510,6 @@
else if (!strcmp(w, "use_no_bg"))
{
int i, wd;
- char view;
wd = 2;
w[0] = ' ';
@@ -571,28 +520,7 @@
if (w[0])
{
i = atoi(w);
- if ((i >= 0) && (i < ENLIGHTENMENT_CONF_NUM_DESKTOPS))
- {
- if (desks.desk[i].bg)
- desks.desk[i].bg->last_viewed = 0;
- view = desks.desk[i].viewable;
- desks.desk[i].viewable = 0;
- BackgroundsAccounting();
- desks.desk[i].viewable = view;
- desks.desk[i].bg = NULL;
- if (i < Conf.desks.num)
- {
- if (desks.desk[i].viewable)
- RefreshDesktop(i);
- if (i == desks.current)
- {
- RedrawPagersForDesktop(i, 2);
- ForceUpdatePagersForDesktop(i);
- }
- else
- RedrawPagersForDesktop(i, 1);
- }
- }
+ DesktopSetBg(i, NULL, 1);
}
}
}
@@ -1134,17 +1062,7 @@
for (i = 0; i < ENLIGHTENMENT_CONF_NUM_DESKTOPS; i++)
{
if (desks.desk[i].bg == bg)
- {
- if (desks.desk[i].viewable)
- RefreshDesktop(i);
- if (i == desks.current)
- {
- RedrawPagersForDesktop(i, 2);
- ForceUpdatePagersForDesktop(i);
- }
- else
- RedrawPagersForDesktop(i, 1);
- }
+ DesktopSetBg(i, bg, 0);
}
}
}
@@ -1166,7 +1084,6 @@
Efree(bgf);
if (topf)
Efree(topf);
- AddItem(bg, bg->name, 0, LIST_TYPE_BACKGROUND);
}
}
else if (!strcmp(w, "draw_bg_to"))
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/config.c,v
retrieving revision 1.100
retrieving revision 1.101
diff -u -3 -r1.100 -r1.101
--- config.c 10 Apr 2004 19:36:48 -0000 1.100
+++ config.c 12 Apr 2004 08:28:32 -0000 1.101
@@ -20,6 +20,7 @@
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
+#define DECLARE_STRUCT_BACKGROUND
#define DECLARE_STRUCT_BUTTON
#define DECLARE_STRUCT_ICONBOX
#define DECLARE_STRUCT_MENU
@@ -1827,7 +1828,6 @@
bg = BackgroundCreate(name, &xclr, bg1, i1, i2, i3,
i4, i5, i6, bg2, j1, j2, j3,
j4, j5);
- AddItem(bg, bg->name, 0, LIST_TYPE_BACKGROUND);
if (cm)
{
cm->ref_count++;
@@ -1882,15 +1882,14 @@
bg = BackgroundCreate(name, &xclr, bg1, i1, i2,
i3, i4, i5, i6, bg2, j1,
j2, j3, j4, j5);
- AddItem(bg, bg->name, 0, LIST_TYPE_BACKGROUND);
}
if (!strcmp(bg->name, "NONE"))
{
- SetDesktopBg(atoi(s2), NULL);
+ DesktopSetBg(atoi(s2), NULL, 0);
}
else
{
- SetDesktopBg(atoi(s2), bg);
+ DesktopSetBg(atoi(s2), bg, 0);
}
#if !USE_IMLIB2
if ((prImlib_Context) && (atoi(s2) == 0))
@@ -1911,11 +1910,11 @@
{
if (!strcmp(bg->name, "NONE"))
{
- SetDesktopBg(atoi(s2), NULL);
+ DesktopSetBg(atoi(s2), NULL, 0);
}
else
{
- SetDesktopBg(atoi(s2), bg);
+ DesktopSetBg(atoi(s2), bg, 0);
}
#if !USE_IMLIB2
if ((prImlib_Context) && (atoi(s2) == 0))
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/desktops.c,v
retrieving revision 1.82
retrieving revision 1.83
diff -u -3 -r1.82 -r1.83
--- desktops.c 10 Apr 2004 19:36:48 -0000 1.82
+++ desktops.c 12 Apr 2004 08:28:32 -0000 1.83
@@ -65,7 +65,7 @@
}
void
-ShowDesktopControls()
+ShowDesktopControls(void)
{
Button **blst;
int num, i;
@@ -81,7 +81,7 @@
}
void
-ShowDesktopTabs()
+ShowDesktopTabs(void)
{
Button **blst;
int num, i;
@@ -97,7 +97,7 @@
}
void
-HideDesktopTabs()
+HideDesktopTabs(void)
{
Button **blst;
int num, i;
@@ -218,7 +218,7 @@
}
void
-RefreshCurrentDesktop()
+RefreshCurrentDesktop(void)
{
EDBUG(5, "RefreshCurrentDesktop");
RefreshDesktop(desks.current);
@@ -245,7 +245,19 @@
}
void
-InitDesktopBgs()
+DesktopsRefresh(void)
+{
+ int i;
+
+ for (i = 0; i < ENLIGHTENMENT_CONF_NUM_DESKTOPS; i++)
+ {
+ if (desks.desk[i].bg)
+ DesktopSetBg(i, desks.desk[i].bg, 1);
+ }
+}
+
+void
+InitDesktopBgs(void)
{
int i;
Desk *d;
@@ -262,10 +274,10 @@
d->y = 0;
d->current_area_x = 0;
d->current_area_y = 0;
+ d->viewable = 0;
if (i == 0)
{
d->win = root.win;
- d->viewable = 0;
}
else
{
@@ -277,7 +289,6 @@
| ButtonMotionMask | PropertyChangeMask |
SubstructureRedirectMask | KeyPressMask |
KeyReleaseMask | PointerMotionMask);
- d->viewable = 0;
}
at = XInternAtom(disp, "ENLIGHTENMENT_DESKTOP", False);
XChangeProperty(disp, d->win, at, XA_CARDINAL, 32, PropModeReplace,
@@ -293,11 +304,10 @@
}
EDBUG_RETURN_;
-
}
void
-InitDesktopControls()
+InitDesktopControls(void)
{
int i;
ActionClass *ac, *ac2, *ac3;
@@ -564,32 +574,29 @@
}
void
-SetDesktopBg(int desk, Background * bg)
+DesktopSetBg(int desk, Background * bg, int refresh)
{
- EDBUG(5, "SetDesktopBg");
+ EDBUG(5, "DesktopSetBg");
- if (desk < 0)
- EDBUG_RETURN_;
- if (desk >= ENLIGHTENMENT_CONF_NUM_DESKTOPS)
+ if (desk < 0 || desk >= ENLIGHTENMENT_CONF_NUM_DESKTOPS)
EDBUG_RETURN_;
- if (desks.desk[desk].bg)
+ if (refresh)
+ BackgroundPixmapFree(desks.desk[desk].bg);
+
+ if (desks.desk[desk].bg != bg)
{
- if (desks.desk[desk].bg != bg)
- {
- desks.desk[desk].bg->ref_count--;
- if (desks.desk[desk].bg->ref_count < 1)
- {
- desks.desk[desk].bg->last_viewed = 0;
- BackgroundsAccounting();
- }
- if (bg)
- bg->ref_count++;
- }
+ if (desks.desk[desk].bg)
+ BackgroundDecRefcount(desks.desk[desk].bg);
+ if (bg)
+ BackgroundIncRefcount(bg);
}
+
desks.desk[desk].bg = bg;
+
if (desks.desk[desk].viewable)
RefreshDesktop(desk);
+
if (desk == desks.current)
{
RedrawPagersForDesktop(desk, 2);
@@ -597,6 +604,7 @@
}
else
RedrawPagersForDesktop(desk, 1);
+
EDBUG_RETURN_;
}
@@ -836,9 +844,8 @@
{
for (i = n + 1; i < ENLIGHTENMENT_CONF_NUM_DESKTOPS; i++)
{
- if ((desks.desk[desks.order[i]].viewable)
- && (desks.desk[desks.order[i]].bg))
- desks.desk[desks.order[i]].bg->last_viewed = time(NULL);
+ if (desks.desk[desks.order[i]].viewable)
+ BackgroundTouch(desks.desk[desks.order[i]].bg);
desks.desk[desks.order[i]].viewable = 0;
}
}
@@ -876,12 +883,8 @@
}
else
{
- if ((!v) && (desks.desk[desks.order[i]].viewable)
- && (desks.desk[desks.order[i]].bg))
- {
- desks.desk[desks.order[i]].bg->last_viewed =
- time(NULL);
- }
+ if ((!v) && (desks.desk[desks.order[i]].viewable))
+ BackgroundTouch(desks.desk[desks.order[i]].bg);
desks.desk[desks.order[i]].viewable = v;
}
@@ -991,8 +994,8 @@
if (desk == 0)
EDBUG_RETURN_;
- if ((desks.desk[desk].viewable) && (desks.desk[desk].bg))
- desks.desk[desk].bg->last_viewed = time(NULL);
+ if (desks.desk[desk].viewable)
+ BackgroundTouch(desks.desk[desk].bg);
desks.desk[desk].viewable = 0;
EMoveWindow(disp, desks.desk[desk].win, root.w, 0);
@@ -1030,7 +1033,7 @@
}
void
-StackDesktops()
+StackDesktops(void)
{
EDBUG(2, "StackDesktops");
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/iclass.c,v
retrieving revision 1.34
retrieving revision 1.35
diff -u -3 -r1.34 -r1.35
--- iclass.c 9 Apr 2004 12:59:55 -0000 1.34
+++ iclass.c 12 Apr 2004 08:28:33 -0000 1.35
@@ -54,15 +54,21 @@
void
TransparencySet(int transparency)
{
+ int changed;
+
if (transparency < 0)
transparency = 0;
else if (transparency > 255)
transparency = 255;
+ changed = Conf.theme.transparency != transparency;
Conf.theme.transparency = transparency;
/* Generate the color modifier tables */
TransparencyMakeColorModifier();
+
+ if (changed)
+ DesktopsRefresh();
}
#else
@@ -433,11 +439,9 @@
if (xx < root.w && yy < root.h && xx + w >= 0 && yy + h >= 0)
{
/* Create the background base image */
- bg = root.win;
- if ((is->transparent & 0x02) == 0 &&
- desks.desk[desks.current].bg
- && desks.desk[desks.current].bg->pmap)
- bg = desks.desk[desks.current].bg->pmap;
+ bg = BackgroundGetPixmap(desks.desk[desks.current].bg);
+ if ((is->transparent & 0x02) != 0 || bg == None)
+ bg = root.win;
imlib_context_set_drawable(bg);
ii = imlib_create_image_from_drawable(0, xx, yy, w, h, 1);
imlib_context_set_image(ii);
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/init.c,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -3 -r1.16 -r1.17
--- init.c 10 Apr 2004 19:36:48 -0000 1.16
+++ init.c 12 Apr 2004 08:28:33 -0000 1.17
@@ -129,7 +129,6 @@
/* create a fallback background in case no background is found */
bg = BackgroundCreate("NONE", NULL, NULL, 0, 0, 0, 0, 0, 0, NULL, 0, 0, 0, 0,
0);
- AddItem(bg, bg->name, 0, LIST_TYPE_BACKGROUND);
/* create a fallback textclass in case no textclass is found */
tc = CreateTclass();
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/ipc.c,v
retrieving revision 1.152
retrieving revision 1.153
diff -u -3 -r1.152 -r1.153
--- ipc.c 10 Apr 2004 19:36:48 -0000 1.152
+++ ipc.c 12 Apr 2004 08:28:33 -0000 1.153
@@ -20,6 +20,7 @@
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
+#define DECLARE_STRUCT_BACKGROUND
#include "E.h"
#include "timestamp.h"
#include <ctype.h>
@@ -1047,7 +1048,8 @@
{
EGetColor(&(bg->bg_solid), &r, &g, &b);
Esnprintf(buf, sizeof(buf),
- "%s ref_count %u\n" " bg.solid\t %i %i %i \n"
+ "%s ref_count %u keepim %u\n"
+ " bg.solid\t %i %i %i \n"
" bg.file\t %s \ttop.file\t %s \n"
" bg.tile\t %i \n"
" bg.keep_aspect\t %i \ttop.keep_aspect\t %i \n"
@@ -1055,7 +1057,7 @@
" bg.yjust\t %i \ttop.yjust\t %i \n"
" bg.xperc\t %i \ttop.xperc\t %i \n"
" bg.yperc\t %i \ttop.yperc\t %i \n", bg->name,
- bg->ref_count, r, g, b,
+ bg->ref_count, bg->keepim, r, g, b,
bg->bg.file, bg->top.file, bg->bg_tile,
bg->bg.keep_aspect, bg->top.keep_aspect,
bg->bg.xjust, bg->top.xjust, bg->bg.yjust,
@@ -1077,7 +1079,6 @@
{
bg = BackgroundCreate(Estrdup(name), NULL, NULL, 0, 0, 0,
0, 0, 0, NULL, 0, 0, 0, 0, 0);
- AddItem(bg, bg->name, 0, LIST_TYPE_BACKGROUND);
}
if (!bg)
Esnprintf(buf, sizeof(buf),
@@ -1175,11 +1176,7 @@
if (bg)
{
if (bg->ref_count == 0)
- {
- RemoveItem(name, 0,
- LIST_FINDBY_NAME, LIST_TYPE_BACKGROUND);
- BackgroundDestroy(bg);
- }
+ BackgroundDestroy(bg);
else
Esnprintf(buf, sizeof(buf),
"Error: ref_count for background '%s' is %u.",
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/main.c,v
retrieving revision 1.86
retrieving revision 1.87
diff -u -3 -r1.86 -r1.87
--- main.c 10 Apr 2004 19:36:49 -0000 1.86
+++ main.c 12 Apr 2004 08:28:33 -0000 1.87
@@ -53,7 +53,6 @@
main(int argc, char **argv)
{
int i;
- Background *bg;
ECursor *ec = NULL;
struct utsname ubuf;
char *str;
@@ -344,12 +343,8 @@
if (!Conf.mapslide)
CreateStartupDisplay(0);
- if ((bg = RemoveItem("STARTUP_BACKGROUND_SIDEWAYS", 0,
- LIST_FINDBY_NAME, LIST_TYPE_BACKGROUND)))
- BackgroundDestroy(bg);
- if ((bg = RemoveItem("STARTUP_BACKGROUND", 0,
- LIST_FINDBY_NAME, LIST_TYPE_BACKGROUND)))
- BackgroundDestroy(bg);
+ BackgroundDestroyByName("STARTUP_BACKGROUND_SIDEWAYS");
+ BackgroundDestroyByName("STARTUP_BACKGROUND");
#ifdef SIGCONT
for (i = 0; i < child_count; i++)
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/menus.c,v
retrieving revision 1.121
retrieving revision 1.122
diff -u -3 -r1.121 -r1.122
--- menus.c 10 Apr 2004 19:36:49 -0000 1.121
+++ menus.c 12 Apr 2004 08:28:33 -0000 1.122
@@ -1125,7 +1125,6 @@
keep_asp, justx, justy,
scalex, scaley, NULL, 0,
0, 0, 0, 0);
- AddItem(bg, bg->name, 0, LIST_TYPE_BACKGROUND);
}
else
ok = 0;
@@ -1336,7 +1335,6 @@
bg = BackgroundCreate(s3, &xclr, ss, tile, keep_asp,
512, 512, scalex, scaley,
NULL, 0, 0, 0, 0, 0);
- AddItem(bg, bg->name, 0, LIST_TYPE_BACKGROUND);
}
else
ok = 0;
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/pager.c,v
retrieving revision 1.83
retrieving revision 1.84
diff -u -3 -r1.83 -r1.84
--- pager.c 10 Apr 2004 19:36:49 -0000 1.83
+++ pager.c 12 Apr 2004 08:28:34 -0000 1.84
@@ -664,8 +664,8 @@
BackgroundGetUniqueString(desks.desk[p->desktop].bg);
Esnprintf(s, sizeof(s), "%s/cached/pager/%s.%i.%i.%s",
EDirUserCache(),
- desks.desk[p->desktop].bg->name, (p->w / ax),
- (p->h / ay), uniq);
+ BackgroundGetName(desks.desk[p->desktop].bg),
+ (p->w / ax), (p->h / ay), uniq);
Efree(uniq);
im = imlib_load_image(s);
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/settings.c,v
retrieving revision 1.105
retrieving revision 1.106
diff -u -3 -r1.105 -r1.106
--- settings.c 10 Apr 2004 19:36:49 -0000 1.105
+++ settings.c 12 Apr 2004 08:28:34 -0000 1.106
@@ -20,6 +20,7 @@
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
+#define DECLARE_STRUCT_BACKGROUND
#define DECLARE_STRUCT_ICONBOX
#include "E.h"
#include <time.h>
@@ -2426,7 +2427,6 @@
static DItem *bg_filename;
static DItem *tmp_w[10];
static int tmp_bg_sel_sliderval = 0;
-static Background *tbg = NULL;
static Background *tmp_bg;
static int tmp_bg_r;
static int tmp_bg_g;
@@ -2465,23 +2465,16 @@
tmp_bg->bg.yjust = 1024 - tmp_bg_yjust;
tmp_bg->bg.xperc = tmp_bg_xperc;
tmp_bg->bg.yperc = 1024 - tmp_bg_yperc;
+
if (!tmp_bg_image)
BackgroundImagesRemove(tmp_bg);
+
for (i = 0; i < ENLIGHTENMENT_CONF_NUM_DESKTOPS; i++)
{
if (desks.desk[i].bg == tmp_bg)
- {
- if (desks.desk[i].viewable)
- RefreshDesktop(i);
- if (i == desks.current)
- {
- RedrawPagersForDesktop(i, 2);
- ForceUpdatePagersForDesktop(i);
- }
- else
- RedrawPagersForDesktop(i, 1);
- }
+ DesktopSetBg(i, tmp_bg, 0);
}
+
{
char s[4096];
Imlib_Image *im;
@@ -2505,20 +2498,7 @@
{
BackgroundImagesKeep(tmp_bg, 0);
}
- if (tbg)
- {
- BackgroundDestroy(tbg);
- tbg = NULL;
- }
- BackgroundsAccounting();
autosave();
- /* This is kind of a hack - somehow it loses the correct current desktop
- * information when we actually open up the dialog box, so this
- * should fix the atom which apparently gets clobbered somewhere
- * above here
- * --Mandrake
- */
- RefreshDesktop(desks.current);
data = NULL;
}
@@ -2526,88 +2506,65 @@
static void
CB_DesktopMiniDisplayRedraw(int val, void *data)
{
+ Background *bg;
int w, h;
DItem *di;
Window win;
Pixmap pmap;
XColor xclr;
+ const char *fbg, *ffg;
+
+ if (!tmp_bg)
+ return;
di = (DItem *) data;
win = DialogItemAreaGetWindow(di);
DialogItemAreaGetSize(di, &w, &h);
+ fbg = (tmp_bg_image) ? tmp_bg->bg.file : NULL;
+ ffg = (tmp_bg_image) ? tmp_bg->top.file : NULL;
ESetColor(&xclr, tmp_bg_r, tmp_bg_g, tmp_bg_b);
- if (!tbg)
- {
- if (!tmp_bg_image)
- tbg =
- BackgroundCreate("TEMP", &xclr, NULL, tmp_bg_tile,
- tmp_bg_keep_aspect, tmp_bg_xjust,
- 1024 - tmp_bg_yjust, tmp_bg_xperc,
- 1024 - tmp_bg_yperc, tmp_bg->top.file,
- tmp_bg->top.keep_aspect, tmp_bg->top.xjust,
- tmp_bg->top.yjust, tmp_bg->top.xperc,
- tmp_bg->top.yperc);
- else
- tbg =
- BackgroundCreate("TEMP", &xclr, tmp_bg->bg.file, tmp_bg_tile,
- tmp_bg_keep_aspect, tmp_bg_xjust,
- 1024 - tmp_bg_yjust, tmp_bg_xperc,
- 1024 - tmp_bg_yperc, tmp_bg->top.file,
- tmp_bg->top.keep_aspect, tmp_bg->top.xjust,
- tmp_bg->top.yjust, tmp_bg->top.xperc,
- tmp_bg->top.yperc);
- }
- else
- {
- if (tbg->pmap)
- imlib_free_pixmap_and_mask(tbg->pmap);
- ESetColor(&(tbg->bg_solid), tmp_bg_r, tmp_bg_g, tmp_bg_b);
- if (tbg->bg.file)
- Efree(tbg->bg.file);
- tbg->bg.file = NULL;
- if (tmp_bg_image)
- tbg->bg.file = Estrdup(tmp_bg->bg.file);
- else
- {
- if (tbg->bg.im)
- {
- imlib_context_set_image(tbg->bg.im);
- imlib_free_image();
- tbg->bg.im = NULL;
- }
- }
- if (tbg->bg.real_file)
- Efree(tbg->bg.real_file);
- tbg->bg.real_file = NULL;
- tbg->bg_tile = tmp_bg_tile;
- tbg->bg.keep_aspect = tmp_bg_keep_aspect;
- tbg->bg.xjust = tmp_bg_xjust;
- tbg->bg.yjust = 1024 - tmp_bg_yjust;
- tbg->bg.xperc = tmp_bg_xperc;
- tbg->bg.yperc = 1024 - tmp_bg_yperc;
- }
- BackgroundImagesKeep(tbg, 1);
+ bg = BackgroundCreate("TEMP", &xclr, fbg, tmp_bg_tile,
+ tmp_bg_keep_aspect, tmp_bg_xjust,
+ 1024 - tmp_bg_yjust, tmp_bg_xperc,
+ 1024 - tmp_bg_yperc, ffg,
+ tmp_bg->top.keep_aspect, tmp_bg->top.xjust,
+ tmp_bg->top.yjust, tmp_bg->top.xperc,
+ tmp_bg->top.yperc);
+
pmap = ECreatePixmap(disp, win, w, h, root.depth);
ESetWindowBackgroundPixmap(disp, win, pmap);
- BackgroundApply(tbg, pmap, 0);
+ BackgroundApply(bg, pmap, 0);
XClearWindow(disp, win);
EFreePixmap(disp, pmap);
+
+ BackgroundDestroy(bg);
val = 0;
}
static void
+BG_GetValues(void)
+{
+ tmp_bg_image = (tmp_bg->bg.file) ? 1 : 0;
+
+ BackgroundImagesKeep(tmp_bg, 1);
+
+ EGetColor(&(tmp_bg->bg_solid), &tmp_bg_r, &tmp_bg_g, &tmp_bg_b);
+ tmp_bg_tile = tmp_bg->bg_tile;
+ tmp_bg_keep_aspect = tmp_bg->bg.keep_aspect;
+ tmp_bg_xjust = tmp_bg->bg.xjust;
+ tmp_bg_yjust = 1024 - tmp_bg->bg.yjust;
+ tmp_bg_xperc = tmp_bg->bg.xperc;
+ tmp_bg_yperc = 1024 - tmp_bg->bg.yperc;
+}
+
+static void
BG_DoDialog(void)
{
char *stmp;
char s[1024];
- if (tmp_bg->bg.file)
- tmp_bg_image = 1;
- else
- tmp_bg_image = 0;
-
- BackgroundImagesKeep(tmp_bg, 1);
+ BG_GetValues();
if (tmp_bg->bg.file)
stmp = fullfileof(tmp_bg->bg.file);
@@ -2620,13 +2577,6 @@
DialogItemTextSetText(bg_filename, s);
DialogDrawItems(bg_sel_dialog, bg_filename, 0, 0, 99999, 99999);
- EGetColor(&(tmp_bg->bg_solid), &tmp_bg_r, &tmp_bg_g, &tmp_bg_b);
- tmp_bg_tile = tmp_bg->bg_tile;
- tmp_bg_keep_aspect = tmp_bg->bg.keep_aspect;
- tmp_bg_xjust = tmp_bg->bg.xjust;
- tmp_bg_yjust = 1024 - tmp_bg->bg.yjust;
- tmp_bg_xperc = tmp_bg->bg.xperc;
- tmp_bg_yperc = 1024 - tmp_bg->bg.yperc;
DialogItemSliderSetVal(tmp_w[0], tmp_bg_r);
DialogItemCheckButtonSetState(tmp_w[1], tmp_bg_image);
DialogItemSliderSetVal(tmp_w[2], tmp_bg_g);
@@ -2637,11 +2587,7 @@
DialogItemSliderSetVal(tmp_w[7], tmp_bg_yjust);
DialogItemSliderSetVal(tmp_w[8], tmp_bg_yperc);
DialogItemSliderSetVal(tmp_w[9], tmp_bg_xperc);
- if (tbg)
- {
- BackgroundDestroy(tbg);
- tbg = NULL;
- }
+
CB_DesktopMiniDisplayRedraw(0, bg_mini_disp);
}
@@ -2650,28 +2596,23 @@
{
char s[1024];
XColor xclr;
- Background *bg;
int lower, upper;
- Esnprintf(s, sizeof(s), "__NEWBG_%i\n", (unsigned)time(NULL));
+ Esnprintf(s, sizeof(s), "__NEWBG_%i", (unsigned)time(NULL));
ESetColor(&xclr, tmp_bg_r, tmp_bg_g, tmp_bg_b);
- bg = BackgroundCreate(s, &xclr, tmp_bg->bg.file, tmp_bg_tile,
- tmp_bg_keep_aspect, tmp_bg_xjust, 1024 - tmp_bg_yjust,
- tmp_bg_xperc, 1024 - tmp_bg_yperc, tmp_bg->top.file,
- tmp_bg->top.keep_aspect, tmp_bg->top.xjust,
- tmp_bg->top.yjust, tmp_bg->top.xperc,
- tmp_bg->top.yperc);
- AddItem(bg, bg->name, 0, LIST_TYPE_BACKGROUND);
- tmp_bg = bg;
- desks.desk[desks.current].bg = bg;
+ tmp_bg = BackgroundCreate(s, &xclr, tmp_bg->bg.file, tmp_bg_tile,
+ tmp_bg_keep_aspect, tmp_bg_xjust,
+ 1024 - tmp_bg_yjust, tmp_bg_xperc,
+ 1024 - tmp_bg_yperc, tmp_bg->top.file,
+ tmp_bg->top.keep_aspect, tmp_bg->top.xjust,
+ tmp_bg->top.yjust, tmp_bg->top.xperc,
+ tmp_bg->top.yperc);
DialogItemSliderGetBounds(bg_sel_slider, &lower, &upper);
upper += 4;
DialogItemSliderSetBounds(bg_sel_slider, lower, upper);
DialogItemSliderSetVal(bg_sel_slider, 0);
DialogDrawItems(bg_sel_dialog, bg_sel_slider, 0, 0, 99999, 99999);
- RefreshCurrentDesktop();
- RedrawPagersForDesktop(desks.current, 2);
- ForceUpdatePagersForDesktop(desks.current);
+ DesktopSetBg(desks.current, tmp_bg, 0);
BG_RedrawView(0);
autosave();
val = 0;
@@ -2696,26 +2637,22 @@
if (slider > upper)
DialogItemSliderSetVal(bg_sel_slider, upper);
+ bg = NULL;
for (i = 0; i < num; i++)
{
if (bglist[i] == tmp_bg)
{
- bg = RemoveItem((char *)tmp_bg, 0, LIST_FINDBY_POINTER,
- LIST_TYPE_BACKGROUND);
if (i < (num - 1))
- tmp_bg = bglist[i + 1];
+ bg = bglist[i + 1];
else
- tmp_bg = bglist[i - 1];
- i = num;
- if (bg)
- BackgroundDestroy(bg);
- BG_DoDialog();
+ bg = bglist[i - 1];
+ break;
}
}
- desks.desk[desks.current].bg = tmp_bg;
- RedrawPagersForDesktop(desks.current, 2);
- ForceUpdatePagersForDesktop(desks.current);
- RefreshCurrentDesktop();
+ DesktopSetBg(desks.current, bg, 0);
+ BackgroundDestroy(tmp_bg);
+ tmp_bg = bg;
+ BG_DoDialog();
BG_RedrawView(0);
for (i = 0; i < 10; i++)
DialogDrawItems(bg_sel_dialog, tmp_w[i], 0, 0, 99999, 99999);
@@ -2746,50 +2683,23 @@
if (slider > upper)
DialogItemSliderSetVal(bg_sel_slider, upper);
+ bg = NULL;
for (i = 0; i < num; i++)
{
if (bglist[i] == tmp_bg)
{
- bg = RemoveItem((char *)tmp_bg, 0, LIST_FINDBY_POINTER,
- LIST_TYPE_BACKGROUND);
if (i < (num - 1))
- tmp_bg = bglist[i + 1];
+ bg = bglist[i + 1];
else
- tmp_bg = bglist[i - 1];
- i = num;
- if (bg)
- {
- if (bg->bg.file)
- {
- char *f;
-
- f = FindFile(bg->bg.file);
- if (f)
- {
- E_rm(f);
- Efree(f);
- }
- }
- if (bg->top.file)
- {
- char *f;
-
- f = FindFile(bg->top.file);
- if (f)
- {
- E_rm(f);
- Efree(f);
- }
- }
- BackgroundDestroy(bg);
- }
- BG_DoDialog();
+ bg = bglist[i - 1];
+ break;
}
}
- desks.desk[desks.current].bg = tmp_bg;
- RedrawPagersForDesktop(desks.current, 2);
- ForceUpdatePagersForDesktop(desks.current);
- RefreshCurrentDesktop();
+
+ DesktopSetBg(desks.current, bg, 0);
+ BackgroundDelete(tmp_bg);
+ tmp_bg = bg;
+ BG_DoDialog();
BG_RedrawView(0);
for (i = 0; i < 10; i++)
DialogDrawItems(bg_sel_dialog, tmp_w[i], 0, 0, 99999, 99999);
@@ -2989,10 +2899,7 @@
BackgroundImagesKeep(tmp_bg, 0);
tmp_bg = bglist[tmp_bg_selected];
BG_DoDialog();
- desks.desk[desks.current].bg = tmp_bg;
- RedrawPagersForDesktop(desks.current, 2);
- ForceUpdatePagersForDesktop(desks.current);
- RefreshCurrentDesktop();
+ DesktopSetBg(desks.current, tmp_bg, 0);
BG_RedrawView(0);
for (x = 0; x < 10; x++)
DialogDrawItems(bg_sel_dialog, tmp_w[x], 0, 0, 99999, 99999);
@@ -3073,23 +2980,17 @@
int i, num;
bglist = (Background **) ListItemType(&num, LIST_TYPE_BACKGROUND);
- if (bglist)
+ for (i = 0; i < num; i++)
{
- for (i = 0; i < num; i++)
+ if ((bglist[i] == tmp_bg) && (i > 0))
{
- if ((bglist[i] == tmp_bg) && (i > 0))
- {
- desks.desk[desks.current].bg = bglist[i - 1];
- BGSettingsGoTo(bglist[i - 1]);
- RedrawPagersForDesktop(desks.current, 2);
- ForceUpdatePagersForDesktop(desks.current);
- RefreshCurrentDesktop();
- Efree(bglist);
- return;
- }
+ BGSettingsGoTo(bglist[i - 1]);
+ DesktopSetBg(desks.current, bglist[i - 1], 0);
+ break;;
}
- Efree(bglist);
}
+ if (bglist)
+ Efree(bglist);
val = 0;
data = NULL;
}
@@ -3101,23 +3002,17 @@
int i, num;
bglist = (Background **) ListItemType(&num, LIST_TYPE_BACKGROUND);
- if (bglist)
+ for (i = 0; i < num; i++)
{
- for (i = 0; i < num; i++)
+ if ((bglist[i] == tmp_bg) && (i < (num - 1)))
{
- if ((bglist[i] == tmp_bg) && (i < (num - 1)))
- {
- desks.desk[desks.current].bg = bglist[i + 1];
- BGSettingsGoTo(bglist[i + 1]);
- RedrawPagersForDesktop(desks.current, 2);
- ForceUpdatePagersForDesktop(desks.current);
- RefreshCurrentDesktop();
- Efree(bglist);
- return;
- }
+ BGSettingsGoTo(bglist[i + 1]);
+ DesktopSetBg(desks.current, bglist[i + 1], 0);
+ break;
}
- Efree(bglist);
}
+ if (bglist)
+ Efree(bglist);
val = 0;
data = NULL;
}
@@ -3272,28 +3167,14 @@
if ((!bg) || ((bg) && (!strcmp(bg->name, "NONE"))))
{
- Esnprintf(s, sizeof(s), "__NEWBG_%i\n", (unsigned)time(NULL));
+ Esnprintf(s, sizeof(s), "__NEWBG_%i", (unsigned)time(NULL));
bg = BackgroundCreate(s, NULL, NULL, 1, 1, 0, 0, 0, 0, NULL, 1,
512, 512, 0, 0);
- AddItem(bg, bg->name, 0, LIST_TYPE_BACKGROUND);
- /*
- * desks.desk[desks.current].bg = bg;
- */
}
tmp_bg = bg;
- if (bg->bg.file)
- tmp_bg_image = 1;
- else
- tmp_bg_image = 0;
- tmp_bg->keepim = 1;
- EGetColor(&(bg->bg_solid), &tmp_bg_r, &tmp_bg_g, &tmp_bg_b);
- tmp_bg_tile = bg->bg_tile;
- tmp_bg_keep_aspect = bg->bg.keep_aspect;
- tmp_bg_xjust = bg->bg.xjust;
- tmp_bg_yjust = 1024 - bg->bg.yjust;
- tmp_bg_xperc = bg->bg.xperc;
- tmp_bg_yperc = 1024 - bg->bg.yperc;
+ BG_GetValues();
+
tmp_hiq = Conf.backgrounds.hiquality;
tmp_userbg = Conf.backgrounds.user;
tmp_bg_timeout = Conf.backgrounds.timeout;
===================================================================
RCS file: /cvsroot/enlightenment/e16/e/src/startup.c,v
retrieving revision 1.41
retrieving revision 1.42
diff -u -3 -r1.41 -r1.42
--- startup.c 10 Apr 2004 19:36:49 -0000 1.41
+++ startup.c 12 Apr 2004 08:28:34 -0000 1.42
@@ -218,9 +218,7 @@
Mode.queue_up = pq;
BackgroundApply(bg, win1, 1);
BackgroundApply(bg, win2, 1);
- if (bg->pmap)
- imlib_free_pixmap_and_mask(bg->pmap);
- bg->pmap = 0;
+ BackgroundImagesFree(bg, 1);
init_win1 = w1;
init_win2 = w2;
EMapRaised(disp, w1);
-------------------------------------------------------
This SF.Net email is sponsored by: IBM Linux Tutorials
Free Linux tutorial presented by Daniel Robbins, President and CEO of
GenToo technologies. Learn everything from fundamentals to system
administration.http://ads.osdn.com/?ad_id=1470&alloc_id=3638&op=click
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs